首页 > 代码库 > 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层的指导:建立一个卷积神经网络