我想拍摄输入图像img(也有负值)并将其输入两个激活层.但是,我想做一个简单的转换,例如将整个图像乘以-1.0:
left = Activation('relu')(img)
right = Activation('relu')(tf.mul(img, -1.0))
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我得到:
TypeError: Output tensors to a Model must be Keras tensors. Found: Tensor("add_1:0", shape=(?, 5, 1, 3), dtype=float32)
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题.是否有一个Keras侧面mul(),我可以使用这种事的方法?或者tf.mul(img, -1.0)我可以以某种方式包装结果,以便我可以传递给它Activation?
请注意:负值可能很重要.因此,将图像转换为最小值简直0.0不是解决方案.
我得到了同样的错误
left = Activation('relu')(conv)
right = Activation('relu')(-conv)
Run Code Online (Sandbox Code Playgroud)
同样的错误:
import tensorflow as tf
minus_one = tf.constant([-1.])
# ...
right = merge([conv, minus_one], mode='mul')
Run Code Online (Sandbox Code Playgroud)
创建 Lambda 层来包装您的函数是否有效?
请参阅此处的文档
from keras.layers import Lambda
import tensorflow as tf
def mul_minus_one(x):
return tf.mul(x,-1.0)
def mul_minus_one_output_shape(input_shape):
return input_shape
myCustomLayer = Lambda(mul_minus_one, output_shape=mul_minus_one_output_shape)
right = myCustomLayer(img)
right = Activation('relu')(right)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4413 次 |
| 最近记录: |