CNN-MNIST
2018-09-17 11:06:17 32 举报
AI智能生成
MNIST手写数据集训练卷积神经网络的过程,包括数据的导入,网络的设计,参数的优化等。
作者其他创作
大纲/内容
步骤简述
1.数据集的下载
2.确定好输入数据的格式(矩阵)
3.构建神经网络
conv-->pooling-->conv-->pooling-->平坦化-->全连接-->dropout-->全连接
4.使用softmax分类和交叉熵计算出loss,然后用梯度下降反向传播来优化参数
5.神经网络的输出结果与标签真实值进行比较,计算出准确率
6.设置超参数,将训练数据集的train和label传到占位符输入到神经网络去训练再用测试集的train和label去检测准确率
MNIST-CNN
改变输入图片x的形状
开始构建神经网络:构建卷积层 conv,使用 tf.layers.conv2d 这个方法
参数:font color=\"#c41230\
构建池化层,使用 tf.layers.max_pooling2d
参数inputs=conv_shape # 输入形状是卷积后的矩阵font color=\"#c41230\
卷积池化2~3层后,进行平坦化,将二维矩阵摊平成零位矩阵(直接使用 tf.reshape 改变它的形状)
平坦化后,进行全连接,使用 tf.layers.dense
参数font color=\"#c41230\
全连接后抛弃一部分连接,使用tf.layers.dropout
再进行一次全连接,输出10个神经元,对应one_hot编码~
以上就是全部的神经网络,接下来要对网络输出的结果与label真实值进行对比预测
softmax函数和交叉熵函数,我们可以使用tensorflow封装好的函数——font color=\"#31a8e0\
交叉熵函数(cross_entropy)通过交叉熵,能够计算出一个 loss 值,这个loss值越小证明预测出来的值准确率越高
优化器optimize,这是十分重要的一个东西,它将上面计算好的loss值,通过梯度下降进行求导反向传播,从而改变W权重的参数,也就是所谓的“调参”,不断优化网络的参数,这里我们使用梯度下降的一个进化版,AdamOptimizer(动量梯度下降)
tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)# learing_rate 学习率,minmize 要优化的对象是以减小的方向进行优化
比较预测值和实际标签label的匹配程度,求平均值时候要转成tf.float64,求百分比,使用的函数右边所示
创建Session,启动神经网络!!!~
注意:启动前要激活所有的变量,使用init = tf.global_variables_initializer()sess.run(init)
设置超参数,Epoch,minibatch
超参数的大小对学习效果的影响
Epochs=20batch_size=128for epoch in range(Epochs): for ites in range(input_size / batch_size): font color=\"#c41230\
将数据集读写进神经网络!!!之前的占位符就是为了这个用的!!!
1.每隔一个batch_size就打印一次训练集的准确率和loss值2.每隔一个batch就打印一次测试集的准确率和loss值,输入数据的方式和上一步相同
mnist数据集下载
详细步骤
0 条评论
回复 删除
下一页