Нейронная сеть Помогите понять

196
08 мая 2018, 01:21

Целый день насиловал мозг пытаясь понять как работает Нейроновая сеть. Как я понял приходит данные придаем им вес и передаем в скрытые нейроны(поля) после же суммируем и передаем в активиционный Метод который выводит ответ. Каждый же раз когда пытаюсь написать простую сеть получается какая-то фигня. Вот например задачка. Меня пригласили на вечеринку. И есть три фактора основаясь на которых я делаю решения идти мне на вечеринку или нет. Первый это есть ли дождь или нет. Вторая будет ли еда или нет. Третье будут ли друзья или нет. Вот вопросы которые меня мучают: 1) как вычислить правильно вес? 2) как обучить сеть по нужному pattern?

Я же попытался решить это и получилось нечто:

public class Project {

//    factors[0] = dozhd
//    factors[1] = yeda
//    factors[2] = friends
private static double[] wes = new double[3];
private static double[] factors = new double[3];
private static double[][] pattern =
{
    {
       0,1,1,1
    },
    {
       0,0,1,1
    },
    {
       1,0,0,0
    },
    {
        1,0,1,0
    },
    {
        0,0,0,0
    }
};
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {        
    factors[0] = 1;
    factors[1] = 0;
    factors[2] = 1;
    wes[0] = 0.2;
    wes[1] = 0.3;
    wes[2] = 0.5;
    summirowaniya();
}
public static void summirowaniya(){
    double result = factors[0]*wes[0]+factors[1]*wes[1]+factors[2]*wes[2];
    for(int i = 0; i < pattern.length; i++){
        if(factors[0] == pattern[i][0] && factors[1] == pattern[i][1] && factors[2] == pattern[i][2]){
            double patSum = pattern[i][0] + pattern[i][1] + pattern[i][2];
            System.out.println(patSum/2);
            System.out.println(result);
            if(activationFunct(patSum/2+result) != pattern[i][3]){
                System.out.println(activationFunct(patSum/2-result));
            }
            else{
                System.out.println(pattern[i][0]);
            }
        }
    }
}
public static int activationFunct(double d){
    return d >= 0.5 ? 1 : 0;
}
}

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

READ ALSO
Java Developer Kit 32-bit

Java Developer Kit 32-bit

Есть проблема, я хочу скачать jdk, но у меня 32 битная версия ОСГде можно скачать эту версию jdk или на oracle просто не нашел? Слышал что можно как...

198
Java api reflections

Java api reflections

Как используя javalang

217
Удалить элемент ListView из фрагмента

Удалить элемент ListView из фрагмента

Как передать данные из фрагмента в активити для удаления элемента ListView? номер элемента мне известен (был получен во фрагменте через Bundle)Метод...

195
Private конструктор

Private конструктор

Можно ли создать объект, если конструктор имеет модификатор private? Если да, то зачем собственно конструктору нужен модификатор доступа, помогите...

212