在单独的会话上保存模型和加载模型给出错误的预测

时间:2019-04-16 09:03:43

标签: tensorflow keras classification conv-neural-network prediction

培训结束后,在测试数据集上生成预测的准确性将达到70。

然后,我使用model.save(...)方法保存模型。

当尝试在单独的会话中加载模型时,预测约为20秒。

我可以确认我正在使用与训练后预测相同的测试数据集和相同的预处理步骤。

为了克服对不同标记器的疑问,我将标记器保存到一个tokenizer.pickle文件中,该文件将在对测试文本数据进行texts_to_sequencespad_sequences之前加载(这没有任何区别)。

我已经尝试在加载后编译模型,然后再进行预测,但是效果也不好。

model.save('model.h5') #for saving the model
------------------------------------------------------------

#Predicting after saving on a different session

trained_model = load_model('model.h5') #for loading the model in a different session.

# load tokenizer
tokenizer = Tokenizer()
with open('trained_model/tokenizer.pickle', 'rb') as handle:
  tokenizer = pickle.load(handle)

test_revs = pd.read_csv('test_dataset.csv')

test_revs.loc[:, 'rating'] = test_revs['rating'].apply(points_to_class) #converting decimal ratings to integer classes 

actual_texts = test_revs['text']
actual_ratings = test_revs['rating']

final_Y_test = to_categorical(actual_ratings, 5)

actual_text_tokens = add_doc_to_vocab(actual_texts.tolist())

sequences_test = tokenizer.texts_to_sequences(actual_text_tokens)

X_test = pad_sequences(sequences_test, maxlen=1939, padding='post')

# Predictions
pred_test = trained_model.predict(X_test)
pred_test = [np.argmax(x) for x in pred_test]

# Actual
true_test = final_Y_test
true_test = [np.argmax(x) for x in true_test]

# Find accuracies
accuracy = accuracy_score(true_test, pred_test)

print("The total accuracy is : ", accuracy)

我是TensorFlow的新手,如果有人有任何建议,请加油,加油!

0 个答案:

没有答案