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

fjnneemd  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(246)

这是我的密码

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

我尝试修复形状(无,20,9)和(无,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_padded到不兼容(None,9),但它仍然不起作用。

j9per5c4

j9per5c41#

在这种情况下,你需要在lstm中返回整个序列,所以只用途:
layers.LSTM(64,return_sequences=True)。如果你不使用return_sequences=True,它只会返回最后一个输出。

相关问题