python - 使用 2D 输入训练 Sci-kit Learn 神经网络
问题描述
我正在尝试使用 Python 中的 sci-kit learn 来训练神经网络以识别图像中的形状。我有一个位于边缘上的点列表,每个边缘用 x 和 y 坐标表示,格式为[x,y]
. 所以,我想使用格式的列表来训练网络[[x,y],[x,y],[x,y],[x,y],[x,y],[x,y],etc.]
。我使用以下代码尝试了此操作,但出现以下错误:
from sklearn.neural_network import MLPClassifier
X = [[[0., 0.], [0., 0.]], [[1., 1.], [1., 1.]]]
y = [0, 1]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
ValueError: Found array with dim 3. Estimator expected <= 2.
如果可能的话,有没有人对我如何解决这个问题有任何建议。根据神经网络的定义和逻辑,我不太确定这是否可能。请让我知道任何建议。谢谢!
解决方案
Scikit-learn 最多需要二维输入。您可以尝试合并列表以降低维度。我使用下面的代码使其成为二维数据,对我来说效果很好
from sklearn.neural_network import MLPClassifier
import numpy as np
X = [[[0., 0.], [0., 0.]], [[1., 1.], [1., 1.]]]
y = [0, 1]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(5, 2), random_state=1)
X_new = []
for i in X:
temp =[]
for j in i:
for k in j:
temp.append(k)
X_new.append(temp)
clf.fit(X_new,y)
循环结束时的 X_new 看起来像这样
[[0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0]]
准确性将取决于数据。试试看是否有效
推荐阅读
- django - 如果Email无法生成,如何使用`@transaction`回滚注册用户?
- ssl - python应用程序中的SSLError,证书更新后
- ruby-on-rails - 如何在应用程序级别加密 ruby on rails 中的完整路由
- powershell - Powershell - 使用 ConvertFrom-csv
- vue.js - 在 VUE SPA 中添加 Facebook Pixel 特定页面
- javascript - D3 输入自定义图像 URL 的 SVG 模式填充的更新模式
- hadoop - 如何禁用 Yarn Web UI / Rest API?
- string - 有没有一种算法可以用英文短语中的倾斜变体('和')替换撇号(')?
- javascript - 在 TypeScript 中检查 isString/Number/ObjectConstructor
- javascript - How to open an S3 pre-signed URL in another tab?