2012-01-16 3 views
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

Согласно the documentation, вы можете протестировать определенные входы с помощью метода activate в своей сети. Предположим, что ваш вход выглядит что-то вроде (1 2 3) код будет выглядеть

net.activate((1,2,3)) 
+0

чтобы быть честным, я должен был смотреть на их документация на некоторое время, прежде чем это станет очевидным. Это действительно расстраивает. – tjarratt

+0

Спасибо.Но быстрый вопрос, если я выполню свой код в два раза для тех же 3-х входов, я получаю тот же результат? Почему бы и нет? – GiannisIordanou

+0

Я не уверен, что понимаю. Если вы запускаете один и тот же ввод через несколько раз, вы должны получить тот же результат * большую часть времени, но не все время. Ожидаете ли вы получить тот же результат в 100% случаев или для того, чтобы результат изменился чаще? В любом случае, это будет зависеть от того, как вы обучили сеть. – tjarratt

0

Если я вас правильно понимаю, что ваши данные имеет временной порядок. То, что я делаю для составления прогноза, - это переместить таблицу данных, чтобы представить следующий результат в качестве цели для обучения. Например, если у вас есть такие данные:

w1 x1 y1 z1

ш2 х2 у2 z2

W3 х3 у3 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