2

以下は、3つの入力と1つの隠れ層と1つの出力を持つニューラルネットワークのコードです。

#Data 
ds = SupervisedDataSet(3,1)

myfile = open('my_file.csv','r')

for data in tf.myfile ():
   indata =  tuple(data[:3])
   outdata = tuple(data[3])
   ds.addSample(indata,outdata)

net = FeedForwardNetwork() 
inp = LinearLayer(3) 
h1 = SigmoidLayer(1) 
outp = LinearLayer(1)

# add modules 
net.addOutputModule(outp) 
net.addInputModule(inp) 
net.addModule(h1)

# create connections 
net.addConnection(FullConnection(inp, h1))  
net.addConnection(FullConnection(h1, outp))

# finish up 
net.sortModules()

# initialize the backprop trainer and train 
trainer = BackpropTrainer(net, ds)
trainer.trainOnDataset(ds,1000) trainer.testOnData(verbose=True)

print 'Final weights:',net.params

私の質問は、この訓練されたニューラルネットワークを使用して特定の入力に基づいて予測を行う場合、どのように行うのですか?

4

2 に答える 2

4

ドキュメントによると、activateネットワーク上のメソッドを使用して特定の入力をテストできます。入力が(1 2 3)のように見えると仮定すると、コードは次のようになります。

net.activate((1,2,3))
于 2012-01-17T01:09:01.337 に答える
0

私があなたを正しく理解していれば、あなたのデータには時間の順序があります。予測を行うために私が行うことは、トレーニングのターゲットとして次の出力を提示するために、データテーブルをシフトすることです。たとえば、この種のデータがある場合:

w1 x1 y1 z1

w2 x2 y2 z2

w3 x3 y3 z3

w4 x4 y4 z4

。。。

z2を予測したい場合は、次のようなテーブルを作成します。

w1 x1 y1 z1 | z2

w2 x2 y2 z2 | z3

w3 x3 y3 z3 | z4

。。。

次に、トレーニングのターゲットとして最後の列を提示します。もちろん、テーブルの最後で1行失われます。

ステップ間の差を追加の入力として与えることで、出力を改善することもできます(動的な効果が得られます:

w2 x2 y2 z2(w2-w1)(z2-z1)| z3

w3 x3 y3 z3(w3-w2)(z3-z2)| z4

。。。

于 2013-03-04T22:12:20.910 に答える