2017-02-24 43 views
8

previous question benim Trasorflow ön işleme çıkış tensör benim Keras modelinin girişine bağlamak için Keras 'Layer.set_input() kullanılır. Ancak, Keras sürüm 1.1.1 sonra this method has been removed.Tensorflow tensörü olan bir Keras katmanının girişi nasıl ayarlanır?

Bunu daha yeni Keras sürümlerinde nasıl yapabilirim?

Örnek: Önceden işlenmesiyle tamamladıktan sonra

# 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')) 

cevap

8

, Sen Yani sizin durumda Input

ait tensor param arayarak giriş katmanı olarak tensörünü ekleyebilirsiniz:

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

Bu satırda 'model.add (Input (tensor = tf_embedding_input))', aşağıdaki ** hata ortaya çıkar: ** TypeError: The a Ddedilen katman, sınıf Katmanının bir örneği olmalıdır. Bulunan: Tensor ("tf_embedding_input: 0", şekil = (?, 23), dtype = int64) '. ** bu satırı ** modeli .add (InputLayer (input_tensor = embedding_input)) olarak değiştirerek çözdüm. Beni doğru yönde işaret ettiğin için teşekkürler! – Qululu

+1

Sorun değil, genellikle '' 'ın' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' fonksiyon 'işlevini kullanırım, fakat sizin sonuna kadar ayarladığınıza sevindim – indraforyou

+0

Evet, daha önce işlevsel olan 'Modeli' kullanmıştım ve ön işleme koymuştum “Input” katmanını takip eden bir “Lambda” katmanında: “Lambda (preprocess_func, ...)'. Pratik olarak, bunun aynı şeyi başardığını varsayabilir miyim? – Qululu