【发布时间】:2018-08-07 13:48:15
【问题描述】:
我正在为逐像素分类创建一个深度卷积神经网络。我正在使用亚当优化器,带有交叉熵的softmax。
我问了一个类似的问题,发现 here,但我得到的答案并没有让我解决问题。我也有一个更详细的图表,说明它出了什么问题。每当我使用 softmax 时,都会出现图中的问题。我做了很多事情,例如调整训练和 epsilon 速率,尝试不同的优化器等。损失永远不会超过 500。我目前不打乱我的数据。使用 sigmoid 代替 softmax 不会出现这个问题。但是,我的问题有多个类,所以sigmoid的准确率不是很好。还应该提到的是,当损失较低时,我的准确率只有 80% 左右,我需要比这更好。 为什么我的损失会突然像这样飙升?
x = tf.placeholder(tf.float32, shape=[None, 7168])
y_ = tf.placeholder(tf.float32, shape=[None, 7168, 3])
#Many Convolutions and Relus omitted
final = tf.reshape(final, [-1, 7168])
keep_prob = tf.placeholder(tf.float32)
W_final = weight_variable([7168,7168,3])
b_final = bias_variable([7168,3])
final_conv = tf.tensordot(final, W_final, axes=[[1], [1]]) + b_final
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=final_conv))
train_step = tf.train.AdamOptimizer(1e-5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(final_conv, 2), tf.argmax(y_, 2))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
【问题讨论】:
-
使用 sigmoid 层,在 sigmoid 之后使用 softmax 层......这就是我所做的......它对我来说效果很好......我不会回答这个问题,因为在上一个问题我已经提供了足够的详细信息...返回并参考我对您上一个问题的回答...并深入思考我的回答
-
当我尝试这样做时,损失从 ~1.3 开始,并且从未进一步减少。你有过这样的经历吗?
-
显示您的代码...您的代码而不是其他人的代码,然后我可以更好地帮助您
-
我已将相关代码添加到问题中。其余代码位于上面链接的 github 存储库中。如果你帮我解决问题,我会为这个问题加分。
-
我对加法操作持怀疑态度(实际上不确定)...架构看起来不错...您可以尝试在您要添加的所有最终反卷积层上应用 relu,然后再使用 softmax。 . 试试看... 即使我只是看代码也不确定出了什么问题,因为代码看起来不错,并使用
tf.clip来剪裁渐变... 尝试那些反卷积层...
标签: python tensorflow machine-learning deep-learning conv-neural-network