1、网络设计
- 首先我们设计一个具有两层隐藏层的神经网络作为训练MNIST数据集的网络;
- 将学习率设置为变量(每迭代一次,按公式减小学习率,目的为了使得收敛速度更快);
- 将Dropout算法引入,但是并不使用它(keep_prob设置为1.0),只为了说明此项也是可以更改的,对准确率都一定的影响;
- 使用交叉熵(cross-entropy)代价函数计算loss
- 使用Adam优化器,对loss进行操作,使得loss最小
2、网络的实现
网络如下:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
#载入数据集
mnist = input_data.read_data_sets("MNIST_data",one_hot=True)
#每个批次的大小
batch_size = 100
#计算一共需要多少个批次
n_batch = mnist.train.num_examples // batch_size
#定义两个占位符(placeholder)
x = tf.placeholder(tf.float32,[None,784])
y = tf.placeholder(tf.float32,[None,10])
#再定义一个placeholder,后面设置Dropout参数
keep_prob = tf.placeholder(tf.float32)
#定义学习率变量
lr = tf.Variable(0.001,dtype= tf.float32)
#创建一个简单的神经网络
#第一个隐藏层
#权重
W1 = tf.Variable(tf.truncated_normal([784,500],stddev = 0.1)) #截断的正态分布中输出随

本文介绍了使用Tensorflow构建的神经网络,该网络包含两层隐藏层,通过调整学习率、应用Dropout算法(尽管在实验中保持为1.0)以及采用交叉熵损失函数和Adam优化器,实现了对MNIST手写数字数据集的高精度分类,测试准确率超过98%。
最低0.47元/天 解锁文章
639

被折叠的 条评论
为什么被折叠?



