2014-09-21 3 views
4

, поэтому я очень новичок в python и pybrain, но я нашел код в Интернете и запустил свои собственные данные. Когда я смотрю на питона оболочки все, что я вижуpybrain, что является общей ошибкой и что она нам сообщает

Total error: 0.119794950183 
Total error: 0.120078064472 
Total error: 0.119334171755 
Total error: 0.119215954708 
Total error: 0.119876371059 
Total error: 0.119621091587 
Total error: 0.119983293587 
Total error: 0.119849213731 
Total error: 0.119638354788 
Total error: 0.119574076444 
Total error: 0.119634911454 
Total error: 0.119601510912 
Total error: 0.119665039573 
Total error: 0.11944303853 
Total error: 0.11950617361 
Total error: 0.120088611572 
Total error: 0.119774446939 
Total error: 0.120016814426 
Total error: 0.119605678505 
Total error: 0.119998864263 
Total error: 0.120071472045 
Total error: 0.11973079242 
Total error: 0.119790825048 
Total error: 0.119558913137 
Total error: 0.12024443015 
Total error: 0.119525196587 
Total error: 0.12008456943 
Total error: 0.119641361568 
Total error: 0.119745707444 
Total error: 0.120065315199 

1) что это значит полная ошибка и что он делает

здесь код

from pybrain.datasets import SupervisedDataSet 
from pybrain.tools.shortcuts import buildNetwork 
from pybrain.supervised.trainers import BackpropTrainer 

from pybrain.datasets   import ClassificationDataSet 
from pybrain.utilities   import percentError 
from pybrain.tools.shortcuts  import buildNetwork 
from pybrain.supervised.trainers import BackpropTrainer 
from pybrain.structure.modules import SoftmaxLayer 

from pylab import ion, ioff, figure, draw, contourf, clf, show, hold, plot 
from scipy import diag, arange, meshgrid, where 
from numpy.random import multivariate_normal 

ds = SupervisedDataSet(2,1) 

tf = open('weather.csv','r') 

for line in tf.readlines(): 
    try: 
     data = [float(x) for x in line.strip().split(',') if x != ''] 
     indata = tuple(data[:2]) 
     outdata = tuple(data[2:]) 
     ds.addSample(indata,outdata) 
    except ValueError,e: 
      print "error",e,"on line" 

n = buildNetwork(ds.indim,8,8,ds.outdim,recurrent=True) 
t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True) 
t.trainOnDataset(ds,5000) 
t.testOnData(verbose=True) 
+0

так где ваш код? – Kasramvd

+0

Устраиваете ли вы какую-то модель с PyBrain? Например, если вы подгоняете модель регрессии, это может быть сумма квадратов ошибок, которые иногда называют общей ошибкой. Вероятно, это ошибка, которая является общей для любого класса модели, который вы пытаетесь подобрать. – ely

+0

Я добавил код –

ответ

3

Чтобы ответить на ваш вопрос «Что это говорит нам»: просмотр общей ошибки может дать вам достойное предположение о том, сможет ли ваша сеть сделать лучше, если ей будет предоставлено больше времени для обучения. Если общая ошибка сильно изменилась с одной итерации на другую, это будет признаком того, что она не остановилась до конечного состояния. Это может быть стоит посмотреть по этой ссылке:

http://pybrain.org/docs/api/supervised/trainers.html

Там вы увидите ссылку на trainEpochs и trainUntilConvergence. Тотальный страх, который вы видите, предлагает (хотя это и не доказывает), что ваша сеть сходилась в конечном состоянии и не улучшилась бы с дополнительным обучением.

Подводя итог, если totalError ваше видение выглядит довольно стабильным к тому времени, когда оно перестает тренироваться, что, в вашем случае, вы, вероятно, не должны беспокоиться об этом. Просто посмотрите на тестовый результат и решите, выполняет ли ваша сеть работу, подходящую для вашей цели.

+0

есть способ закодировать в python, чтобы найти процент правильно. например, выход может быть 1 или 0. Если ANN говорит .58 предсказано, и фактический ответ равен 1. Я хочу, чтобы python сказал, что ANN DID получает его правильно, потому что его примерно 0,50 ... так что все ANN предсказывает выше .50, а фактическое - 1, следует сказать, что ann был правильным. и наоборот. Я надеюсь в этом есть смысл. –

+1

Ну, я полагаю, вы могли бы использовать это в петле: « train() Обучить связанный модуль за одну эпоху». ... и затем проверьте все случаи, чтобы убедиться, что все готово. Но вы также можете попытаться моделировать его как классификационную сеть (с двумя выходами для двух классов, которые мы интерпретируем как 1 или 0). Вот пример этого: http://www.pybrain.org/docs/_sources/tutorial/fnn.txt – rossdavidh

+1

Спасибо вам за помощь Rossdavidh :) –

Смежные вопросы