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
}
- 我希望将损失分开,以便有权对其进行监控