简单的MNIST分类任务中的梯度消失

时间:2018-07-13 16:09:55

标签: python tensorflow keras classification mnist

我尝试使用完全连接的层和s​​oftmax层进行时尚MNIST分类,但事实证明,在第一个时期之后,损耗将变为常数:

  

Epoch:0负:2.3611641932884853

     

Epoch:1次损失:2.3611501693725585

     

Epoch:2次失败:2.3611501693725585

     

Epoch:3次失败:2.3611501693725585

     

Epoch:4次失败:2.3611501693725585

这是代码:

dfl.fitdist <- lapply(dfl, function(x) fitdist(x, "gamma"))

> dfl
$`1.1.1`
Fitting of the distribution ' gamma ' by maximum likelihood 
Parameters:
  estimate Std. Error
shape  3.38170  2.2831073
rate   1.04056  0.7573495

.
.
.


$`2.2.2`
Fitting of the distribution ' gamma ' by maximum likelihood 
Parameters:
  estimate Std. Error
shape 4.868843  2.5184018
rate  1.549188  0.8441106

1 个答案:

答案 0 :(得分:2)

您正在将权重变量初始化为零,因此优化器无法计算梯度。另外,0.5对于梯度下降的学习率非常高。

尝试随机初始化权重变量:

W = tf.get_variable("W", shape=[784, 10], initializer=tf.random_uniform_initializer())
b = tf.get_variable("b", shape=[10], initializer=tf.zeros_initializer())

然后将您的学习率设置为0.0005左右。

您可能更喜欢使用other initializers

tutorial video for Tensorboard实际上涵盖了零权重初始化的确切情况。您已经在代码中编写了摘要,最好查看该视频以了解如何使用它来帮助调试。