[英]Getting Assertion Error when training data in neural network in python?
我有一個包含數據的文件BCICIV1bAF3.dat 。 檔案大小為20x1
這是我的代碼...
在newff函數中,我根據最小/最大確定范圍,但是我不知道如何確定其他參數。 我要多少隱藏層等
import numpy as np
import neurolab as nl
input_data = np.fromfile('BCICIV1bAF3.dat' ,dtype=float)
print(len(input_data))
transformed_input_data = [[x] for x in input_data] # added
print(len(transformed_input_data))
output_data = np.fromfile('test.dat',dtype=float)
transformed_output_data = [[x] for x in output_data] # added
net = nl.net.newff([[-21, -10.5]], [1020, 1])
error = net.train(transformed_input_data, transformed_output_data)
predicted_output = net.sim(input_data)
輸入數據:
-10.5 -91.7 -219.8 -227 -190.8 -218.7 -208.2 -205 -214.3 -202 -211.5 -211.1 -208.2 -212.4 -206 -206.7 -211.5 -210.7 -212 -215.1
輸出數據:
-5.2 -45.6 -108.6 -112 -94.5 -106.7 -99.6 -98.5 -105.4 -101.2 -106.4 -106.5 -102.4 -105.7 -104 -97.9 -99.5 -101.3 -100.6 -103.7
錯誤:
Traceback (most recent call last):
File "NNwork2.py", line 15, in <module>
error = net.train(transformed_input_data, transformed_output_data)
File "C:\Python34\lib\site-packages\neurolab\core.py", line 328, in __call__
assert target.shape[0] == input.shape[0]
AssertionError
我該如何訓練? 並模擬input_data?
如果有人可以指導...我將不勝感激。 謝謝
您是否嘗試了其他培訓方法?
我在其他答案中看到它有所幫助,因為庫中存在錯誤。
可用方法:
train_gd, train_gdm, train_gda, train_gdx, train_rprop, train_bfgs (DEFAULT), train_cg
您可以通過以下方式進行更改:
net.trainf = nl.train.train_gd
如果您可以提供輸入數據(即使更改了值),那就太好了。
我嘗試以以下格式調用輸入的訓練方法: [0,1,2,3...18,19]
,但失敗了-我不得不將輸入(和目標)更改為[[0],[1],...[18],[19]]
編輯:
您的數據格式錯誤,應將其轉換為列表列表。 我的機器上沒有scipy
,但是請嘗試以下操作:
import numpy as np
import neurolab as nl
input_data = np.fromfile('BCICIV1bAF3.dat' ,dtype=float)
transformed_input_data = [[x] for x in input_data] # added
print(len(transformed_input_data)) # changed
net = nl.net.newff([[-215.1, -10.5]], [20, 1])
error = net.train(transformed_input_data, transformed_input_data, epochs=500) # changed
編輯2:
我不會解釋什么是神經網絡(我已經有相當長時間沒有使用它們了),但是當我們想使用1個隱藏層將3D輸入轉換為2D輸出時,它看起來應該像這樣:
INPUT [3D] | HIDDEN LAYER | OUTPUT [2D]
----
| H1 |
----
----
| X1 |
----
---- ----
| H2 | | Y1 |
---- ----
----
| X2 |
----
---- ----
| H3 | | Y2 |
---- ----
----
| X3 |
----
----
| H4 |
----
每個X乘以每個H,我們計算輸出。 我們如何獲得這些H值? 它們是在training
神經網絡時由算法計算得出的。 我們指定需要多少隱藏層,並通過反復試驗得出令人滿意的解決方案。 非常重要-我們應該使用不同的數據來訓練和檢查神經網絡的輸出。
我們什么時候可以使用這個特定的網絡? 例如,根據年齡,客戶工資和特定餐廳的位置來計算在麥當勞點了多少巨無霸和薯條。 它看起來像這樣:
-----
| AGE |
-----
---- ----------
| H2 | | BIG MACS |
---- ----------
--------
| SALARY |
--------
---- -----------
| H3 | | FRIES |
---- -----------
-------
| PLACE |
-------
----
| H4 |
----
因此,可以說轉換看起來像是f([Age, Salary, Place]) = [Big Macs, Fries]
。 員工可能收集了數百萬個輸入和輸出數據記錄,以培訓我們的網絡,因此將其翻譯成python,將是輸入list
(3D),而我們希望輸出list
(2D)。 例如f([[A_1, S_1, P_1], [A_2, S_2, P_2], ... , [A_N, S_N, P_N]]) -> [[BM_1, F_1], [BM_2, F_2], ... , [BM_N, F_N]]
我們希望您的數據與之相同,但我們希望輸入和輸出均為一維,因此我們不得不將list
每個元素“包裝”到另一個list
。 輸出和模擬輸入相同-您忘記了。
predicted_output = net.sim(input_data) # this won't work! You should wrap it
但是在訓練數據上測試神經網絡只是錯誤的-您不應該那樣做
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.