【发布时间】:2022-12-31 23:15:33
【问题描述】:
我是 Keras Python 建模的新手。我想创建一个模型来生成对我的消息的文本答复,例如聊天机器人。我读到我需要使用 tokenizer 和 to_categorical 方法。有我的代码:
import numpy as np
from keras.layers import Dense, LSTM, Input, Dropout, Embedding
from keras.models import Sequential
from keras.optimizers import Adam
from keras.preprocessing.text import Tokenizer, text_to_word_sequence
from keras.utils import pad_sequences, to_categorical
X = ["Hello!", "Greetings!"]
tokenizer = Tokenizer(1000)
X_seq = pad_sequences(tokenizer.texts_to_sequences(X), 20)
model = Sequential()
model.add(Embedding(1000, 100, input_length=20))
model.add(LSTM(100))
model.add(Dense(1000, "softmax"))
model.summary()
model.compile(loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_seq, to_categorical(X_seq), epochs=10, batch_size=20)
print(model.predict(pad_sequences(tokenizer.texts_to_sequences(["Greetings!"]), 20)))
价值1000是分词器词汇表中唯一单词的最大数量X是我的消息输入列表。20是文本的最大长度。 我想创建自学模型,但我真的不知道该怎么做。在互联网上,我发现我需要传递相同的输入和输出值,但我的模型应该返回类似 [0.1,0.2,0.3....] 的东西 - 最大值代表模型预测的单词。但是当我尝试适应它时会引发异常:
ValueError: Shapes (None, 20) and (None, 1000) are incompatible
我猜这是输入列表和嵌入层形状的问题。伙计们请帮我处理一下。先感谢您!
【问题讨论】:
标签: python keras artificial-intelligence lstm