import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
#mnist数据集相关的常数
INPUT_NODE=784 #输入层的节点数,对于mnist这个等于图片的像素。
OUTPUT_NODE=10 #输出层的节点数,这个等于类别的数目
#配置神经网路的参数
LAYER1_NODE=500 #隐层节点数,这里使用只有一个隐层的网络结构作为样例
BATCH_SIZE=100 #字数越小,训练过程越接近随机梯度下降;字数越大,越接近梯度下降
LEARNING_RATE_BASE=0.8 #基础的学习率
LEARNING_RATE_DECAY=0.99 #学习率的衰减率
REGULARIZATION_RATE=0.0001 #描述模型复杂度的正则化项在损失函数中的系数
TRAINING_STEPS=30000 #训练轮数
MOVING_AVERAGE_DECAY=0.99 #滑动平均衰减率
#一个辅助函数,给定神经网络的输入和所有参数,计算神经网络的前向传播结果。在这里定义了一个使用Relu激活函数的三层全连接网络。
#在这个函数中也支持传入用于计算参数平均值的类,这样方便在测试时使用滑动平均衰减率模型
def inference(input_tensor,avg_class,weights1,biases1,weights2,biases2):
#当没有提供滑动平均类时,直接使用参数当前的取值。
if avg_class==None:
#计算隐层的前向传播结果,这里使用了Relu激活函数。
layer1=tf.nn.relu(tf.matmul(input_tensor,weights1)+biases1)
#计算输出层的前向传播结果。因为在计算损失函数时会一并计算softmax函数,所以这里不需要加入激活函数。而且不加入softmax不会影响
#预测结果。因为输出时使用的是不同类别对应节点输出值的相对大小,有没有softmax层对最后分类结果的计算,没有影响。于是在计算整个
#神经网络的前向传播时可以不加入最有的softmax层。
return tf.matmul(layer1,weights2)+biases2
else:
#首先使用avg_class.average计算得出变量的滑动平均值,然后再计算相应的神经网络前向传播结果
layer1=tf.nn.relu(tf.matmul(input_tensor,avg_class.average(weigh
TensorFlow训练mnist的简单总结
最新推荐文章于 2024-05-14 05:09:35 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)