Python 为模型创建Keras模型输入张量时遇到的问题必须来自“Keras.layers.Input”?

Python 为模型创建Keras模型输入张量时遇到的问题必须来自“Keras.layers.Input”?,python,tensorflow,keras,nlp,Python,Tensorflow,Keras,Nlp,出于某种原因,我试图创建我的Keras模型,但它不起作用。我得到这个错误值error:模型的输入张量必须来自keras.layers.Input。已接收:(缺少上一层元数据)。[创建模型最后一行时出错] 我试着分离输入,但没用,有什么帮助吗?这是我的一段代码 word_embedding_layer = emb.get_keras_embedding(trainable = True, input_lengt

出于某种原因,我试图创建我的Keras模型,但它不起作用。我得到这个错误值error:模型的输入张量必须来自
keras.layers.Input
。已接收:(缺少上一层元数据)。[创建模型最后一行时出错]

我试着分离输入,但没用,有什么帮助吗?这是我的一段代码

word_embedding_layer = emb.get_keras_embedding(trainable = True,
                                            input_length = 20, 
                                            name='word_embedding_layer') 


pos_embedding_layer = Embedding(output_dim = 5,
                         input_dim = 56,
                         input_length = 20,
                         name='pos_embedding_layer')





 inputs_and_embeddings = [(Input(shape = (sent_maxlen,),
                                            dtype="int32",
                                            name = "word_inputs"),
                                      word_embedding_layer),
                                     (Input(shape = (sent_maxlen,),
                                            dtype="int32",
                                            name = "predicate_inputs"),
                                      word_embedding_layer),
                                     (Input(shape = (sent_maxlen,),
                                            dtype="int32",
                                            name = "postags_inputs"),
                                      pos_embedding_layer),
            ]




## --------> 9] Concat all inputs and run on deep network
        ## Concat all inputs and run on deep network

outputI = predict_layer(dropout(latent_layers(keras.layers.concatenate([embed(inp)
                                                            for inp, embed in inputs_and_embeddings],
                                                       axis = -1))))


## --------> 10]Build model 
model = Model( map(itemgetter(0), inputs_and_embeddings),[outputI])

模型只接受
输入
s。不能将嵌入传递给模型的输入

  inputs = [Input(sent_maxlen,), dtype='int32', name='word_inputs'),
            Input(sent_maxlen,), dtype='int32', name='predicate_inputs')
            Input(sent_maxlen,), dtype='int32', name='postags_inputs')]

  embeddings = [word_embedding_layer(inputs[0]), 
                word_embedding_layer(inputs[1]),
                pos_embedding_layer(inputs[2])]
听起来像这样:

outputI = predict_layer(dropout(latent_layers(keras.layers.concatenate(embeddings))))


## --------> 10]Build model 
model = Model(inputs, outputI)

模型只接受
输入
s。不能将嵌入传递给模型的输入

  inputs = [Input(sent_maxlen,), dtype='int32', name='word_inputs'),
            Input(sent_maxlen,), dtype='int32', name='predicate_inputs')
            Input(sent_maxlen,), dtype='int32', name='postags_inputs')]

  embeddings = [word_embedding_layer(inputs[0]), 
                word_embedding_layer(inputs[1]),
                pos_embedding_layer(inputs[2])]
听起来像这样:

outputI = predict_layer(dropout(latent_layers(keras.layers.concatenate(embeddings))))


## --------> 10]Build model 
model = Model(inputs, outputI)

您需要将您的嵌入(来自keras或任何其他外部模型,如Glove、Bert)转换为keras输入,如下所示

headline_embeddings = model.encode(headlines) #from bert
snippets_embeddings = model.encode(snippets)#from bert
h_embeddings = np.asarray(snippets_embeddings) #into numpy format
s_embeddings = np.asarray(headline_embeddings)
headline = Input(name = 'h_embeddings', shape = [1]) #converting into keras inputs
snippet = Input(name = 's_embeddings', shape = [1])
model = Model(inputs = ([headline, snippet]), outputs = merged) #keras model input

您需要将您的嵌入(来自keras或任何其他外部模型,如Glove、Bert)转换为keras输入,如下所示

headline_embeddings = model.encode(headlines) #from bert
snippets_embeddings = model.encode(snippets)#from bert
h_embeddings = np.asarray(snippets_embeddings) #into numpy format
s_embeddings = np.asarray(headline_embeddings)
headline = Input(name = 'h_embeddings', shape = [1]) #converting into keras inputs
snippet = Input(name = 's_embeddings', shape = [1])
model = Model(inputs = ([headline, snippet]), outputs = merged) #keras model input

我建议您使用以下方法创建模型:。你的格式很难阅读。尽管如此,所有的错误都意味着在定义模型时,您没有将
输入指定为模型的输入。确实,为什么要把一切复杂化呢?请注意,“嵌入”不是“输入”。您不能将嵌入传递到
模型
,必须传递输入。我建议您使用以下方法创建模型:。你的格式很难阅读。尽管如此,所有的错误都意味着在定义模型时,您没有将
输入指定为模型的输入。确实,为什么要把一切复杂化呢?请注意,“嵌入”不是“输入”。您不能将嵌入传递到
模型
,必须传递输入。非常感谢,这真的很有帮助。非常感谢,这真的很有帮助。