tensorflow mnist入门

本文通过实验探讨了在TensorFlow中神经网络权重初始化方法对模型性能的影响。初始采用零初始化导致模型表现不佳,随后尝试使用正态分布进行初始化显著提高了模型的准确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#下面做一个修改
#在一次全连接后再添加一层全连接

W = tf.Variable(tf.zeros([784,300]))
b = tf.Variable(tf.zeros([300]))
t = tf.nn.sigmod(tf.matmul(x,W)+b)

#添加的参数W1和b1
W1 = tf.Variable(tf.ones([300,10]))
b1 = tf.Variable(tf.ones([10]))

#激活层
y = tf.nn.softmax(tf.matmul(t,W1)+b1)

结果输出1135.0,这和猜数字也差不多的正确率,这是什么样的问题导致的?
首先我们观察一下权重是否改变:
print(sess.run([W,b,W1,b1]))

结果:
[[ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       ..., 
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.]]
       ...
         0.99992758,  0.99997383],
       [ 0.99996018,  1.00039601,  1.00000095, ...,  1.00013947,
         0.99992758,  0.99997383],
       ..., 
       [ 0.99996018,  1.00039601,  1.00000095, ...,  1.00013947,
         0.99992758,  0.99997383],
       [ 0.99996018,  1.00039601,  1.00000095, ...,  1.00013947,
         0.99992758,  0.99997383],
       [ 0.99996018,  1.00039601,  1.00000095, ...,  1.00013947,
         0.99992758,  0.99997383]], dtype=float32), array([ 0.98817813,  1.11309755,  0.9995591 ,  1.02963579,  0.97294426,
        0.90098643,  0.98529106,  1.04031229,  0.97770184,  0.99229145], dtype=float32)]
        
结果发现权重文件几乎都是一样的,并没有产生差异性,所以应该试一下用别的方式初始化变量。
这里使用正太分布,均值为0,标准差为0.01
W = tf.Variable(tf.random_normal([784, 300], stddev=0.1))
b = tf.Variable(tf.ones([300]))
t = tf.nn.softmax(tf.matmul(x,W)+b)

W1 = tf.Variable(tf.random_normal([300,10],stddev=0.1))
b1 = tf.Variable(tf.ones([10]))
最终的运行结果
0.83896 #trainset 上的准确率
0.7559  #testset 上的准确率


调整学习率为0.3,最终准确率:
0.90995
0.977
一个比较有意思的现象,在训练的过程中train准确率始终比test的准确率低。
这时因为我们测试的数据集是全部的训练集(60000)和全部的测试集(10000),而且在batch=5000的情况下,所以出现这种现象也不奇怪。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值