如何使用Tensorflow张量设置Keras层的输入?
在我的示例中,我使用Keras'如何使用Tensorflow张量设置Keras层的输入?,tensorflow,keras,keras-layer,Tensorflow,Keras,Keras Layer,在我的示例中,我使用Keras'Layer.set_input()将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-pr
Layer.set_input()
将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'))
完成预处理后,可以通过调用
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))
在这一行
model.add(Input(tensor=tf\u embedding\u Input))
上,引发了以下错误:TypeError:添加的层必须是类层的实例。找到:张量(“tf\u嵌入\u输入:0”,shape=(?,23),dtype=int64)
。我通过将行更改为model.add(InputLayer(input\u tensor=embedded\u input))
解决了这个问题。谢谢你给我指出了正确的方向!没问题,我通常使用功能性模型
,而不是顺序
,在输入
起作用的地方,但很高兴您在您的末端修复了它。是的,我以前使用过功能性模型
,并在输入
层之后的Lambda层中包装了预处理:Lambda(preprocess_func,…)
。我可以假设,实际上,这实现了同样的效果吗?事实上,我在回答中也提出了同样的建议。但后来我看到你正在为stringtf.placeholder(tf.string)
创建一个占位符。由于我没有处理NLP,我不确定它是否会与keras一起使用