【发布时间】:2020-08-11 00:40:20
【问题描述】:
使用来自this article 的A2C 代理,在更新权重时如何获取value_loss、policy_loss 和entropy_loss 的数值?
我使用的模型是双头的,两个头共用一个树干。策略头输出形状为[number of actions, batch size],值头的形状为[1, batch_size]。当这些损失函数作为指标给出时,编译此模型会返回大小不兼容错误:
self.model.compile(optimizer=self.optimizer,
metrics=[self._logits_loss, self._value_loss],
loss=[self._logits_loss, self._value_loss])
self._value_loss 和self._policy_loss 都作为图执行,这意味着其中的所有变量都只是指向图节点的指针。我发现了一些示例,其中评估了张量对象(使用 eval())以从节点中获取值。我不理解它们,因为为了 eval() 一个 Tensor 对象,您需要给它一个 Session 但在 TensorFlow 2.x 中,Sessions 已被弃用。
另一个线索,当在 Keras 中从 Model API 调用 train_on_batch() 来训练模型时,该方法返回损失。我不明白为什么,但它返回的唯一损失来自保单负责人。该头部的损失计算为policy_loss - entropy_loss,但我的目标是分别获得所有三个损失以在图表中可视化它们。
欢迎任何帮助,我被困住了。
【问题讨论】:
标签: python keras tensorflow2.0 loss-function