下面是我的神经网络代码,有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
我的问题是,如果您想使用这个经过训练的神经网络根据特定输入进行预测,您是如何做到的?
答案 0 :(得分:4)
根据the documentation,您可以使用网络上的activate
方法测试特定输入。假设您的输入看起来像(1 2 3),您的代码看起来像
net.activate((1,2,3))
答案 1 :(得分: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
。 。
然后,您将最后一列作为培训目标。 当然,你在桌子末尾丢了一行。
您还可以通过将步骤之间的差异作为附加输入来改善输出(为您提供动态效果:
w2 x2 y2 z2(w2-w1)(z2-z1)| Z3
w3 x3 y3 z3(w3-w2)(z3-z2)| Z4
。 。