2017-02-17 7 views
3

入力画像img(負の値も持っています)を取り込み、それを2つのアクティブ化レイヤに渡したいとします。しかし、私は単純な変換をしたいと思います。私は取得していますこのようにそれを行う場合TypeError:モデルへの出力テンソルはケラステンソルでなければなりません

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

を::-1.0で画像全体を掛け

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

をし、私はそれを修正する方法を確認していません。このようなことに私が使用できるKerasmul()メソッドがありますか?または、私はそれをActivationに渡すことができるように何とかtf.mul(img, -1.0)の結果をラップできますか?

注:負の値が重要な場合があります。したがって、画像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

は、あなたの関数の仕事をラップするラムダレイヤーを作成していますか?

働い参照ドキュメント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

あなたは歓迎です:) –

関連する問題