我有一些数字分类模型,在测试数据上它可以正常工作,但是当我想对其他图像进行分类时,我遇到的问题是我的模型无法准确预测它是什么数字。请帮我改善model.predict()的性能。
我尝试了多种方式训练我的模型,下面的代码中有一个创建分类模型的函数,我实际上以多种方式训练了这个模型,[1K 我认为我的输入数据看起来并不像该数据在预测模型,但是我已经尽力使其与之相似。在这张图片(https://imgur.com/FfLGMEK)的左边是火车数据图像,而右边是我解析的图像,它们都是28x28像素,都是cv2.noramalized 对于我使用过此(https://imgur.com/RMfKtag)数独的测试图像预测,其格式已经与测试数据编号相似,但是当我使用模型预测对图像进行测试时,结果不是很好(https://imgur.com/RQFvLNE)
如您所见,预测数据还有很多不足之处。 P.S。我的手得出的预测数据结果中的('')项(我已经用''代替了该位置的数字),因为预测后cos都具有一定的值(1-9),所以现在不需要了。def load_data():
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
train_images = tf.keras.utils.normalize(train_images, axis = 1)
test_images = tf.keras.utils.normalize(test_images, axis = 1)
return (train_images, train_labels), (test_images, test_labels)
def create_model():
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation = tf.nn.softmax))
data = load_data(n=60000, k=5)
model.compile(optimizer ='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(data[0][0][:n], data[0][1][:n], epochs = e)# ive tried from 3-50 epochs
model.save(config.model_name)
def load_model():
return tf.keras.models.load_model(config.model_name)def predict(images):
try:
model = load_model()
except:
create_model()
model = load_model()
images = tf.keras.utils.normalize(images, axis = 0)
d = load_data()
plot_many_images([d[0][0][0].reshape((28,28)), images[0]],['data', 'image'])
predictions = model.predict(images)
return predictions
答案 0 :(得分:0)
“在测试数据上可以正常工作”是什么意思?如果您的意思是说它的工作原理适合训练数据,但对测试数据却没有很好的预测,则可能是您的模型在训练阶段过拟合。我建议使用培训/验证/测试方法来培训您的网络。