2011-11-15 36 views
8

我正在嘗試使用PyBrain進行一些簡單的NN培訓。我不知道該怎麼做的是從文件中加載訓練數據。這不在他們的網站任何地方解釋。我不關心格式,因爲我現在可以構建它,但我需要在文件中完成,而不是手動逐行添加,因爲我將有幾百行。如何在PyBrain中加載訓練數據?

+1

幾百行意味着你有一個非常小的集合,不應該關心性能。但是PyBrain不接受NumPy數組嗎? –

+0

我不知道,我剛剛開始使用它,但他們並沒有說如何使用NumPy陣列與他們的NN:/ –

回答

21

這是我如何做到了:

 
ds = SupervisedDataSet(6,3) 

tf = open('mycsvfile.csv','r') 

for line in tf.readlines(): 
    data = [float(x) for x in line.strip().split(',') if x != ''] 
    indata = tuple(data[:6]) 
    outdata = tuple(data[6:]) 
    ds.addSample(indata,outdata) 

n = buildNetwork(ds.indim,8,8,ds.outdim,recurrent=True) 
t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True) 
t.trainOnDataset(ds,1000) 
t.testOnData(verbose=True) 

在這種情況下,神經網絡具有6個輸入和3個輸出。 csv文件在每行上有9個值,用逗號分隔。前6個值是輸入值,後3個是輸出值。

+0

這非常好,非常感謝。你知道我如何獲得每個神經元的體重值? –

+1

您可以像這樣訪問各個圖層:n ['in']用於輸入圖層,n ['out']用於輸出或n ['hidden0']用於第一個隱藏圖層。我不知道,但我想你可以用索姆的方式訪問圖層的節點。 dir(n ['in'])應該給你一個你可以做什麼的暗示 – c0m4

+0

我找不到如何去做。我會提出一個新問題。感謝您的幫助。 –

1

你只需要使用熊貓陣列這樣

import pandas as pd 

ds = SupervisedDataSet(6,3) 

dataset = pd.read_csv('mycsvfile.csv','r', delimiter=',',skiprows=1) 
ds.setfield('input' dataset.values[:,0:6]) 
ds.setfield('target', dataset.values[:,-2:-1]) 

,你是好去。

相關問題