YOLOv3-тензор потока не сходится - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь реализовать 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)

Я не могу понять, что я пропустил / делаю неправильно.Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...