今天在tensorflow下,用三层网络结构训练mnist上的数据时,精度出现了很大偏差,在此做个记录,原因如下:
1.w,b初始化为0,很可能直接导致模型失效,无法收敛。因此可以对w初始化为随机值解决(在cnn中,w的随机化,也是为了使得同一层的多个filter,初始w不同,可以学到不同的特征,如果都是0或某个值,由于计算方式相同,可能达不到学习不同特征的目的)
2.隐藏层的激活函数应该用relu较好
3.交叉熵的计算,是否取平均值问题,取平均值,就相当于除以一个常数,那么相对的cost值就较小,使得后续的学习率可以设的相对较大,也不影响精确。如果不取平均,学习率应该适当小,才可以避免取不到最小值。