Syabro 81 Опубликовано: 27 мая, 2016 (изменено) Всем привет! Недавно решил проверить, что тут у вас и был огорчен - меня забанили на форуме Но сейчас не об этом! Как вы уже, наверное, поняли из названия темы, здесь будет кое-что интересное! А именно, я написал нейронную сеть. Она еще не дописана до конца, но один учитель есть, и она уже вполне может функционировать. Вот исходник: https://github.com/MrSyabro/Neuro Вот пример программы: local neuro = require("Neuro") network = neuro.Neurons:CreateNetwork (neuro.AFunctions:BipolarSigmoidFunction(), {3, 5, 5, 3}, neuro.Neurons.ACompute) inputs = { {1, 0, 1}, {0, 0, 1}} outputs = { {0, 1, 0}, {1, 1, 0}} for i = 1, 50 do print(neuro.Learning.BackPropagationLearning:RunEpoch(network, inputs, outputs)) end При вызове ф-ции Createnetwork кроме "{3, 5, 5, 3}" лучше ничего не трогать. Эта таблица определяет параметры сети. А именно слои и кол. нейронов в них. Первый слой входной, 3 нейрона - 3 входа, 2 по центру - скрытые, последний - выходной. "inputs" и "outputs" - таблицы наборов уроков (подобраны случайно). {1, 0, 1} - вход, соответствует {0, 1, 0} выходу. Далее 50 циклов уроков с выводом общей погрешности сети. Вот только... Lua не нравится огромные значения после запятой.. так что получается "-1.#IND" Изменено 27 мая, 2016 пользователем Syabro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 мая, 2016 Расскажи для непосвященных, что оно делать умеет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 27 мая, 2016 А в чём функционал? Да и не описаны функции все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 27 мая, 2016 Расскажи для непосвященных, что оно делать умеет? Тебе лекцию написать? Это сложно. Она просто в зависимости от уроков будет отвечать на определенный вход. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 мая, 2016 Тебе лекцию написать? Это сложно. Она просто в зависимости от уроков будет отвечать на определенный вход. Да, я знаю что сложно. Не надо лекцию. Просто привер ввода и поведения. Чтобы запустить и поиграться. Что оно умеет делать. Чему можно научить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 27 мая, 2016 В общем-то забыл еще одну функцию! "output = network.Compute( input )" вот так из нее после уроков можно получить ответ Да, я знаю что сложно. Не надо лекцию. Просто привер ввода и поведения. Чтобы запустить и поиграться. Что оно умеет делать. Чему можно научить. Проблема в больших значениях после запятой -.- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 27 мая, 2016 Я же объяснил, что библиотека пока-что не дописана. По этому и обширной документации нету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evgkul 571 Опубликовано: 27 мая, 2016 А потянут ли опенкомпы что-то серьёзное? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 мая, 2016 А потянут ли опенкомпы что-то серьёзное? В рамках своих лимитов на количество действий в тик / памяти. Если оптимизировать как следует, можно и что-нибудь интересное запустить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 27 мая, 2016 В рамках своих лимитов на количество действий в тик / памяти. Если оптимизировать как следует, можно и что-нибудь интересное запустить. Конекретнее. Как именно оптимизировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 мая, 2016 Конекретнее. Как именно оптимизировать? Я не про твой код. Это просто абстрактные рассуждения. А что там с большими числами, удалось метачисла присобачить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 27 мая, 2016 Я не про твой код. Это просто абстрактные рассуждения. А что там с большими числами, удалось метачисла присобачить? Нет, я не могу их сравнить друг с другом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 30 мая, 2016 Нет, я не могу их сравнить друг с другом. Хм. А ты не думал построить нейронную сеть на микроконтроллерах, так, что бы один микроконтроллер выполнял роль нейрона? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 11 июня, 2016 (изменено) А ты не думал построить нейронную сеть на микроконтроллерах, так, что бы один микроконтроллер выполнял роль нейрона? В любом случае огромные значения после запятой. Хм. local learning = require("Neuro.Learning") local neurons = require("Neuro.Neurons") local funcs = require("Neuro.ActivationFunctions") local mn = require("metanum") network = neurons:CreateNetwork (funcs:SigmoidFunction(), {3, 5, 5, 5, 3}, neurons.ACompute) nError = mn(100.01) err = mn (0.00001) inputs = { {1, 0, 1}, {0, 0, 1}} outputs = { {0, 1, 0}, {1, 1, 0}} while nError > err do nError = mn(learning.BackPropagationLearning:RunEpoch(network, inputs, outputs)) print(nError) end print("") local output = network:Compute({1, 0, 1}) for i = 1, #output do print(mn(output[i])) end Изменено 12 июня, 2016 пользователем Syabro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
HeroBrine1st 88 Опубликовано: 28 октября, 2017 А как работать с сетью? Всмысле прогонять через нее данные, что бы она на основе своей обученности выдавала новые значения. Или эта функция тоже недописана/не написана? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 29 октября, 2017 В первом посте есть пример обучения. Только тут нет выбора типа сети, нет адекватного управления дампами, представление данных совершенно костыльное. Если есть идеи, как использовать нейросети в опенкомпах, можно написать либу, с поддержкой 4 самых популярных типов сетей. Благо, в основе они очень похожи, за исключением сверточных. Обучать можно на нормальной платформе, дампы переносить в опенкомпы и использовать по назначению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro Автор темы 81 Опубликовано: 14 декабря, 2021 Там вон чувак пишет всякие миниатюры. Есть у него и нейронка на луа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах