"Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5. - страница 73

 
yu-sha:

 PreProcessor именно для этого

Хоть 2 нейрона, хоть 100, - вид файла один и тот же 

Ну, а кому графически, так никто не мешает - пишем GUI и пользуем 

Хорошо, не будем с плеча рубить, давай по полочкам всё разложим. Не факт что для других так же, но для меня способ загрузки что я выше выложил очевиден в плане алгоритма загрузки:

прочитал  строку, инициализировал 3 объекта типа слой,

считываем первую строку, далее вызываем первый объект слой, конструируем тип слоя input, инициализируем массив нейронов в количестве 2.

считываем вторую строку, далее вызываем второй объект слой, конструируем тип слоя mlp, инициализируем массив нейронов в количестве 2.

считываем третью строку, далее вызываем второй объект слой, конструируем тип слоя mlp, инициализируем массив нейронов в количестве 1.

так как количество слоёв 3 то на третьей строке конструирование заканчиваем далее присваиваем связи.

для чего проходим по таблице и вызываем нужные нейроны сообщаем им связи если в таблице стоит 1.

А как алгоритм будет работать в xml ?

ЗЫ и главное преимущество поскольку таблица связей бинарная она прекрасно жмётся. таблица для 8 нейронов умещается в одном ulong. Правда чем дальше в лес тем толще партизаны вообще размер при большом количестве нейронов высчитывается как

X=N*N/8

где N количество нейронов,

X это количество байт.

 

Недостатки

  • Синтаксис XML избыточен.[8]
  • Размер XML-документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз).
  • Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON[4]YAMLProtocol Buffers) и особенно в форматах данных, оптимизированных для конкретного случая использования.
  • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.
  • XML содержит метаданные (об именах полей, классов, вложенности структур), и одновременно XML позиционируется как язык взаимодействия открытых систем. При передаче между системами большого количества объектов одного типа (одной структуры), передавать метаданные повторно нет смысла, хотя они содержатся в каждом экземпляре XML описания.
  • Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения.

Извиняюсь за плагиат. 
 

Я предлагаю XML в качестве стандарта хранения конфигураций, сетей, настроек, ...

И нужен он только на этапах инициализации/сохранения

В процессе рабочего хода, и тем более - обучения, ни о каком XML'e речь не идет 

her.human:
Извиняюсь за плагиат. 

Угу, но почему-то такие монстры как Oracle, Microsoft, ... скрипя зубами засовывают свои "бинарные" (как правило коммерческие) стандарты подальше и разворачиваются лицом к открытым стандартам

Вычитать 10 МБайт XML - это не проблема для современных компьютеров

Документ .docx MS Word размером 100 МБайт не пугает ?  

 

Если проблемой будет загрузить сеть из XML-файла, то обучить ее на таком оборудовании будет просто нереально - это задачи несравнимые по сложности 

 
yu-sha:

Я предлагаю XML в качестве стандарта хранения конфигураций, сетей, настроек, ...

И нужен он только на этапах инициализации/сохранения

В процессе рабочего хода, и тем более - обучения, ни о каком XML'e речь не идет 

Вот смотри твой файлик в xml имеет размер 916 байт, а в бинарном представлении даже если не жать шапку 64 байта

7 переменных шапки + 1 на таблицу = 8 ulong * 8 байт= 64

 
Urain:

Вот смотри твой файлик в xml имеет размер 916 байт, а в бинарном представлении даже если не жать шапку 64 байта

7 переменных шапки + 1 на таблицу = 8 ulong * 8 байт= 64


Чтобы открыть эту страницу форума, я прокачиваю через инет не меньше сотни килобайт

На носу 2012 год и такой единицей измерения как байт я уже давно не пользуюсь ))

P.S.

Я лишь предложил свой вариант - решать общественности 

 
yu-sha:

Я предлагаю XML в качестве стандарта хранения конфигураций, сетей, настроек, ...

И нужен он только на этапах инициализации/сохранения

В процессе рабочего хода, и тем более - обучения, ни о каком XML'e речь не идет 

Для оптимизации структуры сети необходимо (налету) менять количество нейронов и связи.

Можно ли это сделать?

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

 
her.human:

Для оптимизации структуры сети необходимо (налету) менять количество нейронов и связи.

Можно ли это сделать?

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

Это уже вопросы обучения. Потенциально - есть такая возможность, на практике ею не пользовался

Обычно в процессе обучения структура сети не меняется - меняются лишь адаптивные параметры

Ваша постановка задачи - это уже мета-уровень: обучить архитектора менять структуру сети так, чтобы полученная сеть обучалась успешнее других

 

Коды выложил "как есть" - делал для себя и, как обычно, на скорую руку, так что извините

По-хорошему, там надо все заново перебирать по косточкам после того, как будет проработан весь проект

 
yu-sha:

Чтобы открыть эту страницу форума, я прокачиваю через инет не меньше сотни килобайт

На носу 2012 год и такой единицей измерения как байт я уже давно не пользуюсь ))

P.S.

Я лишь предложил свой вариант - решать общественности 

Давайте поставим експеримент, создайте xml загрузчик сетки на 1000 нейронов по 100 связей на нейрон, и опубликуйте размер файла, структура какая вам угодно.

Просто я могу на коленках посчитать сколько займёт места мой вариант 1000*1000/8=~125 Кб, а ваш не смогу поэтому для сравнения...

Если ваш вариант будет иметь приемлемые размеры почему бы и нет.

 
Urain:

Не в том суть, память памятью, а на GPU будет сложно реализовать выкрутасы объектной логики, я вполне прекрасно представляю как реализовать НС, как сложное взаимодействие объектов внутри которых имеются функции GPU расчётов(это про микро уровни), но я не представляю как этот сложный объектный код те всю НС подсунуть GPU как несколько ФФ с разными наборами весов (макроуровень) ???

Вопрос риторический, хотя если кто представляет непрочь послушать.

Вот именно поэтому был сделан выбор в пользу CUDA, а не более распространенного OpenCL

Код на CUDA объектно-ориентированный и можно побитово передать сформированный на CPU объект

Есть нюансы, но все они решаются 

 
yu-sha:

Вот именно поэтому был сделан выбор в пользу CUDA, а не более распространенного OpenCL

Код на CUDA объектно-ориентированный и можно побитово передать сформированный на CPU объект

Есть нюансы, но все они решаются 

Я в этом не спец, верю вам, было бы хорошо.
Причина обращения: