7多层神经网络手写数字分类mnist优化6

#本次优化修改:
#1.增加隐藏层,隐藏层的激活函数使用sigmod函数
#2.修改权值(w)和偏置值(b)的初始值
#3.修改学习率
#3.修改训练次数epoch

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
 
#载入数据集
mnist=input_data.read_data_sets("MNIST_data", one_hot=True)
 
#每个批次的大小,每次放入100张图片,//为整除符号
batch_size=200#1.可修改
#计算一共有多少批次
n_batch=mnist.train.num_examples // batch_size
 
#定义两个placeholder
x=tf.placeholder(tf.float32,[None,784])
y=tf.placeholder(tf.float32,[None,10])
 
#增加中间层1,激活函数使用sigmod函数
W=tf.Variable(tf.zeros([784,500]))
b=tf.Variable(tf.zeros([1,500]))
Wx_plus_b_L1=tf.matmul(x,W)+b
L1=tf.nn.sigmoid(Wx_plus_b_L1)

#增加中间层2,激活函数使用sigmod函数
W2=tf.Variable(tf.random_normal([500,100]))#初始化权值改变
b2=tf.Variable(tf.zeros([1,100]))
Wx_plus_b_L2=tf.matmul(L1,W2)+b2
L2=tf.nn.sigmoid(Wx_plus_b_L2)

#输出层
W3=tf.Variable(tf.truncated_normal([100,10]))#初始化权值改变
b3=tf.Variable(tf.random_normal([1,10]))#初始化偏置值改变
prediction=tf.nn.softmax(tf.matmul(L2,W3)+b3)
 
#二次代价函数
loss=tf.reduce_mean(tf.square(y-prediction))

#使用剃度下降法,学习率0.1,最小化loss
train_step=tf.train.GradientDescentOptimizer(0.25).minimize(loss)#修改学习率为0.25
 
#初始化变量
init=tf.global_variables_initializer()
 
#结果存放在一个布尔型列表中
#tf.equal比较(tf.argmax(y,1), tf.argmax(prediction,1))两个参数的大小,相同返回true不同返回false
correct_prediction=tf.equal(tf.argmax(y,1), tf.argmax(prediction,1)) #argmax返回一维张量中最大的值所在的位置
#求准确率
#tf.cast(correct_prediction,tf.float32)将bool类型转化为float32类型(true转化为1.0,false转化为0.0)
#tf.reduce_mean求平均值
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))

with tf.Session() as sess:
    sess.run(init)#初始化变量
    #训练,for epoch in range(20)迭代20个周期,把所以图片训练21次
    for epoch in range(30):
        #for batch in range(n_batch)循环n个batch,把所有图片训练一次
        for batch in range(n_batch):
            batch_xs,batch_ys=mnist.train.next_batch(batch_size)#获取一个batch即100张图片,图片保存于batch_xs,图片标签保存于batch_ys
            sess.run(train_step,feed_dict={x:batch_xs, y:batch_ys})#执行训练
 
        acc=sess.run(accuracy,feed_dict={x:mnist.test.images, y:mnist.test.labels})#一个周期后观察准确率,传入测试集图片和标签
        print("Iter"+str(epoch)+",Testing Accuracy "+str(acc))
Extracting MNIST_data\train-images-idx3-ubyte.gz
Extracting MNIST_data\train-labels-idx1-ubyte.gz
Extracting MNIST_data\t10k-images-idx3-ubyte.gz
Extracting MNIST_data\t10k-labels-idx1-ubyte.gz
Iter0,Testing Accuracy 0.7418
Iter1,Testing Accuracy 0.8122
Iter2,Testing Accuracy 0.8403
Iter3,Testing Accuracy 0.8466
Iter4,Testing Accuracy 0.8496
Iter5,Testing Accuracy 0.9283
Iter6,Testing Accuracy 0.9369
Iter7,Testing Accuracy 0.9412
Iter8,Testing Accuracy 0.945
Iter9,Testing Accuracy 0.945
Iter10,Testing Accuracy 0.9474
Iter11,Testing Accuracy 0.949
Iter12,Testing Accuracy 0.9506
Iter13,Testing Accuracy 0.9512
Iter14,Testing Accuracy 0.9514
Iter15,Testing Accuracy 0.9532
Iter16,Testing Accuracy 0.9528
Iter17,Testing Accuracy 0.9547
Iter18,Testing Accuracy 0.9546
Iter19,Testing Accuracy 0.9556
Iter20,Testing Accuracy 0.9561
Iter21,Testing Accuracy 0.9557
Iter22,Testing Accuracy 0.9571
Iter23,Testing Accuracy 0.9571
Iter24,Testing Accuracy 0.9563
Iter25,Testing Accuracy 0.9579
Iter26,Testing Accuracy 0.9575
Iter27,Testing Accuracy 0.9577
Iter28,Testing Accuracy 0.9577
Iter29,Testing Accuracy 0.9583
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值