Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 层lstm_35的输入0与层不兼容:预期ndim=3,发现ndim=4。收到完整形状:[无,1966,7059,256]_Python_Tensorflow_Keras Layer_Seq2seq_Lstm Stateful - Fatal编程技术网

Python 层lstm_35的输入0与层不兼容:预期ndim=3,发现ndim=4。收到完整形状:[无,1966,7059,256]

Python 层lstm_35的输入0与层不兼容:预期ndim=3,发现ndim=4。收到完整形状:[无,1966,7059,256],python,tensorflow,keras-layer,seq2seq,lstm-stateful,Python,Tensorflow,Keras Layer,Seq2seq,Lstm Stateful,我正在为文本摘要创建一个单词级嵌入的seq2seq模型,我面临数据形状问题,请帮助。谢谢 encoder_input=Input(shape=(max_encoder_seq_length,)) embed_layer=Embedding(num_encoder_tokens,256,mask_zero=True)(encoder_input) encoder=LSTM(256,return_state=True,return_sequences=

我正在为文本摘要创建一个单词级嵌入的seq2seq模型,我面临数据形状问题,请帮助。谢谢

        encoder_input=Input(shape=(max_encoder_seq_length,))
        embed_layer=Embedding(num_encoder_tokens,256,mask_zero=True)(encoder_input)
        encoder=LSTM(256,return_state=True,return_sequences=False)
        encoder_ouput,state_h,state_c=encoder(embed_layer)
        encoder_state=[state_h,state_c] 
        decoder_input=Input(shape=(max_decoder_seq_length,))
        de_embed=Embedding(num_decoder_tokens,256)(decoder_input)
        decoder=LSTM(256,return_state=True,return_sequences=True)
        decoder_output,_,_=decoder(de_embed,initial_state=encoder_state)
        decoder_dense=Dense(num_decoder_tokens,activation='softmax')
        decoder_output=decoder_dense(decoder_output)
        model=Model([encoder_input,decoder_input],decoder_output)
        model.compile(optimizer='adam',loss="categorical_crossentropy",metrics=['accuracy'])
由于输入的形状,训练时会出现错误。请帮助将我的数据重新塑造为当前形状

编码器数据形状:(501966,7059) 解码器数据形状:(50、69、1183) 解码器目标形状:(50、69、1183)

纪元1/35
警告:tensorflow:为输入张量(“input_37:0”,shape=(None,1966),dtype=float32)使用shape(None,1966)构造模型,但在具有不兼容形状(None,1966,7059)的输入上调用了该模型。
警告:tensorflow:为输入张量(“input_38:0”,shape=(None,69),dtype=float32)构造了形状(None,69)的模型,但在形状不兼容的输入(None,69,1183)上调用了该模型。
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
1模型拟合([编码器输入数据,解码器输入数据],解码器目标数据,
2批次尺寸=16,
---->3个时代=35)
ValueError:层lstm_35的输入0与层不兼容:预期ndim=3,发现ndim=4。收到完整形状:[无,1966,7059,256]

我已尝试复制您的问题,并且能够成功地拟合模型,您可以遵循以下代码,该代码与您的架构相同,嵌入层的形状存在一些小问题,我已包含使用手套嵌入的嵌入层的权重,下面还提到了嵌入矩阵的细节

embedding_layer = Embedding(num_words, EMBEDDING_SIZE, weights=[embedding_matrix], input_length=max_input_len)
encoder_inputs_placeholder = Input(shape=(max_encoder_seq_length,))
x = embedding_layer(encoder_inputs_placeholder)
encoder = LSTM(LSTM_NODES, return_state=True)

encoder_outputs, h, c = encoder(x)
encoder_states = [h, c]
decoder_inputs_placeholder = Input(shape=(max_decoder_seq_length,))

decoder_embedding = Embedding(num_decoder_tokens, LSTM_NODES)
decoder_inputs_x = decoder_embedding(decoder_inputs_placeholder)

decoder_lstm = LSTM(LSTM_NODES, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(decoder_inputs_x, initial_state=encoder_states)
decoder_dense = Dense(num_decoder_tokens, activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)
model = Model([encoder_inputs_placeholder,
  decoder_inputs_placeholder], decoder_outputs)
model.compile(
    optimizer='adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)
用于嵌入矩阵:

MAX_NUM_WORDS = 10000
EMBEDDING_SIZE = 100 # you can choose 200, 300 dimensions also, depending on the embedding file you use.
embeddings_dictionary = dict()

glove_file = open(r'/content/drive/My Drive/datasets/glove.6B.100d.txt', encoding="utf8")

for line in glove_file:
    records = line.split()
    word = records[0]
    vector_dimensions = asarray(records[1:], dtype='float32')
    embeddings_dictionary[word] = vector_dimensions
glove_file.close()

num_words = min(MAX_NUM_WORDS, len(word2idx_inputs) + 1)
embedding_matrix = zeros((num_words, EMBEDDING_SIZE))
for word, index in word2idx_inputs.items():
    embedding_vector = embeddings_dictionary.get(word)
    if embedding_vector is not None:
        embedding_matrix[index] = embedding_vector
Model: "model_2"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_5 (InputLayer)            (None, 16)           0                                            
__________________________________________________________________________________________________
input_6 (InputLayer)            (None, 59)           0                                            
__________________________________________________________________________________________________
embedding_5 (Embedding)         (None, 16, 100)      1000000     input_5[0][0]                    
__________________________________________________________________________________________________
embedding_6 (Embedding)         (None, 59, 64)       5824        input_6[0][0]                    
__________________________________________________________________________________________________
lstm_4 (LSTM)                   [(None, 64), (None,  42240       embedding_5[0][0]                
__________________________________________________________________________________________________
lstm_5 (LSTM)                   [(None, 59, 64), (No 33024       embedding_6[0][0]                
                                                                 lstm_4[0][1]                     
                                                                 lstm_4[0][2]                     
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 59, 91)       5915        lstm_5[0][0]                     
==================================================================================================
Total params: 1,087,003
Trainable params: 1,087,003
Non-trainable params: 0
型号摘要:

MAX_NUM_WORDS = 10000
EMBEDDING_SIZE = 100 # you can choose 200, 300 dimensions also, depending on the embedding file you use.
embeddings_dictionary = dict()

glove_file = open(r'/content/drive/My Drive/datasets/glove.6B.100d.txt', encoding="utf8")

for line in glove_file:
    records = line.split()
    word = records[0]
    vector_dimensions = asarray(records[1:], dtype='float32')
    embeddings_dictionary[word] = vector_dimensions
glove_file.close()

num_words = min(MAX_NUM_WORDS, len(word2idx_inputs) + 1)
embedding_matrix = zeros((num_words, EMBEDDING_SIZE))
for word, index in word2idx_inputs.items():
    embedding_vector = embeddings_dictionary.get(word)
    if embedding_vector is not None:
        embedding_matrix[index] = embedding_vector
Model: "model_2"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_5 (InputLayer)            (None, 16)           0                                            
__________________________________________________________________________________________________
input_6 (InputLayer)            (None, 59)           0                                            
__________________________________________________________________________________________________
embedding_5 (Embedding)         (None, 16, 100)      1000000     input_5[0][0]                    
__________________________________________________________________________________________________
embedding_6 (Embedding)         (None, 59, 64)       5824        input_6[0][0]                    
__________________________________________________________________________________________________
lstm_4 (LSTM)                   [(None, 64), (None,  42240       embedding_5[0][0]                
__________________________________________________________________________________________________
lstm_5 (LSTM)                   [(None, 59, 64), (No 33024       embedding_6[0][0]                
                                                                 lstm_4[0][1]                     
                                                                 lstm_4[0][2]                     
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 59, 91)       5915        lstm_5[0][0]                     
==================================================================================================
Total params: 1,087,003
Trainable params: 1,087,003
Non-trainable params: 0


希望这能解决您的问题,学习愉快

嗨@TensorflowWarrior你能帮我查一下这个问题吗@Tensorflow Warrior你能帮我查一下这个问题吗