我正在部署我的conv-deconv网络。我的问题是交叉熵总是在训练时被纳入,所以解算器没有更新权重。我整天查看了我的代码,但是我不知道我的错在哪里。以下是我的架构: 这里是我的交叉熵功能交叉熵是nan
ys_reshape = tf.reshape(ys,[-1,1])
prediction = tf.reshape(relu4,[-1,1])
cross_entropy = tf.reduce_mean(-(ys_reshape*tf.log(prediction)))
train_step = tf.train.AdamOptimizer(0.01).minimize(cross_entropy)
其中YS的尺寸为[1,500,500,1],ys_reshape为[250000,1],relu4为[1,500,500,1]和预测是[250000,1]。标签矩阵的值为{0,1},这是一个两类密集预测。
如果我打印出train_step,它将显示无。谁能帮我?
感谢@ mdaoust为我指出了我的错误! 对于你的第一个问题,是的,预测的概率是relu4的输出。 所以在diogram中,loss = cross_etropy。 我忘了Relu操作后会有很多的零。 现在我用cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(prediction,ys_reshape)替换第三行 但我的train_step输出仍然是None。所以我认为这层中的错误是固定的,但其他层中还有一些错误。非常感谢你! – clickListener
@clickListener查看编辑 – mdaoust
是的,我想观察每次前锋传球后的cross_entropy矩阵,它终于工作!我使用这个命令:_,loss_value = sess.run([train_step,cross_entropy],feed_dict = {xs:batch_xs,ys:batch_ys})。 谢谢你,你是最好的!非常感谢!但我仍然有点困惑,为什么print(train_step)的输出是None?!在我看来,它应该显示像张量对象或张量类而不是无。但最重要的是你解决了我的问题〜 – clickListener