我使用CNN进行语义分割,创建4个输出分支,并自定义损失函数。
我正在使用以下版本:
我训练时,进度条上没有显示acc和val_acc,但是通常显示出损失和val_loss。
436/436 [==============================] - 160s 367ms/step - loss: 0.4628 - output_0_loss: 0.0351 - output_1_loss: 0.0698 - output_2_loss: 0.1572 - output_3_loss: 0.2008 - output_0_acc: 0.6728 - output_1_acc: 0.6944 - output_2_acc: 0.8087 - output_3_acc: 0.7010 - val_loss: 0.3001 - val_output_0_loss: 0.0145 - val_output_1_loss: 0.0261 - val_output_2_loss: 0.1511 - val_output_3_loss: 0.1083 - val_output_0_acc: 0.9742 - val_output_1_acc: 0.8642 - val_output_2_acc: 0.7887 - val_output_3_acc: 0.8423
我的损失函数是binary_crossentropy,我用的度量是['accuracy']:
model.compile(loss=my_binary_crossentropy,
optimizer=optimizer_name,
metrics=['accuracy'])
历史记录中的acc和val_acc为None:
epoch-loss:[0.44138801848175424, 0.31117319703451685] epoch-acc:[None, None] epoch-val_loss:[0.2681478185099933, 0.21369548345525233] epoch-val_acc:[None, None]
我应该如何处理此问题或在哪里进行调试?
答案 0 :(得分:0)
您有一个具有多个输出的模型,要训练该模型,keras将使用单个损失函数,该函数是每个输出的损失的加权组合,但是对于非损失度量标准则无法做到。
精度仅针对单个输出定义,因此您为每个输出获得一个精度训练/验证指标,这是正确的行为。整个模型都不会有acc
或val_acc
。