Перейти к содержимому


Фотография

Искуственная нейронная сеть (ИНС)

искуственная нейронная сеть open computers lua

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 Оффлайн   Syabro

Syabro
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 27 Май 2016 - 17:23

Всем привет!

Недавно решил проверить, что тут у вас и был огорчен - меня забанили на форуме  :unsure: Но сейчас не об этом! Как вы уже, наверное, поняли из названия темы, здесь будет кое-что интересное! А именно, я написал нейронную сеть. Она еще не дописана до конца, но один учитель есть, и она уже вполне может функционировать. Вот исходник: 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"


Сообщение отредактировал Syabro: 27 Май 2016 - 17:17


#2 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 27 Май 2016 - 17:23

Расскажи для непосвященных, что оно делать умеет?



#3 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 27 Май 2016 - 17:24

А в чём функционал? Да и не описаны функции все.



#4 Оффлайн   Syabro

Syabro
  • Автор темы
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 27 Май 2016 - 17:25

Расскажи для непосвященных, что оно делать умеет?

Тебе лекцию написать? Это сложно. Она просто в зависимости от уроков будет отвечать на определенный вход.



#5 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 27 Май 2016 - 17:26

Тебе лекцию написать? Это сложно. Она просто в зависимости от уроков будет отвечать на определенный вход.

 

Да, я знаю что сложно. Не надо лекцию.

 

Просто привер ввода и поведения. Чтобы запустить и поиграться.

Что оно умеет делать. Чему можно научить.



#6 Оффлайн   Syabro

Syabro
  • Автор темы
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 27 Май 2016 - 17:28

В общем-то забыл еще одну функцию! "output = network.Compute( input )" вот так из нее после уроков можно получить ответ


Да, я знаю что сложно. Не надо лекцию.

 

Просто привер ввода и поведения. Чтобы запустить и поиграться.

Что оно умеет делать. Чему можно научить.

Проблема в больших значениях после запятой -.-



#7 Оффлайн   Syabro

Syabro
  • Автор темы
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 27 Май 2016 - 18:44

Я же объяснил, что библиотека пока-что не дописана. По этому и обширной документации нету. 



#8 Оффлайн   evgkul

evgkul
  • Пользователи
  • Сообщений: 369
  • Уровень сигнала: 0,64%
  • В игре: 4 час. 49 мин.

Награды

     

Отправлено 27 Май 2016 - 19:30

А потянут ли опенкомпы что-то серьёзное?

#9 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 27 Май 2016 - 19:33

А потянут ли опенкомпы что-то серьёзное?

 

В рамках своих лимитов на количество действий в тик / памяти. Если оптимизировать как следует, можно и что-нибудь интересное запустить.



#10 Оффлайн   Syabro

Syabro
  • Автор темы
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 27 Май 2016 - 19:35

В рамках своих лимитов на количество действий в тик / памяти. Если оптимизировать как следует, можно и что-нибудь интересное запустить.

Конекретнее. Как именно оптимизировать?



#11 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 27 Май 2016 - 19:37

Конекретнее. Как именно оптимизировать?

 

Я не про твой код. Это просто абстрактные рассуждения.

 

А что там с большими числами, удалось метачисла присобачить?



#12 Оффлайн   Syabro

Syabro
  • Автор темы
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 27 Май 2016 - 20:20

Я не про твой код. Это просто абстрактные рассуждения.

 

А что там с большими числами, удалось метачисла присобачить?

Нет, я не могу их сравнить друг с другом.



#13 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 30 Май 2016 - 10:00

Нет, я не могу их сравнить друг с другом.

Хм.

Прикрепленный файл  2016-05-30_09.57.01.png   180,62К   5 Количество загрузок:

 

А ты не думал построить нейронную сеть на микроконтроллерах, так, что бы один микроконтроллер выполнял роль нейрона?



#14 Оффлайн   Syabro

Syabro
  • Автор темы
  • Пользователи
  • Сообщений: 286
  • Уровень сигнала: 0,06%
  • В игре: 0 час. 28 мин.

Отправлено 11 Июнь 2016 - 18:57

А ты не думал построить нейронную сеть на микроконтроллерах, так, что бы один микроконтроллер выполнял роль нейрона?

 
В любом случае огромные значения после запятой.

 

 

Хм.

 
81ySVuqaxyM.jpg
 

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

Сообщение отредактировал Syabro: 12 Июнь 2016 - 09:18


#15 Оффлайн   HeroBrine1st

HeroBrine1st
  • Пользователи
  • Сообщений: 76
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 28 Октябрь 2017 - 20:15

А как работать с сетью? Всмысле прогонять через нее данные, что бы она на основе своей обученности выдавала новые значения. Или эта функция тоже недописана/не написана?



#16 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 19,35%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 29 Октябрь 2017 - 05:38

В первом посте есть пример обучения. Только тут нет выбора типа сети, нет адекватного управления дампами, представление данных совершенно костыльное.

Если есть идеи, как использовать нейросети в опенкомпах, можно написать либу, с поддержкой 4 самых популярных типов сетей. Благо, в основе они очень похожи, за исключением сверточных.
Обучать можно на нормальной платформе, дампы переносить в опенкомпы и использовать по назначению.





Темы с аналогичным тегами искуственная, нейронная, сеть, open, computers, lua

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных