2016-05-01 4 views
0

Пока вход тот же, и код тот же, я получаю два разных результата при многократном запуске. Однако есть только два уникальных выхода. Я не знаю, какая часть кода рандомизирована, и мне сложно определить, где ошибка. Это известная ошибка в нейролабе?newff и функции поезда от neurolab python дают непоследовательные результаты для того же кода и ввода

Я приложил полный код ниже. Пожалуйста, запустите в нем около 9-10 раз, чтобы увидеть два разных выхода. Я также подключил вывод из пяти прогонов того же кода, и я вижу, что вывод ошибки имеет два разных значения в пяти прогонах. Пожалуйста помоги.

Код: --------

import neurolab as nl 
import numpy as np 

# Create train samples 

N = 200; 

## DATA 
x1 = [0]*(N+1); 

for ii in range(-N/2,N/2+1,1): 

    x1[ii+N/2] = ii; 

x1_arr = np.array(x1); 

y1 = -2+ 3*x1_arr ; 

y = [0]*len(y1); 

for ii in range(len(y1)): 

    if(y1[ii] > 15): 

     y[ii] = 1; 

l = len(y); 

x0 = [1]*l; 

x0_arr = np.array(x0); 

x_arr = np.concatenate(([x0_arr], [x1_arr]), axis=0) 

x = x1_arr; 

y_arr = np.array(y); 

size = l; 

inp = x.reshape(size,1) 

tar = y_arr.reshape(size,1) 

# Create network with 2 layers and random initialized 

net = nl.net.newff([[-N/2, N/2]],[1, 1]) 

net.trainf = nl.train.train_gd; 

# Train network 
error = net.train(inp, tar, epochs=100, show=100, goal=0.02, lr = 0.001) 

# Simulate network 
out = net.sim(inp); 

Ouput ---------

>>> 
========= RESTART: D:/Python_scripts/ML/nn_neurolab/num_detection.py ========= 
Epoch: 100; Error: 2.49617137968; 
The maximum number of train epochs is reached 
>>> 
========= RESTART: D:/Python_scripts/ML/nn_neurolab/num_detection.py ========= 
Epoch: 100; Error: 2.49617137968; 
The maximum number of train epochs is reached 
>>> 
========= RESTART: D:/Python_scripts/ML/nn_neurolab/num_detection.py ========= 
Epoch: 100; Error: 2.66289633422; 
The maximum number of train epochs is reached 
>>> 
========= RESTART: D:/Python_scripts/ML/nn_neurolab/num_detection.py ========= 
Epoch: 100; Error: 2.49617137968; 
The maximum number of train epochs is reached 
>>> 
========= RESTART: D:/Python_scripts/ML/nn_neurolab/num_detection.py ========= 
Epoch: 100; Error: 2.66289633422; 
The maximum number of train epochs is reached 

Спасибо и ура!

ответ

0

Обучение нейронной сети не является детерминированным. Он начинается с случайной инициализации весов и выполнения (жадного в природе) процесса оптимизации. Вы не можете ожидать точно таких же результатов, если не исправить все генераторы случайных чисел, используемые в nn-тренинге.