Ответы пользователя по тегу Нейронные сети
  • Проблема с обучением нейронной сети, как построить mlp?

    @qid00000000
    Мало что знаю, но информацию найду в гугле
    Если речь о мультислойном перцептроне, то можете ознакомиться с этой статьей с примерами: deeplearning.net/tutorial/mlp.html

    Если не ошибаюсь, то у вас 2 нейрона на входном слое (1 и 2 столбцы) и 1 выходной (третий столбец).

    Вполне возможно, что у вас нету скрытого слоя, что упрощает код.

    Накидал простенький пример (на основе предыдущего говнокода, где я разбирался) на основе сигмоидной модели:
    spoiler

    import numpy as np
    
    np.random.seed(1)
    
    speed_train = 0.5
    
    arr = []
    for d in open("data.txt",'r'):
        arr.append(d[:-1].split('\t'))
        
    #выбираем данные (1 и 2 столбцы)
    train_data = np.array(np.array(arr)[:,:2],dtype=float)
    #Добавляем нейрон смещения
    train_bias = np.array([[1] * len(arr)],dtype=float).T
    #Наши итоговые обучающие данные
    train = np.hstack((train_data,train_bias))
    #результат, который хотим получить
    res = np.array([np.array(arr)[:,2]],dtype=int).T
    
    def sigmoid(z):
        return 1 / (1 + np.exp(-z))
    
    def diffsigmoid(z):
        return (1 - z) * z
    
    def normal(z,nbias):
        return np.round(z-nbias)
    
    weights = np.random.random((3,1))
    
    
    
    print("начальные веса: ")
    print(weights)
    
    output = sigmoid(np.dot(train, weights))
    
    print("результат: ")
    print(output)
    
    err = res - output
    
    print("ошибка: ")
    print(err)
    
    adweights = np.dot(train.T, err * diffsigmoid(output))
    
    print("Как нужно изменить веса: ")
    print(adweights)
    
    weights += adweights
    
    print("Измененные веса: ")
    print(weights)
    
    for i in range(10000):
        output = sigmoid(np.dot(train, weights))
        err = res - output
        adweights = np.dot(train.T, speed_train * err * diffsigmoid(output))
        weights += adweights
    
        print(err.sum())
    
    print("weights: ", weights)
    
    print(normal(sigmoid(np.dot(train,weights)),0))



    Обучался по этому списку статей: https://habr.com/ru/post/417209/

    P.S. в data.txt нужно засунуть массив присланный вами.
    Ответ написан
    Комментировать