最近 PyBrain を発見したので、試してみることにしました。しばらくテストした後、PyBrain が内部で何を行っているかの手がかりを得るために、次の問題に取り組むことにしました。
6 つの要素 (それぞれ 1 から 10) のリストが与えられた場合、リスト内に偶数が多いか、奇数が多いか、等しい部分があるかを判断します。
私は PyBrain に 50 個の解決済みのサンプルを与え、50 個の未解決のサンプルを与えました。出力は常に正解の 1/3 であり、この質問に無作為に答えるのとほぼ同じです...だから私は何か間違ったことをしていると思います。
フォーラムで、データを正規化する必要があることを読みました。私はそうしましたが、同じ結果が得られました。コードの一部とこれまでに試したことを添付します。
ds = SupervisedDataSet(6, 1)
....... Generating list of 6 elements, getting the mean and standard deviation to normalize data
for i in range(len(values)):
for j in range(6):
values[i][0][j] = (values[i][0][j]-mean[j]) / standard[j]
ds.appendLinked(values[i][0],values[i][1]) #values[i][0] contains a list of 6 elements, values[i][1] contains the answer for that list (0=EVEN, 1=SAME_PART, 2=ODD)
bias_network = buildNetwork(6,30,1, bias=True) # I've tried all the different networks on pybrain i think, but i don't really know the difference between anyone
trainer = BackpropTrainer(bias_network,ds,verbose=True)
trainer.trainEpochs(20) #I've tried 2, 20, 200 and until convergence, having same results...
for i in range (generate_rand):
......Generating new list l of elements
output = bias_network.activate(l)
私は AI とその使用法を学び始めたばかりなので、ここで信じられないほど間違ったことをしてしまったらすみません。