【发布时间】:2019-11-05 05:17:43
【问题描述】:
我正在尝试使用 scikit-learn 构建一个简单的图像分类器。我希望避免在训练前调整和转换每张图像的大小。
问题
鉴于两个不同格式和大小的不同图像(1.jpg 和 2.png),我如何在拟合模型时避免 ValueError?
- 我有一个例子,我只使用
1.jpg进行训练,它非常适合。 - 我有另一个例子,我同时使用
1.jpg和2.png进行训练,并生成了ValueError。
这个例子很适合:
import numpy as np
from sklearn import svm
import matplotlib.image as mpimg
target = [1, 2]
images = np.array([
# target 1
[mpimg.imread('./1.jpg'), mpimg.imread('./1.jpg')],
# target 2
[mpimg.imread('./1.jpg'), mpimg.imread('./1.jpg')],
])
n_samples = len(images)
data = images.reshape((n_samples, -1))
model = svm.SVC()
model.fit(data, target)
此示例将引发值错误。
观察目标2中不同的2.png图像。
import numpy as np
from sklearn import svm
import matplotlib.image as mpimg
target = [1, 2]
images = np.array([
# target 1
[mpimg.imread('./1.jpg'), mpimg.imread('./1.jpg')],
# target 2
[mpimg.imread('./2.png'), mpimg.imread('./1.jpg')],
])
n_samples = len(images)
data = images.reshape((n_samples, -1))
model = svm.SVC()
model.fit(data, target)
# ValueError: setting an array element with a sequence.
1.jpg
2.png
【问题讨论】:
-
是的,错误是合理的。您不能在不同维度上进行训练,然后在其他维度上进行测试/预测。你试过缩小尺寸吗?您可以将所有图像缩小到相同大小,然后进行任何机器学习
-
如果我在这里发布我的 stackexchange 问题的链接会不合适吗?
-
如果能简化解决这个问题就好了!谢谢。
-
好的,所以我不发帖,因为它属于文本分类,它更像是询问建议之类的问题。 :)
标签: image numpy matplotlib scikit-learn classification