我正在为像素分类创建一个深度卷积神经网络。我正在使用adam optimizer,softmax和cross entropy。
我问了一个类似的问题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))
答案 0 :(得分:0)
不确定,它到底是什么引起的。我有几次相同的问题。通常有一些帮助:您可能会降低学习率。 Adam的学习速率的界限(例如1e-5到1e-7左右)或尝试随机梯度下降。亚当试图估算可能导致不稳定训练的学习率:请参阅Adam optimizer goes haywire after 200k batches, training loss grows
一旦我也删除了batchnorm,它实际上起到了作用,但这是针对“特殊”设计的笔划数据(点序列)网络,对于Conv1d层来说,它并不是很深。