机器学习回归模型为每个图像预测相同的值

Tom*_*hal 5 python regression machine-learning keras

我目前正在开展一个项目,该项目涉及训练回归模型、保存并加载它以使用该模型进行进一步预测。但是我遇到了问题。每次我对图像进行 model.predict 时,它都会给出相同的预测。我不完全确定问题是什么,也许是在训练阶段,或者我只是做错了什么。我正在关注本教程

所有文件都在这个github repo 中

以下是代码中的一些内容:(这部分是训练模型并保存它)

model = create_cnn(400, 400, 3, regress=True)
opt = Adam(lr=1e-3, decay=1e-3 / 200)
model.compile(loss="mean_absolute_percentage_error", optimizer=opt)

model.fit(X, Y, epochs=70, batch_size=8)
model.save("D:/statispic2/final-statispic_model.hdf5")
Run Code Online (Sandbox Code Playgroud)

下一个代码部分来自加载模型和进行预测。

model = load_model("D:/statispic2/statispic_model.hdf5")  # Loading the model
prediction = model.predict(images_ready_for_prediction) #images ready for prediction include a numpy array 
#that is loaded with the images just like I loaded them for the training stage.
print(prediction_list)
Run Code Online (Sandbox Code Playgroud)

试用后,这是模型的输出预测:

[[0.05169942]  # I gave it 5 images as parameters 
[0.05169942]
[0.05169942]
[0.05169942]
[0.05169942]]
Run Code Online (Sandbox Code Playgroud)

如果有任何不清楚的地方,或者您想查看更多代码,请告诉我。

小智 5

人们说回归和 CNN 是两种完全不同的东西,显然他们在 ML 课程中遗漏了一些基本知识。是的,它们完全不同!但不应该比较;)

CNN 是一种深度神经网络,通常因其在图像上的使用而闻名。因此它是一个解决问题的框架,可以同时解决回归和分类问题。

回归是指您预测的输出类型。所以说实话,直接比较两者是很愚蠢的。

我无法评论本节中误导您的特定人员,因为我需要特定数量的点才能这样做。

然而,回到问题。你是在保存之前还是之后遇到这个问题?如果您之前遇到过,我会尝试将您的输出值缩放到更简单的分布。如果它在您保存后发生,我会查看您的框架版本以及它们如何保存它的文档。

也可能只是图片中没有信息。


小智 0

CNN 就是深度学习。您可以使用回归模型来计算数字,例如汽车的价格。