Я пытаюсь реализовать YOLOv3 в тензорном потоке, я получил помощь от онлайн-репозиториев и преуспел в преобразовании весов даркнета в тензорный поток и выполнении логического вывода.Теперь я пытаюсь обучить модель, используя потерю YOLO, как реализовано здесь .
Я использую следующий фрагмент кода для этого:
with tf.name_scope('Loss_and_Detect'):
yolo_loss = compute_loss(output, y_true, anchors, config.num_classes, print_loss=False)
tf.summary.scalar('YOLO_loss', yolo_loss)
variables = tf.trainable_variables()
# Variables to be optimized by train_op if the pre-trained darknet-53 is used as is
if config.pre_train:
variables = variables[312:] # Get the weights after the 52nd conv-layer (darknet-53)
# 5e-4 as used in the paper
l2_loss = config.weight_decay * tf.add_n([tf.nn.l2_loss(tf.cast(v, dtype=tf.float32)) for v in variables])
loss = yolo_loss + l2_loss
tf.summary.scalar('L2_loss', l2_loss)
tf.summary.scalar('Total_loss', loss)
# Define an optimizer for minimizing the computed loss
with tf.name_scope('Optimizer'):
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer.minimize(loss=loss, global_step=global_step, var_list=variables)
проблема в том, что мой YOLO_loss застрял на ~ 7-8, а L2_loss продолжает увеличиваться.
Вот снимок тензорной доски со скоростью обучения 1e-6 с примененным к ней экспоненциальным затуханием (decay_rate =0.8)
Я не могу понять, что я пропустил / делаю неправильно.Любая помощь приветствуется.