Pull to refresh

Comments 15

Респект за реализацию с нуля - это как раз то чего не хватает. Практически во всех туториалах привыкли юзать pytorch или tensorflow без объяснения как нейросети устроены изнутри и это печально.

Надо побольше подобного рода статей.

Вот тут посмотрите: https://programforyou.ru/poleznoe/convolutional-network-from-scratch-part-zero-introduction


Но только это на CPU. Чтобы на GPU перенести вам понадобится заиметь оптимизированное (блочное с кэшированием) умножение тензоров, потому как обычное распараллеленное умножение "в лоб" работает на порядок медленнее этого самого оптимизированного. А потом научиться делать свёртки с помощью этого самого умножения.
Вот так: https://da-nie.livejournal.com/6864.html
Поскольку до выкладывания на github моя сеть ещё не доросла, то вот вам она в архиве.


Вот проект на С++


Там в папке cuda/netmodel как раз три сети — сортировщик, основа GAN и сама GAN. Увы, шаги свёртки и обратной свёртки допустимы в слоях только 1 (сама же функция для свёртки работает с любым шагом). Причина в обратной свёртке — там шаг трактуется в пространстве выходного тензора и вот с этим у меня пока проблема. А так как в обучении они парно связаны (туда<->обратно), то отсюда и следует запрет на шаг, отличный от 1.

Спасибо за полезные ссылки. Честно говоря, я сам хочу сделать большую (лонгрид) статью/курс на хабре по реализации ml-алгоритмов с нуля т.к. те, что есть в интернете, либо неправильные либо неполные.

Хорошо, что есть люди вроде вас, которые бесплатно помогают другим.

Да, спасибо, после завершения цикла статей про эту реализацию(работающую только на одном ядре процессора), я собираюсь сделать несколько статей про переход к более оптимизированным вариантам

оо, крутяк. Я делал похожим образом с нуля random forest с помощью joblib (библиотека для многопроцессорности и многопоточности) для ускорения вычислений.

Эх, коллега. Всё наоборот. Не должно быть никакого респекта за "реализацию с нуля до 0,1". Количество статей дилетантского уровня "давайте сделаем первый шажок в программирование - включим компьютер вместе, а дальше и я сам не знаю" настолько зашкаливает в Сети, что поощрять такое просто недопустимо.
Вот если бы человек разобрался, к примеру, как свёрточные ядра обучаются и с нуля написал код с примерами, а затем описал бы всё в подробном туториале - тогда была бы "респект и уважуха".
Да и ничего на самом-то деле в статье не раскрывается...
P.S. Надеюсь автор её понимает, что в данном случае - "ничего личного, просто трезвая оценка положения в инфорпространстве и представленного материала".

Спасибо за комментарий, это цикл статей и до сверточных нейросетей, тензорфлоу и оптимизации мы еще дойдем

"С нуля" есть прекрасная пара статей, довольно старая, но ни капли не устаревшая:

https://habr.com/ru/articles/312450/ и https://habr.com/ru/articles/313216/

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

"Побольше статей" - спорное утверждение, ибо, "для начинающих" там много не напишешь, а если все сейчас ринутся писать, то это будет туева хуча однотипных статей, и, хоть и полезность одной такой статьи будет неплохой, но суммарная полезность всех таких статей не вырастет ни капли.

Многие скажут, что бесполезно вникать в нюансы, когда есть готовые решения, но когда-то сам пытался реализовать на плюсах простейшую нейросеть без использования готовых библиотек, и это огромное удовольствие, когда твой флаппи бёрд после десятка глупых прыжков начинает набирать по полторы тысячи очков за игровую сессию. А подобные статьи как раз помогают "разжевать" тему, вместо того, чтоб объяснить какие две строчки прописать, чтоб "создать" свою нейросеть.

Упс AttributeError: 'NeuralNetwork' object has no attribute 'plot_weights_graph'

Опечатка после рефакторинга, это в какой строке?

/должно быть не .plot_weights_graph, а .show/

Маленькая парвка:

на выходом = на выходе?

Или на выходном слое?

Sign up to leave a comment.

Articles