Python 当我增加神经元或层的数量时,我的tensorflow模型训练失败
我参考tensorflow教程[1],使用tensorflow制作了一个卷积神经网络模型来识别笔迹。该模型使用卷积滤波器1:[5,5,1,16]、滤波器2:[5,5,16,32]、完全组合的层[7*7*321024]和[1024,10],然后使用softmax将其转换为概率。我运行了这个模型,但失败了,因为“损失”从未减少,所有输出都是[0,0,1,0,0,0,0,0,0,0] 然后,我减少了过滤器和神经元的数量,成功了,准确率达到97% 当我用同样数量的过滤器和神经元制作模型时,为什么我不能成功地训练 这是我失败的模型。(我使用了“mnist.csv”) 打印(“测试精度:{0}”。格式(accurity.eval(feed_dict={x:x_测试,t:t_测试}))Python 当我增加神经元或层的数量时,我的tensorflow模型训练失败,python,tensorflow,neural-network,deep-learning,Python,Tensorflow,Neural Network,Deep Learning,我参考tensorflow教程[1],使用tensorflow制作了一个卷积神经网络模型来识别笔迹。该模型使用卷积滤波器1:[5,5,1,16]、滤波器2:[5,5,16,32]、完全组合的层[7*7*321024]和[1024,10],然后使用softmax将其转换为概率。我运行了这个模型,但失败了,因为“损失”从未减少,所有输出都是[0,0,1,0,0,0,0,0,0,0] 然后,我减少了过滤器和神经元的数量,成功了,准确率达到97% 当我用同样数量的过滤器和神经元制作模型时,为什么我不能成
[1] :
在此处输入代码
您正在调用softmax\u cross\u entropy\u,并在softmax
的输出上使用
。这会应用softmax两次,导致错误的结果<在应用softmax
之前,应在最后一层的线性输出上调用code>softmax\u cross\u entropy\u with\u logits:
y = tf.matmul(h_fc1,W_fc2) + b_fc2
cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=t, logits=y))
prediction_probabilities = tf.nn.softmax(y)
prediction_class = tf.argmax(y, 1)
只有在需要每个类的概率时,才需要上面的
预测\u概率
张量。否则,您可以直接在y
上调用argmax
,以获取预测的类。非常感谢。我犯了一个基本错误。我将修改它。
y = tf.matmul(h_fc1,W_fc2) + b_fc2
cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=t, logits=y))
prediction_probabilities = tf.nn.softmax(y)
prediction_class = tf.argmax(y, 1)