我正在尝试做最简单的事情(所以我认为):在TF 2.0中将tf.math.multiply
和keras Lambda
层包装在一起:
def my_mult(xx, yy):
return tf.math.multiply(xx, yy)
用于两个输入(带有广播)
>>>_in
<tf.Tensor 'conv2d_3/Identity:0' shape=(None, 32, 32, 256) dtype=float32>
>>>_in_s
<tf.Tensor 'activation_3/Identity:0' shape=(None, 256) dtype=float32>
以下作品:
>>>tf.math.multiply(_in,_in_s)
<tf.Tensor 'Mul:0' shape=(None, 32, 32, 256) dtype=float32>
>>>_in * _in_s
<tf.Tensor 'mul_1:0' shape=(None, 32, 32, 256) dtype=float32>
但下面的所有波纹管似乎都不起作用:
Lambda(my_mult)(_in,_in_s)
...TypeError: my_mult() missing 1 required positional argument: 'yy'
Lambda(my_mult)((_in,_in_s))
...TypeError: my_mult() missing 1 required positional argument: 'yy'
答案 0 :(得分:0)
目前,我通过将my_mult
更改为“解决”它:
def my_mult(ins):
return tf.math.multiply(ins[0], ins[1])
然后致电:
Lambda(my_mult)((_in,_in_s))
如果有人有更好的解决方案,欢迎与他分享。