【发布时间】:2020-08-18 21:50:05
【问题描述】:
我想预测 Tensorflow 中的下一个单词。以前,我为每个单词保存一个向量和所有唯一词一样多,但这会占用大量内存,所以我想为此使用嵌入,但我对向量的维度有点困惑,因为在这种方法中,我们使用整数而不是 0 和 1。
我写了这段代码:
# previous_words_list is a list of 5 consecutive words (inputs)
# next_words is a list of the sixth word in each word sequence (labels)
words_length_embedded = 50
number_of_previous_words = 5
inputs = np.zeros((len(previous_words_list), number_of_previous_words), dtype=float)
labels = np.zeros((len(next_words), len(unique_words)), dtype=float)
print(inputs.shape)
print(labels.shape)
for i, each_words in enumerate(previous_words_list):
for j, each_word in enumerate(each_words):
inputs[i, j] = unique_word_index[each_word]
labels[i] = unique_word_index[next_words[i]]
# for example: "inputs" is: [[22,1,34,5,7], ...] and "labels" is: [44, ...] ???????
model = Sequential()
model.add(Embedding(len(unique_words), words_length_embedded, input_length=number_of_previous_words, trainable=True))
model.add(LSTM(256, input_shape=(number_of_previous_words, words_length_embedded), return_sequences=False))
model.add(Dense(len(unique_words))) # ???????
model.add(Activation('softmax'))
optimizer = 'adam'
model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
我知道密集层或输入和标签维度的输入不正确,但这些应该是什么?
【问题讨论】:
-
您是否收到任何错误消息?
-
是的,我愿意。而且这个错误很明显,因为舞蹈层的尺寸与标签的尺寸不匹配,我的问题是我不知道它们应该是什么样子。 (代码中的问号)
标签: python tensorflow nlp