我正在尝试此链接http://deeplearning.net/tutorial/lstm.html中的代码,并已将imdb数据更改为我自己的数据。我正在尝试将此模型扩展为3级多项式模型,其中添加了“中性”类,而不是教程中提供的二项式模型,该模型仅对“正”和“负”类进行分类。
为了构建这个新模型,我重写了 build_dict 和 grab_data 函数来构建我的自定义字典并返回三个类的数据,并对 imdb_preprocess.py :
中的> main()dictionary = build_dict()
train_x_pos, train_x_neu, train_x_neg = grab_data('train', dictionary)
test_x_pos, test_x_neu, test_x_neg = grab_data('test', dictionary)
train_x = train_x_pos + train_x_neu + train_x_neg
train_y = [1] * len(train_x_pos) + [0] * len(train_x_neu) + [-1] * len(train_x_neg)
test_x = test_x_pos + test_x_neu + test_x_neg
test_y = [1] * len(test_x_pos) + [0] * len(test_x_neu) + [-1] * len(test_x_neg)
我对 train_y 和 test_y 的修改是否正确?
假设它们是正确的,我继续在我的数据上训练这个模型,我成功地保存了新版本的 lstm_model.npz 和 lstm_model.npz.pkl
现在,如何在新示例中测试此模型?假设一个新的,看不见的例子是以下文本:
new_example = "I am very happy that I've been able to create a new LSTM sentiment model!"
我的理解是需要调用函数 pred_probs ,它需要参数 f_pred_prob , prepare_data ,数据,迭代器和详细=错误。我为这些参数传递了什么?我猜这个函数调用会是这样的:
pred_probs(f_pred_prob, prepare_data, data=new_example, iterator, verbose=False)
答案 0 :(得分:0)
经过几周的讨论,我终于找到了一个工作模式。事实证明我对 imdb_preprocess.py 中main()的修改几乎是正确的,相关的行是:
train_y = [2] * len(train_x_pos) + [1] * len(train_x_neu) + [0] * len(train_x_neg)
test_y = [2] * len(test_x_pos) + [1] * len(test_x_neu) + [0] * len(test_x_neg)
至于如何对新例子进行分类,我有正确的想法:
new_example_pair = (new_example, 0)
pred_probs(f_pred_prob, prepare_data, new_example_pair, iterator, verbose=False)
应该修改pred_probs 以容纳三个类,并且正确地更改它应该返回每个可能类的概率值。