Построение каждой потери в маске RCNN с использованием Tensorboard - PullRequest
0 голосов
/ 22 апреля 2020

Есть одно сомнение. Я также использую маску rcnn, но тензор потока равен 2.0. Я пытаюсь запустить тензорную доску, но я получаю только одну потерю ( график построения с использованием тензорной доски только одна потеря ) вместо каждого графика потерь. Я не уверен, как восстановить каждую потерю. Это мой раздел кода для компиляции def файла model.py

    def compile(self, learning_rate, momentum):
    """Gets the model ready for training. Adds losses, regularization, and
    metrics. Then calls the Keras compile() function.
    """
    # Optimizer object
    optimizer = keras.optimizers.SGD(
        lr=learning_rate, momentum=momentum,
        clipnorm=self.config.GRADIENT_CLIP_NORM)
    loss_names = [
        "rpn_class_loss",  "rpn_bbox_loss",
        "mrcnn_class_loss", "mrcnn_bbox_loss", "mrcnn_mask_loss"]
    added_loss_name = []
    for name in loss_names:
        layer = self.keras_model.get_layer(name)
        if layer.output.name in added_loss_name:
        #if layer.output in self.keras_model.losses:
            continue
        loss = (
            tf.math.reduce_mean(layer.output, keepdims=True)
            * self.config.LOSS_WEIGHTS.get(name, 1.))
        self.keras_model.add_loss(loss)
        added_loss_name.append(layer.output.name)

    # Add L2 Regularization
    # Skip gamma and beta weights of batch normalization layers.
    reg_losses = [
        keras.regularizers.l2(self.config.WEIGHT_DECAY)(w) / tf.cast(tf.size(w), tf.float32)
        for w in self.keras_model.trainable_weights
        if 'gamma' not in w.name and 'beta' not in w.name]
    self.keras_model.add_loss(tf.add_n(reg_losses))

    # Compile
    self.keras_model.compile(
        optimizer=optimizer,
        loss=[None] * len(self.keras_model.outputs))

    # Add metrics for losses
    for name in loss_names:
        if name in self.keras_model.metrics_names:
            continue
        layer = self.keras_model.get_layer(name)
        self.keras_model.metrics_names.append(name)
        loss = (
            tf.reduce_mean(layer.output, keepdims=True)
            * self.config.LOSS_WEIGHTS.get(name, 1.))
        self.keras_model.metrics.append(loss)

Я хочу видеть каждую потерю отдельно, а не одну потерю, как показано на рисунке ниже (materialport / Mask_RCNN). отдельные потери

...