win8怎么建设网站,网址导航可以卸载吗,WordPress内容整合,做名片用什么网站多层感知机#xff08;MLP#xff09;作为最典型的神经网络#xff0c;结构简单且规则#xff0c;并且在隐层设计的足够完善时#xff0c;可以拟合任意连续函数。本文将利用 MLP 实现手写数字分类的任务。
结构#xff1a; 784个输入层神经元 – 200个隐层神经元 –… 多层感知机MLP作为最典型的神经网络结构简单且规则并且在隐层设计的足够完善时可以拟合任意连续函数。本文将利用 MLP 实现手写数字分类的任务。
结构 784个输入层神经元 – 200个隐层神经元 – 10个输出层神经元。其中设置 relu为隐层的激活函数输出层用 SoftMax 进行处理 Dropout 将神经网络某一层的输出节点数据随机丢弃一部分即令这部分被随机选中的节点输出值令为0这样做等价于创造出很多新样本通过增大样本量减少特征数量来防止过拟合。 学习效率 因为神经网络的训练通常不是一个凸优化问题它充满了很多局部最优因此我们通常不会采用标准的梯度下降算法而是采用一些有更大可能跳出局部最优的算法常用的如SGD而SGD本身也不稳定其结果也会在最优解附近波动且设置不同的学习效率可能会导致我们的网络落入截然不同的局部最优之中对于SGD我们希望开始训练时学习率大一些以加速收敛的过程而后期学习率低一些以更稳定地落入局部最优解因此常使用Adagrad、Adam等自适应的优化方法可以在其默认参数上取得较好的效果。
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data导入MNIST手写数据
mnist input_data.read_data_sets(MNIST_data/, one_hotTrue)自定义神经层添加函数
def add_layer(inputs, in_size, out_size, activation_functionNone):Weights tf.Variable(tf.truncated_normal([in_size, out_size], mean0, stddev0.2)) # 定义权重biases tf.Variable(tf.zeros([1, out_size]) 0.1) # 定义biasWx_plus_b tf.matmul(inputs, Weights) biasesif activation_function is None: # 根据激活函数的设置来处理输出项outputs Wx_plus_belse:outputs activation_function(Wx_plus_b)return outputs创建样本数据
x tf.placeholder(tf.float32, [None, 784])
y tf.placeholder(tf.float32, [None, 10])
keep_prob tf.placeholder(tf.float32)构建MLP
l1 add_layer(x, 784, 300, activation_functiontf.nn.relu) # 隐层l1
l1_dropout tf.nn.dropout(l1, keep_prob) # 对l1进行dropout处理
prediction add_layer(l1_dropout, 300, 10, activation_functiontf.nn.softmax) # 输出层损失函数
loss tf.reduce_mean(tf.reduce_sum((prediction - y) ** 2, reduction_indices[1]))优化器
train_step tf.train.AdagradOptimizer(0.3).minimize(loss)创建会话并激活部件
init tf.global_variables_initializer()
sess tf.Session()
sess.run(init)训练
for i in range(10001):x_batch, y_batch mnist.train.next_batch(200) # 每次从训练集中抽出批量为200的训练批进行训练sess.run(train_step, feed_dict{x: x_batch, y: y_batch, keep_prob: 0.75})if i % 200 0:print(第, i, 轮迭代后)whether_correct tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1))accuracy tf.reduce_mean(tf.cast(whether_correct, tf.float32))print(sess.run(accuracy, feed_dict{x: mnist.test.images, y: mnist.test.labels, keep_prob: 1.0}))
参考数据科学学习手札36–tensorflow实现MLP