我正在尝试实现一个将生成自定义损失函数的 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
Run Code Online (Sandbox Code Playgroud)
当我实现这一点时,我得到:
TypeError: TensorType does not support iteration.
Run Code Online (Sandbox Code Playgroud)
我使用的是 Keras 2.0.2 版和 Theano 0.9.0 版后端。我知道我需要使用 Keras 张量函数才能做到这一点,但我无法弄清楚任何可以做我想做的张量函数。
另外,我很难准确理解我的 Lambda 函数应该返回什么。它是每个样本的总成本的张量,还是只是批次的总成本?
几天来我一直在反对这一点。任何帮助深表感谢。