我有一個基於alexnet的年齡分類網絡。 當我訓練網絡8班時,它的工作完全正常,但是當我增加班級到60或100我得到「'模型分散與損失= NaN」 我已經降低了學習率0.00000001甚至0.0和浴缸大小減少到1 。但沒有幫助。'模型與損失分離= NaN',當班級數量增加時,即使學習率很低。 [tensorflow]
我的損失函數爲:
def loss(logits, labels):
labels = tf.cast(labels, tf.int32) #trying to avoig log(0)
shape = [logits.get_shape()[0], 57]
epsilon = tf.constant(value=0.1, shape=shape)
logits = logits + epsilon
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
logits= logits,labels= labels, name='cross_entropy_per_example')
cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy',)
tf.add_to_collection('losses', cross_entropy_mean)
losses = tf.get_collection('losses')
regularization_losses = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
total_loss = cross_entropy_mean + LAMBDA * sum(regularization_losses)
tf.summary.scalar('tl (raw)', total_loss)
#total_loss = tf.add_n(losses + regularization_losses, name='total_loss')
loss_averages = tf.train.ExponentialMovingAverage(0.9, name='avg')
loss_averages_op = loss_averages.apply(losses + [total_loss])
for l in losses + [total_loss]:
tf.summary.scalar(l.op.name + ' (raw)', l)
tf.summary.scalar(l.op.name, loss_averages.average(l))
with tf.control_dependencies([loss_averages_op]):
total_loss = tf.identity(total_loss)
return total_loss
任何想法如何解決這個問題?
澤維爾@皮特·沃登我使用澤維爾初始化你認爲它應該改變? – Sesoin