我有一個針對文本內容訓練的 LSTM 模型。現在我想用那個模型來生成一些句子。但我不是總是選擇最佳選項,而是希望它從例如前 3 個選項中進行選擇,以便它可以使用相同的輸入生成不同的句子,因為現在我幾乎每個輸入都得到相同的答案。我如何修改此代碼以便可能,我知道我需要洗掉np.argmax但我不知道如何回傳前 3 個最高值的索引。
當前代碼:
def prediction(seed_text, next_words):
for _ in range(next_words):
token_list = tokenizer.texts_to_sequences([seed_text])[0]
token_list = pad_sequences([token_list], maxlen=max_seq_length-1, padding='pre')
predicted = np.argmax(model.predict(token_list, verbose=0), axis=-1)
ouput_word = ""
for word, index in tokenizer.word_index.items():
if index == predicted:
output_word = word
break
seed_text = ' ' output_word
return seed_text
uj5u.com熱心網友回復:
np.argsort將按照從小到大排序的順序為您提供陣列中專案的索引:https ://numpy.org/doc/stable/reference/generated/numpy.argsort.html
這是一個使用argsort. 請注意,預測值最低的那個(索引 2,“c”,預測值為 0.05)被排除在列印的內容之外。
import numpy as np
word_index = {'a': 0, 'b': 1, 'c': 2, 'd': 3}
predictions = np.array([0.1, 0.7, 0.05, 0.15])
# add negative to sort large to small; slice to select just up to 3rd index
top_3 = np.argsort(-predictions)[:3]
for word, index in word_index.items():
if index in top_3:
print(word)
#> a
#> b
#> d
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485470.html
上一篇:svn2git遷移-標簽未被復制
下一篇:ndarray的基于陣列的索引
