我的问题是我有两个输出网络,每个输出都有自己的损耗函数。我只想将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)