Python 多磁头的自定义丢失-图像定位和分类

Python 多磁头的自定义丢失-图像定位和分类,python,tensorflow,keras,Python,Tensorflow,Keras,我使用以下神经网络解决本地化和分类问题 def model(): inputs = tf.keras.Input(shape=(100, 100, 1)) x = tf.keras.layers.Conv2D(32, (3,3), activation='relu')(inputs) x = tf.keras.layers.AveragePooling2D()(x) x = tf.keras.layers.Conv2D(64, (3,3), activation=

我使用以下神经网络解决本地化和分类问题

def model():
    inputs = tf.keras.Input(shape=(100, 100, 1))
    x = tf.keras.layers.Conv2D(32, (3,3), activation='relu')(inputs)
    x = tf.keras.layers.AveragePooling2D()(x)
    x = tf.keras.layers.Conv2D(64, (3,3), activation='relu')(x)
    x = tf.keras.layers.AveragePooling2D()(x)
    x = tf.keras.layers.Conv2D(128, (3,3), activation='relu')(x)
    x = tf.keras.layers.AveragePooling2D()(x)
    x = tf.keras.layers.Flatten()(x)

    # Classifier Head
    classifier_head = tf.keras.layers.Dense(64)(x)
    classifier_head = tf.keras.layers.Dropout(0.2)(classifier_head)
    classifier_head = tf.keras.layers.Dense(16)(classifier_head)
    classifier_head = tf.keras.layers.Dropout(0.1)(classifier_head)
    classifier_head = tf.keras.layers.Dense(3, name='label')(classifier_head)

    # Regressor Head
    reg_head = tf.keras.layers.Dense(64)(x)
    reg_head = tf.keras.layers.Dropout(0.2)(reg_head)
    reg_head = tf.keras.layers.Dense(32)(reg_head)
    reg_head = tf.keras.layers.Dropout(0.1)(reg_head)
    reg_head = tf.keras.layers.Dense(4, name='bbox')(reg_head) #, activation='sigmoid'

    return tf.keras.Model(inputs=[inputs], outputs=[classifier_head, reg_head])
在我的例子中,有3类: [猫,狗,没有] 我想为BBOX构建一个自定义损失,如果类为None,它将返回0,换句话说,我如何将标签预测传递给BBOX的损失计算

 losses = {'label': tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
          'bbox': custom_loss2
          }
  • 我希望将损失分开,以便有权对其进行监控