簡體   English   中英

使用2D輸入訓練Sci-kit學習神經網絡

[英]Training Sci-kit Learn Neural Network with 2D inputs

我正在嘗試使用python中的sci-kit學習訓練神經網絡,以識別圖像中的形狀。 我有一個位於邊緣的點的列表,每個邊緣用[x,y]形式表示為x和y坐標。 因此,我想使用格式為[[x,y],[x,y],[x,y],[x,y],[x,y],[x,y],etc.]的列表來訓練網絡[[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學習最多最多需要二維輸入。 您可以嘗試合並列表以減少維度。 我使用以下代碼將其制作成二維數據,對我來說效果很好

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]]

准確性將取決於數據。 試試看,看看是否有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM