2014-04-28 2 views
2

newff 출력이 [-1, 1] 범위로 고정되어 있고 범위 작동 범위 밖에서 출력해야하는 방법을 테스트하기 위해 다음을 수행합니다. 때때로 (-40 정도) 권리 그러나 때때로 (가 -70) 잘못,Neurolab newff 출력 범위와 네트워크의 다른 결과

import neurolab as nl 
import numpy as np 

# Create train samples 
x = np.linspace(-7, 7, 20) 
y = x * 10 

size = len(x) 

inp = x.reshape(size,1) 
tar = y.reshape(size,1) 

norm_inp = nl.tool.Norm(inp) 
inp = norm_inp(inp) 

norm_tar = nl.tool.Norm(tar) 
tar = norm_tar(tar) 

# Create network with 2 layers and random initialized 
# as I normalized the inp, the input range is set to [0, 1] (BTW, I don't know how 
#to norm it to [-1, 1]) 
net = nl.net.newff([[0, 1]],[5, 1]) 

# Train network 
error = net.train(inp, tar, epochs=500, show=100, goal=0.02) 

# Simulate network 
out = norm_tar.renorm(net.sim([[ 0.21052632 ]])) 

print "final output:-----------------" 
print out 

inp before norm 
[[-7.  ] 
[-6.26315789] 
[-5.52631579] 
[-4.78947368] 
[-4.05263158] 
[-3.31578947] 
[-2.57894737] 
[-1.84210526] 
[-1.10526316] 
[-0.36842105] 
[ 0.36842105] 
[ 1.10526316] 
[ 1.84210526] 
[ 2.57894737] 
[ 3.31578947] 
[ 4.05263158] 
[ 4.78947368] 
[ 5.52631579] 
[ 6.26315789] 
[ 7.  ]] 

tar before norm 
[[-70.  ] 
[-62.63157895] 
[-55.26315789] 
[-47.89473684] 
[-40.52631579] 
[-33.15789474] 
[-25.78947368] 
[-18.42105263] 
[-11.05263158] 
[ -3.68421053] 
[ 3.68421053] 
[ 11.05263158] 
[ 18.42105263] 
[ 25.78947368] 
[ 33.15789474] 
[ 40.52631579] 
[ 47.89473684] 
[ 55.26315789] 
[ 62.63157895] 
[ 70.  ]] 

나는 밖으로 입력 0.21052632 주변에 -40 renorm 이후가 될 것으로 예상했지만 결과는 반복되지 않습니다. 훈련 결과가 안정되지 않고 범위 [-1, 1]

답변

1

는 "newff"다른 훈련 방법이 있습니다를 출력 값을 생산합니다 윈을 훈련하는 더 나은 방법이 왜 궁금

. library에 따르면, 당신은 7 개의 다른 기차 기능을 사용할 수 있습니다. 다른 기차 기능을 사용해보십시오. 변경 네트워크 속성에 대한 예는 Here입니다. 다음은 그 예입니다.

import neurolab as nl 
# Create 
net = nl.net.newff([[-1, 1]], [5, 1]) 
# Default train function (train_gdx) 
print net.trainf # Trainer(TrainGDX) 
# Change train function 
net.trainf = nl.train.train_bfgs 
+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – apaul

+0

@ apaul34208을 생각해보십시오. 질문에 답하는 것은 이번이 처음입니다. 나는 그것에 약간의 변화를 주었다. –