2012-01-16 3 views
2

다음은 3 개 입력과 1 개 숨겨진 레이어 1 개 출력, 신경 네트워크 내 코드입니다 :주어진 입력에 대해 훈련 된 네트워크로부터 어떻게 예측 (예측)합니까?

#Data 
ds = SupervisedDataSet(3,1) 

myfile = open('my_file.csv','r') 

for data in tf.myfile(): 
    indata = tuple(data[:3]) 
    outdata = tuple(data[3]) 
    ds.addSample(indata,outdata) 

net = FeedForwardNetwork() 
inp = LinearLayer(3) 
h1 = SigmoidLayer(1) 
outp = LinearLayer(1) 

# add modules 
net.addOutputModule(outp) 
net.addInputModule(inp) 
net.addModule(h1) 

# create connections 
net.addConnection(FullConnection(inp, h1)) 
net.addConnection(FullConnection(h1, outp)) 

# finish up 
net.sortModules() 

# initialize the backprop trainer and train 
trainer = BackpropTrainer(net, ds) 
trainer.trainOnDataset(ds,1000) trainer.testOnData(verbose=True) 

print 'Final weights:',net.params 

특정 입력에 따라 예측을하기 위해이 훈련 신경망을 사용하려면 내 질문입니다 , 어떻게하니?

답변

4

the documentation에 따르면 네트워크에서 activate 메서드를 사용하여 특정 입력을 테스트 할 수 있습니다. 귀하의 의견을 가정하면 데이터가 시간 순서가, 내가 제대로 이해하는 경우 (1 2 3) 코드 같은 것을

net.activate((1,2,3)) 
+0

Z4

솔직히 말해서, 나는보고 있었다 자신의 그 전에 문서가 잠시 동안 분명해졌습니다. 정말 실망 스럽습니다. – tjarratt

+0

감사합니다. 동일한 특정 3 개의 입력에 대해 특정 코드를 두 번 실행하면 빠른 결과를 얻을 수 있습니까? – GiannisIordanou

+0

나는 이해하고 있는지 잘 모르겠다. 동일한 입력을 여러 번 실행하면 동일한 결과가 * 대부분의 시간에 표시되지만 모든 시간에 표시되는 것은 아닙니다. 동일한 결과를 100 % 얻거나 결과가 더 자주 변하기를 기대합니까? 어느 쪽이든 그것은 네트워크 훈련 방법에 달려 있습니다. – tjarratt

0

과 같을 것이다 보인다. 예측을하기 위해 수행하는 작업은 데이터 테이블을 이동하여 다음 출력을 교육의 목표로 제시하는 것입니다. 예를 들어 에는 이러한 종류의 데이터가있는 경우 :

W1의 X1의 Y1의 Z1

W2 × 2의 Y2의 Z2

W3의 X3의 Y3의 Z3

W4의 X4의 Y4의 Z4

을 . . . |

W1 X1의 Y1의 Z1 :

하고 Z2 예측하려면, 당신은 같은 테이블을 구성 z2

w2 x2 y2 z2 | z3

w3 x3 y3 z3 | z4

. . .

그런 다음 마지막 열을 훈련 대상으로 제시하십시오. 물론 테이블 끝에서 한 줄을 잃게됩니다.

또한하면 역학적 효과를 준다 (추가 입력으로서 단계의 차이를 제공하여, 출력을 향상시킬 수

:

W2 × 2의 Y2의 Z2를 (W2-W1) (Z2-Z1) | Z3

W3 X3의 무료 온라인 Z3 (W3-W2) (Z3-Z2) |...