SSD_Tensorflow模型loss不收敛

第一次发~
主要是解决初学者使用SSD-TensorFlow不收敛的问题。
SSD-TensorFlow下载地址
加载模型对图片进行测试

许多初学者在训练时会发现SSD-TensorFlow的loss非常大的问题,其实github里已有人找到这个问题并解决了。具体做法是将nets->ssd_vgg_300.py的637-647行,如下代码 # Add cross-entropy loss.
with tf.name_scope(‘cross_entropy_pos’):
loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=gclasses)
loss = tf.div(tf.reduce_sum(loss * fpmask), batch_size, name=‘value’)
tf.losses.add_loss(loss)
with tf.name_scope(‘cross_entropy_neg’):
loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=no_classes)
loss = tf.div(tf.reduce_sum(loss * fnmask), batch_size, name=‘value’)
tf.losses.add_loss(loss)
改为:
fn_neg = tf.cast(n_neg, dtype)
fn_positives = tf.cast(n_positives, dtype)
with tf.name_scope(‘cross_entropy_pos’):
loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=gclasses)
loss = tf.div(tf.reduce_sum(loss * fpmask), fn_positives, name=‘value’)
tf.losses.add_loss(loss)
with tf.name_scope(‘cross_entropy_neg’):
loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=no_classes)
loss = tf.div(tf.reduce_sum(loss * fnmask), fn_neg, name=‘value’)
tf.losses.add_loss(loss)
具体解释在github里,这里附上链接模型收敛问题

你可能感兴趣的:(SSD_Tensorflow模型loss不收敛)