Comments 11
Еще одинтуториал из серии "как нарисовать сову".
Раз уж вы об этом упомянули, то не хотите ли показать, как данная нейросеть рукописный текст распознает?
+2
Вопрос: Как создать нейросеть всего из 30 строк JavaScript-кода
Ответ: использовать готовую библиотеку и не считать её строки кода
+14
на выходе я получил 0 или 1
а дальше что?
дал ей рукописные каляки маляки, она выдала мне выдала текст. как?
как 0 или 1 даст мне тот самый текст
а дальше что?
дал ей рукописные каляки маляки, она выдала мне выдала текст. как?
как 0 или 1 даст мне тот самый текст
+3
Запихав 20000 раз всю таблицу решений для всех возможных входных сигналов мы получили почти точное (точное после округления) решение для тех же входных сигналов.
Можно что-то более приближенное к реальности? Чтобы сеть искала ответ для того, что мы в неё еще не запихивали?
Можно что-то более приближенное к реальности? Чтобы сеть искала ответ для того, что мы в неё еще не запихивали?
+1
— Я напишу сеть за одну строку кода
— Пишите
— start ainetwork.exe
— Пишите
— start ainetwork.exe
0
Synaptic не лучшая реализация:
— структура в виде отдельных нейронов. Гораздо удобнее рассматривать сеть слоями, отдельные нейроны не нужны. А если мы храним слоями, то удобнее веса хранить в матрицах. А если мы хотим сверточную, то на входе данные 3х мерный массив (x, y, rgb_channel), а это уже тензор. В архитектуру библиотеки заложено, что на входе вектор.
— backpropagate.
— В принципе все хорошо. Но каждый вызов этого механизма заставляет сеть обновить веса. А где же концепция батчей? Сеть должна уметь накапливать градиент для нескольких примеров которым учится, а потом перенастраивать веса. Нет, synaptic этого не умеет. В более современных реализациях бэкпроп и градиент хранит обучающий агент, то есть не сеть делает обратное распределение ошибки, а учитель, но я думаю это уже избыточно.
— При расчете градиента не умножается на производную от функции активации. Я писал реализацию backpropagate на JS читая medium.com/@14prakash/back-propagation-is-very-simple-who-made-it-complicated-97b794c97e5c, потом написал учителя для XOR который будет работать и с моей реализацией и с Synaptic. Оказалось, что у меня нужно раз в 5 больше итераций. Убрал умножение на производную функции активации и результаты совпали. Я не могу обосновать что это умножение нужно, но так написано во всех описаниях метода.
Моя черновая реализация на JS: github.com/Apache02/node-yann
Работает медленнее. В Synaptic круто используются оптимизации.
— структура в виде отдельных нейронов. Гораздо удобнее рассматривать сеть слоями, отдельные нейроны не нужны. А если мы храним слоями, то удобнее веса хранить в матрицах. А если мы хотим сверточную, то на входе данные 3х мерный массив (x, y, rgb_channel), а это уже тензор. В архитектуру библиотеки заложено, что на входе вектор.
— backpropagate.
— В принципе все хорошо. Но каждый вызов этого механизма заставляет сеть обновить веса. А где же концепция батчей? Сеть должна уметь накапливать градиент для нескольких примеров которым учится, а потом перенастраивать веса. Нет, synaptic этого не умеет. В более современных реализациях бэкпроп и градиент хранит обучающий агент, то есть не сеть делает обратное распределение ошибки, а учитель, но я думаю это уже избыточно.
— При расчете градиента не умножается на производную от функции активации. Я писал реализацию backpropagate на JS читая medium.com/@14prakash/back-propagation-is-very-simple-who-made-it-complicated-97b794c97e5c, потом написал учителя для XOR который будет работать и с моей реализацией и с Synaptic. Оказалось, что у меня нужно раз в 5 больше итераций. Убрал умножение на производную функции активации и результаты совпали. Я не могу обосновать что это умножение нужно, но так написано во всех описаниях метода.
Моя черновая реализация на JS: github.com/Apache02/node-yann
Работает медленнее. В Synaptic круто используются оптимизации.
0
То, что вы называете «уровни», традиционно в русском переводе называется «слои» (отсюда, например, термин «многослойный перцептрон»).
0
Спасибо за пример. Но каким образом сохранить результат обучения? Если, к примеру, взяться за более длительный процесс обучения не хочется при каждом запуске кода его повторять.
0
Sign up to leave a comment.
Как создать нейросеть всего из 30 строк JavaScript-кода