2017-02-24 21 views
8

私のprevious questionでは、KerasのLayer.set_input()を使用して、Tensorflow前処理出力テンソルをKerasモデルの入力に接続しました。しかし、Kerasバージョン1.1.1の後のthis method has been removedTensorflowテンソルでケラス層の入力を設定する方法は?

これを新しいKerasバージョンでどうすれば実現できますか?

例:

# Tensorflow pre-processing 
raw_input = tf.placeholder(tf.string) 
### some TF operations on raw_input ### 
tf_embedding_input = ... # pre-processing output tensor 

# Keras model 
model = Sequential() 
e = Embedding(max_features, 128, input_length=maxlen) 

### THIS DOESN'T WORK ANYMORE ### 
e.set_input(tf_embedding_input) 
################################ 

model.add(e) 
model.add(LSTM(128, activation='sigmoid')) 
model.add(Dense(num_classes, activation='softmax')) 

答えて

8

あなたが前処理で行われた後、あなたはあなたのケースでそうInput

tensorのparamを呼び出すことにより、入力層としてテンソルを追加することができます。

tf_embedding_input = ... # pre-processing output tensor 

# Keras model 
model = Sequential() 
model.add(Input(tensor=tf_embedding_input)) 
model.add(Embedding(max_features, 128, input_length=maxlen)) 
+5

この行の 'model.add(Input(tensor = tf_embedding_input))'では、次の**エラーが発生します**: 'TypeError:a ddedレイヤは、クラスLayerのインスタンスでなければなりません。 Found:Tensor( "tf_embedding_input:0"、shape =(?, 23)、dtype = int64) '。私は**これを 'model.add(InputLayer(input_tensor = embedding_input))'に変更することで**を解決しました。私は正しい方向に指してくれてありがとう! – Qululu

+1

問題はありませんが、私は通常、 'Input'が動作する' Sequential'ではなく、 'Model'という機能的な' Model'を使用しますが、最後に固定して嬉しいです。 – indraforyou

+0

はい、以前は 'Model'を使用して、 'Input '層に続く' Lambda'層では 'Lambda(preprocess_func、...)'となります。実際には、これが同じことを達成すると仮定することはできますか? – Qululu

関連する問題