NameError:名称“分类器”未定义

时间:2018-09-01 07:31:34

标签: python-3.x tensorflow machine-learning keras prediction

我是机器学习的新手。我试图对数据集进行预测,但是当我运行程序时,它给了我以下错误:

NameError: name 'classifier' is not defined 

这是我的代码:

import numpy as np
from keras.preprocessing import image
test_image = image.load_img('dataset/single_prediction/1.jpg', target_size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
training_set.class_indices
if result[0][0] == 1:
  prediction = 'nsfw'
else:
  prediction = 'sfw'

2 个答案:

答案 0 :(得分:0)

您正在使用classifier进行预测。但是classifier未定义。那就是错误所在。

要解决此问题,您必须具有已保存的keras模型,该模型已针对您的特定问题进行了培训。如果有的话,您可以加载它并进行预测。

下面的代码显示了如何加载模型。

from keras.models import load_model

classifier = load_model('path_to_your_model')

在加载模型后,您可以像使用模型那样进行预测。

import numpy as np
from keras.preprocessing import image
test_image = image.load_img('dataset/single_prediction/1.jpg', target_size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
training_set.class_indices
if result[0][0] == 1:
  prediction = 'nsfw'
else:
  prediction = 'sfw'

答案 1 :(得分:0)

在开始将图层添加到模型中之前,必须指定“空”版本。

您只需在代码上方添加以下行即可解决此错误:

import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.models import load_model

#empty model
classifier = Sequential()

然后继续指定:

#add layers, start with hidden layer and first deep layer
classifier.add(Dense(output_dim=15, init="uniform", activation='relu',input_dim = 15))
classifier.add(Dropout(rate=0.1))