создать нейронную сеть, как это:PyBrain: переполнение встречается в квадрате, недопустимое значение встречается в многосвязной
n = FeedForwardNetwork()
inLayer = LinearLayer(43)
bias = BiasUnit()
hiddenLayer = SigmoidLayer(100)
outLayer = LinearLayer(1)
n.addInputModule(inLayer)
n.addModule(bias)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
bias_to_hidden = FullConnection(bias, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
n.addConnection(in_to_hidden)
n.addConnection(bias_to_hidden)
n.addConnection(hidden_to_out)
n.sortModules()
Я тренирую его следующим образом (я упрощая, это проходит обучение в нескольких итераций):
self.trainer = BackpropTrainer(self.neural_net, learningrate=0.8)
(...)
ds = SupervisedDataSet(self.net_input_size, 1)
ds.addSample([...], np.float64(learned_value))
(...)
self.trainer.trainOnDataset(ds)
Иногда я получаю следующие предупреждения:
(...)/Lib/python3.5/сайт-пакеты/PyBrain-0.3.1-py3.5.egg/pybr ain/supervised/trainers/backprop.py: 99: RuntimeWarning: переполнение встречается в квадрате ошибка + = 0,5 * сумма (outerr ** 2)
(...)/lib/python3.5/site-packages /PyBrain-0.3.1-py3.5.egg/pybrain/structure/modules/sigmoidlayer.py:14: RuntimeWarning: недопустимое значение, возникающее при умножении inerr [:] = outbuf * (1 - outbuf) * outerr
А потом, когда я проверяю сохраненный чистый файл, я вижу, что все веса nan
:
(...)
<FullConnection class="pybrain.structure.connections.full.FullConnection" name="FullConnection-8">
<inmod val="BiasUnit-5"/>
<outmod val="SigmoidLayer-11"/>
<Parameters>[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]</Parameters>
</FullConnection>
(...)
Вы скорость обучения слишком высок. Нормальные ставки (основанные на проблеме) составляют примерно 0,01 или 0,001, например. Если вы изучаете скорость настолько высоко, и особенно, если вы тренируете огромное количество эпох, ваши веса могут стать слишком высокими, следовательно, расходятся с значениями NaN. – daniel451
@ascenator Но проблема возникает только в начале (скажем, первые 20 или 30 эпох) - никогда позже. – Luke
@ascenator Возможно, вы правы. Я провел пару тестов с частотой обучения в 0,1 и не видел никаких предупреждений. – Luke