Есть одно сомнение. Я также использую маску 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). отдельные потери