Python Keras-多输出模型的精度不起作用

Python Keras-多输出模型的精度不起作用,python,keras,Python,Keras,在多输出模型的情况下,一个重要的问题是,这种模型的训练需要能够为网络的不同头(输出)指定不同的度量 如正式文件所述: 要为多输出模型的不同输出指定不同的度量,还可以传递字典,例如metrics={'output_a':'accurity'} 对于我的模型,我正在做以下类似的事情: metrics ={'output_a': 'crossentropy', 'output_b': 'mse', 'output_c': 'mse', 'ou

在多输出模型的情况下,一个重要的问题是,这种模型的训练需要能够为网络的不同头(输出)指定不同的度量

如正式文件所述:

要为多输出模型的不同输出指定不同的度量,还可以传递字典,例如metrics={'output_a':'accurity'}

对于我的模型,我正在做以下类似的事情:

metrics ={'output_a': 'crossentropy',
          'output_b': 'mse',
          'output_c': 'mse',
          'output_d': 'mse',
          'output_e': 'categorical_accuracy'}
但是,当我开始训练模型时,在日志中看不到整体精度,而损失和val_损失是可见的

因此,我的问题是:

  • val和val_损失是否分别表示模型的总体损失和总体验证损失
  • 是否也可以打印模型的acc
  • 损失和价值损失是否分别意味着模型的总体损失和总体验证损失

    是的,它们是培训和验证的总体损失。每个输出的单个损耗根据
    loss\u weights
    中指定的系数进行加权

  • 是否有可能也打印模型的准确性

    您可以单独获得每个输出的准确性,但我相信Keras不支持“总体”指标。这将需要更多关于如何汇总各个产出指标的信息


  • 我将回答第二部分,因为第一部分已经回答了

    是的,我们可以通过创建一个自定义回调并覆盖
    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_准确性
    条目来决定是否存储最佳模型