首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >得到LSTM的前3位预测值,而不仅仅是顶部

得到LSTM的前3位预测值,而不仅仅是顶部
EN

Stack Overflow用户
提问于 2022-06-02 17:56:23
回答 1查看 75关注 0票数 0

我有一个关于文本内容的LSTM模型。现在我想用这个模型来生成一些句子。但是,我不想总是选择最好的选项,我希望它从前3中选择,这样它就可以用相同的输入产生不同的句子,因为现在我对几乎每一个输入都得到了相同的答案。我如何修改这段代码,使之成为可能,我知道我需要删除np.argmax,但我不知道如何返回前3位最高值的索引。

当前代码:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 18:14:24

np.argsort将按从小到大排序的顺序,为数组中的项提供索引:https://numpy.org/doc/stable/reference/generated/numpy.argsort.html

下面是一个使用argsort的示例。注意,预测值最低的那个(预测值为0.05的索引2,"c“)不在打印内容中。

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72480442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档