如何设置具有Tensorflow张量的Keras层的输入?

Qul*_*ulu 16 keras tensorflow keras-layer

在我之前的问题中,我使用Layer.set_input()Keras ' 将我的Tensorflow预处理输出张量连接到我的Keras模型的输入.但是,此方法已在Keras版本之后删除1.1.1.

如何在较新的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'))
Run Code Online (Sandbox Code Playgroud)

ind*_*you 12

完成预处理后,可以通过调用tensorparam 来添加张量作为输入层Input

所以在你的情况下:

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))
Run Code Online (Sandbox Code Playgroud)

  • 在这行`model.add(Input(tensor = tf_embedding_input))`中,引发以下**错误**:`TypeError:添加的层必须是类Layer的实例.找到:Tensor("tf_embedding_input:0",shape =(?,23),dtype = int64)`.我通过将行更改为`model.add(InputLayer(input_tensor = embedding_input))来解决了这个问题.谢谢你指出我正确的方向! (11认同)