Machine learning 如何使用加载的LSTM注意模型对输入进行预测?

Machine learning 如何使用加载的LSTM注意模型对输入进行预测?,machine-learning,keras,deep-learning,data-science,attention-model,Machine Learning,Keras,Deep Learning,Data Science,Attention Model,我是一个完全的深度学习初学者&Keras。我想建立一个层次化的注意力网络,帮助将评论分为几个类别,即。有毒、剧毒等。我从一个开放的存储库中获取代码并保存模型。然后,我使用来自json的model_加载了模型。现在,我希望使用这个加载的模型对输入文本进行预测(作为python输入或单独的文件提供) 这是我正在使用的代码: 然后我做了: 然后在一个单独的文件中: 我得到“从磁盘加载模型”完美。我想知道我需要输入的格式,以及如何使用模型对其进行分类的代码段。由于我对它没有太多的了解,如果有人能帮助我使

我是一个完全的深度学习初学者&Keras。我想建立一个层次化的注意力网络,帮助将评论分为几个类别,即。有毒、剧毒等。我从一个开放的存储库中获取代码并保存模型。然后,我使用来自json的model_加载了模型。现在,我希望使用这个加载的模型对输入文本进行预测(作为python输入或单独的文件提供)

这是我正在使用的代码:

然后我做了: 然后在一个单独的文件中:
我得到“从磁盘加载模型”完美。我想知道我需要输入的格式,以及如何使用模型对其进行分类的代码段。由于我对它没有太多的了解,如果有人能帮助我使用python特定的代码使其工作,那将非常有帮助。

在进行预测时,请确保您也对标记器进行了pickle处理,否则输出将不正确

    new = ["Your_text_that_you_want_to_check"]
    seq = tokenizer.texts_to_sequences(new)
    padded = pad_sequences(seq, maxlen=MAX_SEQUENCE_LENGTH)
    pred = model.predict(padded)

在预测过程中,将新文本转换为向量非常重要,以便对模型进行训练。我已经将我的训练数据转换为序列,然后用零填充,这样长度应该相同,并且与我在预测时重复的步骤相同。但一定要把你的代币器腌了。我希望有帮助!如果您理解这些步骤有困难,请告诉我。

我在保存模型后添加了以下内容:使用open('tokenizer.pickle','wb')作为句柄:pickle.dump(tokenizer,handle,protocol=pickle.HIGHEST_protocol),并在加载模型的文件中添加了以下内容:text=[“嘿”]with open('tokenizer.pickle','rb'))as handle:tk=pickle.load(handle)tk.fit_on_text(text)index_list=tk.text_to_sequences(text)data=pad_sequences(index_list,maxlen=1)y=loaded_model.predict(data)我得到错误:value错误:检查输入时出错:预期输入_2有3维,但得到了形状为(1,1)的数组hi@Code231不再适合文本。你不必在课文(课文)上写这行tk.fit课文,并确保在培训和本部分中的maxlen应该是相同的。您已使用1作为maxlen,因此请确保在培训时使用相同的maxlen<代码>以open('tokenizer.pickle','rb')作为句柄:tk=pickle.load(handle)text=[“嘿”]index\u list=tk.text\u to\u sequences(text)data=pad\u sequences(index\u list,maxlen=max\u len\u您在训练时使用的)y=load\u model.predict(data)
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json,custom_objects={'AttentionWithContext':AttentionWithContext})
loaded_model.load_weights("model.h5")
print("Loaded model from disk")
    new = ["Your_text_that_you_want_to_check"]
    seq = tokenizer.texts_to_sequences(new)
    padded = pad_sequences(seq, maxlen=MAX_SEQUENCE_LENGTH)
    pred = model.predict(padded)