首页 > 代码库 > TF层的指导:建立一个卷积神经网络
TF层的指导:建立一个卷积神经网络
官方文档:
https://www.tensorflow.org/tutorials/layers;
1、概述
Tensorflow层模型提供了一个创建神经网络更加简单的高级API。提供了一些方法:这些方法促进了密度层(全连接层)和卷积层的创建,激活函数的添加,dropout正则化的应用。这篇教程中,将学习怎样使用layers建立卷积神经网络模型来识别MNIST数据集中的手写数字。
MNIST数据集由60000个训练样本和10000个测试样本组成,28*28的黑白图像。
2、入门
Let‘s set up the skeleton for our TensorFlow program. Create a file called cnn_mnist.py
, and add the following code:
建立TensorFlow项目的骨架。建立一个cnn_mnist.py文件,加入下面代码:
1 from __future__ import absolute_import 2 from __future__ import division 3 from __future__ import print_function 4 5 # Imports 6 import numpy as np 7 import tensorflow as tf 8 9 from tensorflow.contrib import learn 10 from tensorflow.contrib.learn.python.learn.estimators import model_fn as model_fn_lib 11 12 tf.logging.set_verbosity(tf.logging.INFO) 13 14 # Our application logic will be added here 15 16 if __name__ == "__main__": 17 tf.app.run()
当你浏览完这个教程时,你将添加创建、训练、评估卷积神经网络的代码。整个完整代码:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/layers/cnn_mnist.py。
3、卷积神经网络介绍
CNN是当前图像分类中最先进的模型框架。CNNs应用一系列对图像的原始像素数据的滤波器来提取和学习高级特征,模型可以使用这些特征进行分类。CNNs含有3个部分:
- 卷积层:将特定数量的卷积滤波器应用于图像。对于每个子区域,卷积层使用一组数学操作来产生一个输出特征映射值。然后卷积层将ReLU激活函数用于输出,对模型引入非线性。
- 池化层:为了减少处理时间,通过对卷积层的图像数据进行下采样来降维(对feature map降维)。通常使用最大池化算法,这个是提取feature map子区域的最大值,丢掉其他值。
- 密集层(全连接层):这步是在卷积层提取特征后和池化层下采样后进行。在密集层,层中的每个节点和上一层的每个节点连接。
通常,一个CNN由一堆提取特征的卷积模块组成。每个模块由一个卷积层和池化层组成。最后的卷积模块之后接一个或者多个进行分类的密集层。CNN中最后的密集层每个目标类(模型预测的所有可能类)含有一个节点,对每个节点使用softmax激活函数产生0-1的一个值(所有softmax值之和等于1)。对于一幅给定图像可以将softmax的值解释为这幅图像落在每个目标类中的可能性。
TF层的指导:建立一个卷积神经网络