2011-11-15 4 views
8

몇 가지 간단한 NN 교육을 위해 PyBrain을 사용하려고합니다. 어떻게 해야할지 모르겠지만 파일에서 교육 데이터를로드하는 것입니다. 어디서나 웹 사이트에 설명되어 있지 않습니다. 형식을 신경 쓸 필요가 없기 때문에 형식을 신경 쓸 필요는 없지만 행 단위로 행을 추가하는 대신 파일에서 수행해야합니다. 왜냐하면 수 백 개의 행이 있기 때문입니다. 여기PyBrain에서 교육 데이터를로드하는 방법은 무엇입니까?

+1

수백 개의 행은 매우 작은 세트이므로 성능에 대해 걱정할 필요가 없습니다. 하지만 PyBrain이 NumPy 배열을 받아들이지 않습니까? –

+0

모르겠다. 사용하기 시작한 것은 아니지만 NumPy 배열을 자신의 NN과 함께 사용하는 방법이 없다 :/ –

답변

21

I는 그것을 어떻게이다 신경망 6 개 입력 및 3 개 출력이이 경우

 
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) 

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

를 사용하고 당신이 가서 좋다.