하나의 신경망에서 여러 가지 패턴을 인식하도록 pybrain을 교육하는 방법이 있습니까? 예를 들어, 나는 두 개의 서로 다른 패턴의 여러 가지 순열을 추가했습니다 :Pybrain을 이용한 패턴 인식
첫 번째 패턴 :
(200[1-9], 200[1-9]),(400[1-9],400[1-9])
두 번째 패턴 :
(900[1-9], 900[1-9]),(100[1-9],100[1-9])
그런 다음 내 자율 데이터 세트에 대한 I 추가 (90002, 90009), 나는 [100 [1-9], 100 [1-9]] (두 번째 패턴)을 반환하지만 [25084, 25084]를 반환하기를 바랬다. 모든 입력에 주어진 최상의 가치를 찾으려는 노력을하고 있지만 그것이 의미가있는 경우 집합 내에서 특정 패턴을 구별하려고합니다.
이 난에서 일하고 예이다
Request for example: Recurrent neural network for predicting next value in a sequence
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.datasets import SupervisedDataSet,UnsupervisedDataSet
from pybrain.structure import LinearLayer
from pybrain.datasets import ClassificationDataSet
from pybrain.structure.modules.sigmoidlayer import SigmoidLayer
import random
ds = ClassificationDataSet(2, 1)
tng_dataset_size = 1000
unseen_dataset_size = 100
print 'training dataset size is ', tng_dataset_size
print 'unseen dataset size is ', unseen_dataset_size
print 'adding data..'
for x in range(tng_dataset_size):
rand1 = random.randint(1,9)
rand2 = random.randint(1,9)
pattern_one_0 = int('2000'+str(rand1))
pattern_one_1 = int('2000'+str(rand2))
pattern_two_0 = int('9000'+str(rand1))
pattern_two_1 = int('9000'+str(rand2))
ds.addSample((pattern_one_0,pattern_one_1),(0))#pattern 1, maps to 0
ds.addSample((pattern_two_0,pattern_two_1),(1))#pattern 2, maps to 1
unsupervised_results = []
net = buildNetwork(2, 1, 1, outclass=LinearLayer,bias=True, recurrent=True)
print 'training ...'
trainer = BackpropTrainer(net, ds)
trainer.trainEpochs(500)
ts = UnsupervisedDataSet(2,)
print 'adding pattern 2 to unseen data'
for x in xrange(unseen_dataset_size):
pattern_two_0 = int('9000'+str(rand1))
pattern_two_1 = int('9000'+str(rand1))
ts.addSample((pattern_two_0, pattern_two_1))#adding first part of pattern 2 to unseen data
a = [int(i) for i in net.activateOnDataset(ts)[0]]#should map to 1
unsupervised_results.append(a[0])
print 'total hits for pattern 1 ', unsupervised_results.count(0)
print 'total hits for pattern 2 ', unsupervised_results.count(1)
[[편집] 추가 범주 변수를 ClassificationDataSet.
는 [편집] 1] 첨가 큰 트레이닝 세트 보이지 세트
ClassificaitonDataSet을 추가하고 올바른 패턴을 식별하지 못했지만 범주 형 변수를 넣었습니다. 더 많은 데이터 또는 교육 신기원이 필요합니까? –
네, 더 많은 데이터가 필요합니다. 나는 당신이 단지 예제를 게시했다고 가정 한 이후로 추가하지 않았습니다. 지금 업데이트를 참조하십시오. – rll
나는 분명히 뭔가 잘못하고있다. 훈련 데이터 세트에 1000 개의 행을 추가하고 보이지 않는 곳에 100 개를 추가했다. 그 시간의 정확한 패턴을 100 % 추측하지 못했습니다 .. –