Добавить в корзинуПозвонить
Найти в Дзене

Нейросеть на фреймворке fv21net

На момент написания статьи существует много разных фремворков для таких языков программирования как С#, C++, Phyton, JAVA и т.д. В данном случае речь пойдёт о компактной на первый взгляд сборке, написанной для языка java и уже сейчас позволяет создавать не только многослойную структуру но также объединять группы нейросетей для гибкого решения более сложных задач, отличительной чертой является несложный способ создания, обучения и использования а также что немаловажно - не боится "переобучения". В составе фреймворка два класса: fv21net и fv21csv Где fv21csv дополнение вынесенное в отдельный класс, основной класс fv21net предназначен в первую очередь для создания полно связанной многослойной сети посредством конструктора, например так: fv21net network = new fv21net(new int[] {2, 2, 1}); или fv21net network = new fv21net(new int[] {784, 196, 196, 10}); 784 - входы, 196 и 196 - 1-й и 2-й скрытые слои, 10 - выходной слой fvcsv - предназначена для чтения csv-файлов обучающих датасетов, напр
 Bet U Wish U Had Me Back
Bet U Wish U Had Me Back

На момент написания статьи существует много разных фремворков для таких языков программирования как С#, C++, Phyton, JAVA и т.д.

В данном случае речь пойдёт о компактной на первый взгляд сборке, написанной для языка java и уже сейчас позволяет создавать не только многослойную структуру но также объединять группы нейросетей для гибкого решения более сложных задач, отличительной чертой является несложный способ создания, обучения и использования а также что немаловажно - не боится "переобучения". В составе фреймворка два класса: fv21net и fv21csv Где fv21csv дополнение вынесенное в отдельный класс, основной класс fv21net предназначен в первую очередь для создания полно связанной многослойной сети посредством конструктора,

например так: fv21net network = new fv21net(new int[] {2, 2, 1});

или fv21net network = new fv21net(new int[] {784, 196, 196, 10});

784 - входы, 196 и 196 - 1-й и 2-й скрытые слои, 10 - выходной слой

fvcsv - предназначена для чтения csv-файлов обучающих датасетов,

например:

fv21csv netcsvfile = new fv21csv();

float[][] data = netcsvfile.csvLoad("data-iris.csv"); // Загрузка данных не более ~ 44Мб

byte[][] data = netcsvfile.csvLoadByte("mnist_train.csv"); // Загрузка данных типа byte (для больших массивов ~> 44 Мб)

Ограничений на размер слоя и количества слоёв нет, но на скорость обучения может повлиять.

В csv файле в самом начале важно чтобы была запись типа 60000,784 где 60000 кол-во строк датасета и 784 кол-во элементов в строке, также перечисляемых через запятую без пробелов.

обучить уже созданную нейросеть можно так:

network.train(data, allYTrues, 0.0002f);

data - блок обучающих данных, allYTrues - массив данных верных ответов для обучения (двумерные массивы) data[60000][784]

60000 - кол-во элементов

784 - кол-во элементов для входного слоя


allYTrues[60000][10]

60000 - как и в предыдущем случае

10 - кол-во элементов в соответствии выходов последнего слоя

0.0002f - желаемая точность до которой следует обучать, как итог кол-во эпох может быть использовано меньше чем инициализировано.
О эпохах - используется параметр полных проходов сети.

network.epoch(20); // задаём 20 полных проходов сети это примерно 20 * на максимум весов

network.learnRate = 0.25f; // шаг обучения (диапозон рандомного шага изменения весов и смещений, смещения на половину от learnRate меньше)

Шаг немного отличается от привычного шага в классических фремворках, просто взят за основу такой вариант.
Также есть несколько примеров программ на основе
fv21net и fv21csv где можно ознакомится с принципом работы данных классов.

В примерах есть изучение кардиограмм сердечных ритмов с возможностью отличать ECG здорового человека и с отклонениями от нормали.

Также есть примеры решения логических задач с рекуррентностью (лучше изучить сами примеры для полного понимания решений папка \test-2-rnn\).

-2

Сам фреймворк время от времени обновляется по мере поступления новых решений. Архив с классами fv21net, fv21csv и примерами: Neuro-Network.zip