Python Keras-多输出模型的精度不起作用
在多输出模型的情况下,一个重要的问题是,这种模型的训练需要能够为网络的不同头(输出)指定不同的度量 如正式文件所述: 要为多输出模型的不同输出指定不同的度量,还可以传递字典,例如metrics={'output_a':'accurity'} 对于我的模型,我正在做以下类似的事情:Python Keras-多输出模型的精度不起作用,python,keras,Python,Keras,在多输出模型的情况下,一个重要的问题是,这种模型的训练需要能够为网络的不同头(输出)指定不同的度量 如正式文件所述: 要为多输出模型的不同输出指定不同的度量,还可以传递字典,例如metrics={'output_a':'accurity'} 对于我的模型,我正在做以下类似的事情: metrics ={'output_a': 'crossentropy', 'output_b': 'mse', 'output_c': 'mse', 'ou
metrics ={'output_a': 'crossentropy',
'output_b': 'mse',
'output_c': 'mse',
'output_d': 'mse',
'output_e': 'categorical_accuracy'}
但是,当我开始训练模型时,在日志中看不到整体精度,而损失和val_损失是可见的
因此,我的问题是:
loss\u weights
中指定的系数进行加权
我将回答第二部分,因为第一部分已经回答了 是的,我们可以通过创建一个自定义回调并覆盖
on\u epoch\u end
函数来打印验证精度。在epoch端的中
我们可以访问日志
,这是度量名称:值的字典
例如—
我有一个13输出模式
class CustomCallbacks(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
val_acc = 0
for i in range(13):
val_acc += (logs.get('val_digit_{}_accuracy'.format(i)))/13 # take mean acc value
print("mean val acc - ",val_acc)
如果您只想跟踪这些自定义指标,那么我已经通过继承
ModelCheckpoint
类ModdedModelCheckpoint(keras.callbacks.ModelCheckpoint):
_epoch_end上的def(self、epoch、logs={}):
relevantAcc=list(availableOutputs.keys())
精度=[相关ACC中k的日志[f“val_y{k}精度”]
打印(f“相关精度:{Accuracies}”)
平均值=总和(精度)/长度(相关ACC)
打印(f“平均精度:{Average}”)
日志[“val_y_精度”]=平均值
super(keras.callbacks.ModelCheckpoint,self)。在\u端(
历元,日志=日志
)
在这种情况下,它会根据我在日志中的“假”val_y_准确性
条目来决定是否存储最佳模型