我有一个 KerasModel
它计算两个张量,r1
and r2
相同形状的。我想让模型计算(r1 - r2)**2
.
我可以将这些张量的总和与keras.layers.add(r1, r2)
。我可以带产品keras.layers.multiply(r1, r2)
。如果有一个subtract
函数,我会写
r = keras.layers.subtract(r1, r2)
square_diff = keras.layers.multiply(r, r)
但似乎没有keras.layers.subtract
功能。
相反,我一直在尝试弄清楚如何将我的输入之一乘以常数 -1 张量,然后相加,但我不知道如何创建该 -1 张量。我尝试过多种变体
negative_one = keras.backend.constant(np.full(r1.get_shape()), -1)
这些都不起作用。大概是因为维数r1
is (?, 128)
(即第一个维度是批量大小,第二个维度表示 128 个隐藏元素。)
Keras 中获取两个张量之差的正确方法是什么?
正如 dhinckley 提到的,您应该使用 Lambda 层。但我建议首先定义您的自定义函数。有了这段代码就会更清晰一点:
import keras.backend as K
from keras.layers import Lambda
def squared_differences(pair_of_tensors):
x, y = pair_of_tensors
return K.square(x - y)
square_diff = Lambda(squared_differences)([r1, r2])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)