pybrainをトレーニングして1つのニューラルネット内の複数のパターンを認識する方法はありますか?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のために例えば、私は2つの異なるパターンのいくつかの並べ替えを追加しました)、それは[100 [1-9]、100 [1-9]](2番目のパターン)を返すことを望んでいましたが、[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)
[[EDIT]]はカテゴリ変数とClassificationDataSetを追加しました。
[EDIT 1]を加え、より大きなトレーニングセットと見えないセット
私はClassificaitonDataSetを追加し、あなたが言ったようなカテゴリ変数に入れましたが、正しいパターンを特定することはできません。より多くのデータやトレーニングのエポックが必要ですか? –
はい、さらに多くのデータが必要です。私はあなたがただの例を掲示したと仮定して以来、私はそれを追加しませんでした。今すぐアップデートをご覧ください。 – rll
私は明らかに何か間違っていると思います。トレーニングデータセットに1000行を追加し、目に見えない部分に100を追加しました。それはまだ時間の100%正しいパターンを推測していない.. –