【发布时间】:2021-06-17 23:31:21
【问题描述】:
我正在尝试训练模型在一行灰度像素之间进行选择。
from sklearn.neural_network import MLPRegressor
X = [[1, 2, 3], [2, 1, 3], [2, 1, 2]]
y = [0, 1, 2]
model = MLPRegressor(hidden_layer_sizes=(10, 10), solver="lbfgs", activation="relu")
model.fit(X, y)
其中 X 是我想用来训练模型的行列表,y 是模型应该输出的预期像素索引。 (示例值)
img = color.rgb2gray(img)
model.predict(img[0])
img[0] 的打印位置
[0.61176471 0.46045752 0.2627451 ]
在控制台中。这是预期的。
但预测失败:
ValueError:预期的二维数组,得到一维数组:array=[0.61176471 0.46045752 0.2627451]。如果您的数据具有单一特征,或者使用 array.reshape(-1, 1) 重塑您的数据 array.reshape(1, -1) 如果它包含单个样本。
一旦用 :
重塑line = (np.array(img[0])).reshape(1,-1)
输出:
[[0.61176471 0.46045752 0.2627451 ]]
和model.predict(line) 输出
[1.79295143]
我无法解释,因为我正在寻找一个索引概率数组,例如 [0.998, 0.001, 0.001]
在此之前,我使用的 RGB 像素线应该看起来像 [[[R][G][B]],[[R][G][B]],[[R][G ][B]]] 其中字母是介于 0 和 1 之间的值 该模型正在输出一系列概率。 这让我现在认为它没有按预期工作,并且很可能输出与颜色而不是像素相关的概率。
我做错了什么?
【问题讨论】:
-
您在此处显示的只是灰度图像的 img[0](1 通道而不是 3 通道),因此对我来说在这里有 1 个单一预测看起来很合理。您是否尝试过使用 img 而不是 img[0] 进行训练?
标签: python scikit-learn