将class_werights与多个损失函数一起使用

时间:2019-04-19 17:34:46

标签: tensorflow

我的问题是我有两个输出网络,每个输出都有自己的损耗函数。我只想将class_weight应用于输出之一,我如何实现这一点。我搜索了class_weights的文档,但我认为它不支持多个输出。因为他们没有提到。我也不完全了解当前的分类策略。是要应用于两个输出,还是仅应用于第一个输出。

任何人都对我该怎么办有想法?

编辑,添加示例:

x1 = tf.keras.layers.Dense(self._num_classes, activation='softmax', kernel_initializer='glorot_normal', name = 'out_1')(input)
x2 = tf.keras.layers.Dense(self._num_classes, kernel_initializer='glorot_normal', name = 'out_2')(input)

model = tf.keras.models.Model(inputs=input, outputs=[x1, x2])

model.compile(loss={'out_1': loss1, 'out_2': loss2},
                  optimizer=opt, metrics={'out_1': 'categorical_accuracy', 'out_2': 'categorical_accuracy'})

class_weight_dict = {0: 0.022, 1: 0.01, 2: 0.06, 3: 0.12, 4: 0.26, 5: 0.44, 6: 0.068}  # this represent the weights for each class in my 7 classes dataset for example

model.fit(dataset_train, epochs=epochs, verbose=1, initial_epoch=initial_epoch,
               class_weight=class_weight_dict,
              validation_data=dataset_val),
              callbacks=call_backs)

0 个答案:

没有答案