2017-02-17 120 views
3

我想輸入圖像img(它也有負值)並將其輸入到兩個激活圖層中。不過,我想作一個簡單的變換例如與-1.0乘以整個圖像:TypeError:模型的輸出張量必須是Keras張量

left = Activation('relu')(img) 
right = Activation('relu')(tf.mul(img, -1.0)) 

如果我這樣做,這樣我得到:

TypeError: Output tensors to a Model must be Keras tensors. Found: Tensor("add_1:0", shape=(?, 5, 1, 3), dtype=float32) 

,我不知道我怎麼能解決這個問題。是否有一個Kerasmul()的方法,我可以使用這樣的事情?或者,我可以換的tf.mul(img, -1.0)不知何故這樣的結果,我可以將它傳遞給Activation

請注意:負值可能是重要的。因此轉換圖像s.t.最小的僅僅是0.0是不是在這裏解決。


我收到了

left = Activation('relu')(conv) 
right = Activation('relu')(-conv) 

同樣的錯誤了同樣的錯誤:

import tensorflow as tf 

minus_one = tf.constant([-1.]) 

# ... 

    right = merge([conv, minus_one], mode='mul') 

回答

4

是否創建一個lambda層來包裝你的函數工作?

見文件here

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) 
+0

是的,這工作!謝謝! – displayname

+0

不客氣:) –

相關問題