我正在尝试实现一个将产生自定义丢失函数的Lambda图层。在图层中,我需要能够将批次中的每个元素与批次中的每个其他元素进行比较,以便计算成本。理想情况下,我想代码看起来是这样的:Keras Lambda图层自定义丢失
for el_1 in zip(y_pred, y_true):
for el_2 in zip(y_pred, y_true):
if el_1[1] == el_2[1]:
# Perform a calculation
else:
# Perform a different calculation
当我真的这样,我得到:
TypeError: TensorType does not support iteration.
我使用Keras版本2.0.2与Theano版本0.9.0后端。我明白我需要使用Keras张量函数来做到这一点,但我无法弄清楚任何张量函数都是我想要的。
此外,我很难理解我的Lambda函数应该返回什么。它是每个样品总成本的张量,还是仅仅是该批次的总成本?
几天来,我一直在殴打我的头。任何帮助深表谢意。
没关系,用Keras回调,我确定Lambda应该返回什么 - 每批一个标量。但是,我仍然无法弄清楚在训练过程中如何迭代张量。我认为这可能与切片有关... – gaw89
你看过我的回答吗? – nemo
对不起,周末过去了。刚接受。非常感谢! – gaw89