настройка параметров нейронной сети - PullRequest
0 голосов
/ 31 мая 2018

Я тестирую алгоритм нейронной сети самоорганизующейся карты, чтобы выполнить регрессию модели.

Я выполнил базовый тест на Python, используя набор инструментов somoclu (очень эффективный во время вычислений).Я использую функцию x² в качестве тестовой функции.Затем я попытался создать СДЛ с 50х50 баллами.Я построил серию кривых, где вы можете увидеть исходные точки против SOM.Интерполяция меня не устраивает, потому что, если я недостаточно учусь, есть выбросы, а если я слишком много учусь, то это соответствует исходным точкам.Я хотел бы иметь точки между точками моей квадратной кривой.

Я понимаю, что в этом случае выбросы не являются "глупыми", потому что они пытаются соединить точки.Но это не может быть использовано в государстве в качестве модели регрессии.

Можете ли вы объяснить мне, где я ошибаюсь в своих настройках параметров?Или как убрать выбросы?

enter image description here

мой код:

import numpy as np
import matplotlib.pyplot as plt
import somoclu
import pandas as pd

data = pd.read_csv('10_samples.txt', sep='\t', header = 0)
data = data.as_matrix()

epoch_size = np.linspace(2,100,99)

for j in epoch_size:
    som = somoclu.Somoclu(n_columns=50, n_rows=50, data=data, kerneltype = 0, initialization = 'pca')
    som.train(epochs=int(j))

    a=som.codebook
    dim=a.shape
    som_ncodebook = [[]]
    for i in range(dim[2]):
        param = a[:,:,i]
        param = param.reshape(1,dim[0]*dim[1]) # raboute ligne à ligne 
        param = param.reshape(dim[0]*dim[1],1) # transforme en colonne
        if i == 0 :
            som_ncodebook = param
        else:
            som_ncodebook=np.append(som_ncodebook,param,axis=1)

    codebookplot = som_ncodebook


    plt.plot(codebookplot[:,0],codebookplot[:,1],'ob')
    plt.plot(data[:,0],data[:,1],'.r')
    plt.title('codebook epoch = '+str(j))
    plt.savefig('test_'+str(int(j))+'.png')
    plt.close()
...