【发布时间】:2019-01-27 16:38:40
【问题描述】:
我训练了一个模型,它显示了所有 4 个预测并以 json 格式保存。当我尝试加载它并进行预测时,它只显示一个预测。会发生什么?
我的代码:
test = pd.read_csv('./Data/test.tsv', sep="\t")
from nltk.tokenize import word_tokenize
from nltk import FreqDist
from nltk.stem import SnowballStemmer,WordNetLemmatizer
stemmer=SnowballStemmer('english')
lemma=WordNetLemmatizer()
from string import punctuation
import re
testing = test.Phrase.apply(lambda x: x.lower())
tokenizer = Tokenizer(num_words= 10000)
X_test = tokenizer.texts_to_sequences(testing.values)
X_test = sequence.pad_sequences(X_test, maxlen=48)
json_file = open('model1.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
# Load weights into new model
loaded_model.load_weights('model1.h5')
loaded_model.compile(loss='categorical_crossentropy',
optimizer=Adam(lr=0.001),
metrics=['accuracy'])
prediction = model.predict_classes(X_test,verbose=1)
model.summary()#while training
Layer (type) Output Shape Param #
=================================================================
embedding_1 (Embedding) (None, None, 100) 1373200
_________________________________________________________________
lstm_1 (LSTM) (None, None, 64) 42240
_________________________________________________________________
lstm_2 (LSTM) (None, 32) 12416
_________________________________________________________________
dense_1 (Dense) (None, 5) 165
=================================================================
Total params: 1,428,021
Trainable params: 1,428,021
Non-trainable params: 0
print(X_test.shape)
(66292, 48)
【问题讨论】:
-
你能再解释一下吗?你的意思是它只显示一个预测?你的意思是它只对一个类进行预测,还是你的意思是它只对 X_test 中的一行(四行)进行预测?打印loaded_model。 summary() 并将其粘贴在这里也会有所帮助。还能加
X_test的形状吗? -
如果你想说它只返回一个“类”,而你的训练集是四个类?听起来您可能正在寻找建议每个班级“适合”的值的返回?
-
实际上我已经训练了情绪分析模型。它有四个类 0,1,2,3,4。当我训练我的模型并进行预测时,它可以很好地处理输出(0,1 ,2,3,4)。当我从 json 加载模型并在数据集中进行预测时,它只显示一个结果,即 2。它应该显示所有 4 类预测。
-
我在下面发布了答案。希望我正确理解您的问题。如果不是,请添加预期输出和实际输出并添加模型摘要(l
oaded_model. summary())。
标签: python keras data-science prediction