python - 我该如何解决这个错误?NameError:名称“模型”未定义
问题描述
当我尝试输入文本以进行预测时,执行给了我“NameError:名称'模型'未定义”
评估神经网络模型
def evaluate_mode(Xtrain, ytrain, Xtest, ytest):
scores = list()
n_repeats = 2
n_words = Xtest.shape[1]
for i in range(n_repeats):
# define network
model = Sequential()
model.add(Dense(50, input_shape=(n_words,), activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile network
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit network
model.fit(Xtrain, ytrain, epochs=10, verbose=2)
# evaluate
loss, acc = model.evaluate(Xtest, ytest, verbose=0)
scores.append(acc)
print('%d accuracy: %s' % ((i+1), acc))
return scores
准备文档的单词编码包
def prepare_data(train_docs, test_docs, mode):
# create the tokenizer
tokenizer = Tokenizer()
# fit the tokenizer on the documents
tokenizer.fit_on_texts(train_docs)
# encode training data set
Xtrain = tokenizer.texts_to_matrix(train_docs, mode=mode)
# encode testing data set
Xtest = tokenizer.texts_to_matrix(test_docs, mode=mode)
return Xtrain, Xtest
def predict_sentiment(review, vocab, tokenizer, model):
# clean
tokens = clean_doc(review)
# filter by vocab
tokens = [w for w in tokens if w in vocab]
# convert to line
line = ' '.join(tokens)
# encode
encoded = tokenizer.texts_to_matrix([line], mode='freq')
# prediction
yhat = model.predict(encoded, verbose=0)
return round(yhat[0,0])
解决方案
如果在 中进行训练evaluate_mode()
,则模型是局部变量,不能与 共享predict_sentiment()
。您应该evaluate_mode()
返回model
并将predict_sentiment()
其作为第四个参数。
推荐阅读
- ssl - Websocket 服务器的自签名证书的“公用名无效”
- ruby-on-rails - Rails hidden_field 不起作用!我使用carrierwave gem进行视频上传
- persistence - 理解 Lagoms 持久读端
- c# - 如何在 style->eventsetter 中处理我的自定义事件?
- java - Apache POI - 读取由 TEXT() 公式格式化的单元格
- ios - 如何在 IOS 中使用 MobileIron AppConnect SDK
- windows - 如何从注册表中使用批处理文件获取数据?
- python - Python pdf 下载。pdf下载后打不开
- gpflow - 保存和检索 Gpflow 模型的参数
- javascript - SourceMap 标头在不同的主机上被忽略