有沒有一種方法可以訓練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])
然後對我監督的數據集我加入(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%的時間.. –