ValueError: Shapes (None, 20,9)和(None, 9)不兼容



这是我的代码

import tensorflow as tf
from tensorflow import keras
from keras import layers
# definition  question and answer
questions = [
"你好嗎?",
"今天天氣如何?",
"你有什麼興趣?",
"你喜歡什麼食物?"
]
answers = [
"我很好,謝謝你。",
"今天天氣非常好。",
"我喜歡看書和打電子遊戲。",
"我喜歡吃中式食物,特別是炒飯。"
]
# 將問題和回答轉換成數字
tokenizer = keras.preprocessing.text.Tokenizer()
tokenizer.fit_on_texts(questions + answers)

question_seqs = tokenizer.texts_to_sequences(questions)
answer_seqs = tokenizer.texts_to_sequences(answers)
# 將問題和回答填充到相同的長度
max_len = 20
question_seqs_padded = keras.preprocessing.sequence.pad_sequences(question_seqs, maxlen=max_len)
answer_seqs_padded = keras.preprocessing.sequence.pad_sequences(answer_seqs, maxlen=max_len)
# 定義模型
model = keras.Sequential()
model.add(layers.Embedding(len(tokenizer.word_index) + 1, 50, input_length=max_len))
model.add(layers.LSTM(64))
model.add(layers.Dense(len(tokenizer.word_index) + 1, activation='softmax'))
# 編譯模型
model.compile(loss='categorical_crossentropy', optimizer='adam')

# 訓練模型
model.fit(question_seqs_padded, keras.utils.to_categorical(answer_seqs_padded, num_classes=len(tokenizer.word_index)+1), epochs=100, batch_size=32)

这是它跑出错误

ValueError: Shapes (None, 20, 9) and (None, 9) are incompatible

我试图修复形状(None, 20,9)和(None, 9)是不兼容的

model.fit(question_seqs_padded, keras.utils.to_categorical(answer_seqs_padded, num_classes=len(tokenizer.word_index)+1), epochs=100, batch_size=32)

我尝试删除answer_seqs_padding到不兼容(None, 9),但它仍然不工作。

在本例中,您需要在lstm中返回整个序列,因此只需使用:
layers。LSTM (64return_sequences = True)。如果不使用return_sequences=True,它将只返回最后一个输出。

相关内容

最新更新