Нейронные сети на C++ - поймет даже твоя бабушка.
ฝัง
- เผยแพร่เมื่อ 25 ส.ค. 2024
- Стань моим Patron и видео будут выходить чаще: / proger20
Ссылка Google Drive на данный проект:
drive.google.c...
Очень прошу подписаться на канал и оценить данный ролик лайком. Свои предложения по качеству контента и идеи для роликов можете оставлять в комментариях. Все прочитаю.
Связаться можно со мной через ВКонтакте:
altus.i...
Посмотрел мой дедушка и ничего не понял, но ему простительно он же не бабушка.
Logika!
АХАХАХАХАХАХАХ
Посмотрел студент первого курса, изучавший программирование на C++, ничего не понял, не бабушка же)
@@Vadim-pp6hg ну так попроси свою бабушку, она тебе все объяснит.
Круто бы было, если бы нейроная сеть сама бы писала обучающее видео для других.
Тогда ютуберы будут не нужны - их будет заменять 1 дата-центр
люди несовершенны, так будет лучше
Хахахахахахаха
@@stalker32041 и ещё один, чтобы смотреть..
Уже есть Это ChatGPT
Неплохо. С++ это зверь.
Бабушка поняла...
А я нет :/
Надеюсь бабушка объяснит :)
10:54 "в данном случае стоит learning rate = 1, но я поставлю 0.5"
отдельное спасибо за этот момент, мне дейcтвительно было очень интересно, почему программа не хотела обучаться в многопотоке)
Программма очень хороша, и все понятно)
ошибка кстати в описании метода
void WeightsUpdater(int start, int stop, int LayerNum, int lr)
lr теперь везьде 0.5, а здесь он остался целочисленным))
Класс, мне очень понравилось^.^
Бабушка юзала Алгол и Фортран, тут несколько другое.
Чего так мало просмотров и лайков? Думал будет написано 20 тис. хотябы.! С меня лайк, подписка, годная тема)
Огромное спасибо, Но мало просмотров потому, что я каналом сейчас не занимаюсь ... Ленивый я
Вот и дождался 20к
@@Proger20 хех)
@@Proger20 так, стоп, а где?
Крутое видео. Делай ещё видео. Очень классно. Спасибо большое.
Большое спасибо
Приятно смотреть и понимать всё не вникая. Бро ты запарился, сделал всё сложное простым. Буду изучать твой код более детально чтоб учиться кодить
Ты крут!!! Спасибо!!! Правда понял после 4 просмотра, и то остались вопросы, но я не бабушка
Большое спасибо, за такие понятные и интересные ролики!
Автор молодец. Доступно объяснил суть нейросеток. Но к тебе будет одно пожелание. Чтобы не было таких затупов с программой, веса удобнее хранить в какой-либо коллекции (по типу вектора из векторов double) или двумерного массива типа double, а данную коллекцию считывать из бинарного файла. Так будет шустрее работать. А так видео классное. Однозначно лайк
Нейронные сети на C++ - поймет даже твоя бабушка----надо бы продолжить
Куда идём мы с Пятачком - Большой-большой секрет!
Очень классный ролик) Это наверное первый ролик по плюсам где есть код в описании. Но лучше вместо double** использовать std::vector, при использовании указателей могут возникнуть проблемы с памятью, которые обычно очень тяжело найти, особенно в большом коде. Кстати в Гугл драйве нет скрипта на паскале, или я его просто не нашёл. Если он там есть напите пожалуйста путь к нему, или разместите его.
Недавно решил сделать искуственный интелект!) подпишусь,здесь есть что посмотреть!)
Ну как? Нормально?
Я не знал что моя бабушка гений с++
Ты просто лучший, обожаю тебя, очеееень понятно, никогда не меняйся) Удачи!!!1
Спасибо большое
@@Proger20 А ты можешь добавить еще и графический интерфейс? Я думаю тема визуализации была бы актуальной) И в принципе нейронку сделать с графическим интерфейсом, чтобы рисовать символы можно было бы прямо в приложении
@@playtopgames3261 в принципе мог бы, на надо изучать технологию))
Эта нейронная сеть обучалась на процесоре, а можно на С++ обучать нейронную сеть на видеокарте??? Подскажите кто знает...
Было бы хорошо сделать в качестве уроков. Ещё будут ролики по нейросетям на С++?
Я делаю шашки, но так я слишком много занимался другими делами, шашки ещё не готовы
@@Proger20 с нетерпением будем ждать. спасибо.
@@Proger20 Ну как там шашки? Очень хотелось бы увидеть реализацию как нейросеть на С++ справится с такой задачей! Я в 2006 писал консольный Морской бой и на MFC игру "Балда". Появилась идея процедурные алгоритмы переписать на основе нейросети. Но тема о нейросетях для меня пока еще новая.
@@finmagnat сейчас маюсь с OpenCL , а именно с кернелом умножения матриц. Та у меня ещё и в роли видеокарты Vega 8 от Ryzen 3 , мне бы норм видяху, уже давно бы обучал нейронки в разы быстрее... А шашки будут как только смогу быстро умножать матрицы
Бабушка то поймёт, если только она кандидат технических наук! )
норм обучил нейросеть на 52 картинках
Люблю С++
Он же лучший
О, отличная музыка!
Не лучше ли было бы использовать std::vector вместо хранения указателей, размеров и динамической возни с памятью?
Хорошо, добавили ссылку на исходник.
Автор: напишем нейронку на плюсах
Тот же автор: юзает дефолтные указатели, не успользует ооп
Беру свои слова обратно, тут не до ооп. Тут дизайн кода говно...
#Warning!
#Analysis-bot.log: hater found!
@@Proger20 чистая критика по делу, никакого хейта
@@DoGGy1110 ну вообще-то ООП присутствует...
@@DoGGy1110 и вообще я просто показал людям идею... Как это можно реализовать...
чел на гение, сидит говорит: ну эта короче форвардфид и это короче запускает процесс форвардфид
Пасаны ваще ребята, четко, умеете, могёте. Всё понятно! СПС!!!
2:44 сигмоида = 1 / (1+ е^-x) => производная сигмоиды = e^-x / (1 + e^-x)^2
Как моя бабушка это поймет, если автор тупо вставляет какую-то функцию и не объясняет принципов её работы?
Было бы лучше если бы автор писал функцию в реальном времени, объясняя что пишет и зачем.
Хоть моя бабушка и недовольна, я всё же поставлю лайк за проделанную работу )
На это ушло бы 2 года
@@Proger20 всё же, это необходимо, ибо зритель также может просто скопировать код, посмотреть видос как работает нейросеть и всё, но ничему не научится и ничего не поймёт.
Пишите в комментариях, о чем вы хотели бы видео)!
блин, чел можешь запилить как ты делаешь бота для пвп в майнкрафте ( конечно нужно на питоне) ))
@@minigun-js1gq Сори, в майн не играю, может как-нибудь потом подумаю
@@Proger20 был бы благодарен за такой ТуТоРеАл
го гайд по войду керри. мидас еще тарят?
спасибо ! очень доходчиво , наглядно . и музыка фоном классная )
Супер!
Если Вы хотите помочь развитию канала, то можете подписать на Канал, а также стать моим Патроном:
www.patreon.com/proger20
Ссылка на мою группу в ВКонтакте: vk.com/club201610586
Буду безумно благодарен.
Вопрос как у тебя не происходит "паралич сети", ну или по другому насыщение сигмоиды?
у меня при 28x28 изображении из набора MNIST, уже на втором слое эта штука происходит, значения всех нейронов последующих слоев, обращаются в 1
и при расчете ошибки, там производная в 0 обращается потому что значения нейронов равны 1
и в итоге производная равна 0, а знач веса никак не изменяются
Помогите, она не хочет учиться. Я полога. не туда запихнул текставик с обучалкой, подскажитев какой папке он должен быть
Я показал это видео своей бабушке, но она ничего не поняла...
привет, решил переделать твою прогу, только не под буквы, а рандомные пшики краски , эпохи длятся вечно , то есть там все время шанс на 0, можешь подсказать почему у тебя в инт сайзе в видео одни цифры, а на гугл диске другие , и что означает цифра 32 в инт сайзе в мейне
бэк пропагейшен это единственное вообще что стоит посмотреть, как реализовано на плюсах, что ж ты её пропустил то
Вечный вопрос:структура или класс?
насколько я знаю, классы и структуры между собой ничем не отличаются , кроме как тем, что структуры по умолчанию public, а классы - private
Привет, код на диске от другого проекта(nn2), больше не соответствует представленному на видео
За безликого лойс
;)
Спасибо за разбор, можешь сказать как нам определять сколько нейронов в слою и количество слоев и как подбирать функцию активации?
Это похоже на рандом
Но есть и правила
можете объяснить как это на цифры переобучить?
у тебя 4096 входных нейронов - для изображений 256x256. В MNIST в это время разрешение одной буквы - 28x28, то есть только 784 входа. Созданная в течении видео нейросеть видит буквы более четкими.
Возможно вы видели часть кода, которая не должна была попасть в ролик... вообще код был изначально написан для 28*28. Скорее всего я просто изменил и забыл вернуть.
Кстати, корень из 4096 = 64 , а не 256))
@@Proger20 чуток напутал...
Я учу C++, и кажется, понимаю каждую функцию, но то что ты пишешь я просто не понимаю. Наверно это из-за того что я учил C++, а не нейронные сети. Я просто хотел сделать каку-то фигнюшку, по типу понимания компьютером руки человека(Она же может быть любой: Чёрной, белой)
Это нормально. Алгоритм работы неясен. Автор лучше бы блок схему начертил, принцип работы. Это главное. Код мы уж сами напишем. Это самое простое.
в строке 248 ошибка - скорость обучения lr задается как int, а не double. Отсюда у меня ничего не считалось. В загруженном проекте тоже самое. Не оч.понятна логика выбора начальных случайных величин весов. Почему так? Я устанавливаю в диапазоне -0.3 .. 0.3 - (double)((rand()%7 + (-3))/10.) и у меня сеть обучается в разы быстрее.
Ну чел.. я хз.. всегда в своих нейросетях использовал learning rate типа данных float. Не знаю, почему там int. А задавать значения можно в принципе любого диапазона.
Концепция впринципе понятна, но как это самому реализовать ?
Извините, не понял вопроса. Вроде же и так показано как это запрограммировать
Спасибо
Идеальный пример как не следование принципам ООП приведёт к *** =)
?
@@Proger20 вы вместо разделения на классы в одном классе используете абсолютно всё)
Круто)
Подписка + Лайк за Войда из Доты на 3:25
Супер, спасибо за видео!!
А как называется компилятор?
Microsoft Visual C++ 2019
@@mossiness_ Спасибо, уже нашёл
а что делать если он слишком долго учится на 0 процентах?
Долго это сколько?)
Зачем функции "ErrorCounter" класса "network" принимаемые значения "prediction" и "lr", если в выполнении самой функции они не используются? Также получается что и в "BackPropogation" не нужен "prediction".
Чисто по кайфу
Ага, понял.
Топ ты крут бро
Кто ты воин ?
уже на дворе 2020
2021
2022
брат. расскажи как качать видео с сайта где даже сегментами качать не дают. и нет плейлиста.
все сегменты имеют одинаковое название.
Объясни еще раз, что я тебе должен рассказать?
@@Proger20 как скачать видео с сайта ?
@@milyantsev2427 чего? При чем тут этот вопрос в видео по нейросетям?
а ты буковку "А" боком нарисуй? буковку "Л" и "П" и "Д" ...))
А вот еще вопрос, зачем РАНДОМ ?
Это - простая нейросеть, она такое не должна уметь
@@Proger20 ну понятно что простая.... А, есть видео, самого понимания устройства нейросети, как и что и ПОЧЕМУ ?
@@Poker-s_S.V. думаю у меня на канале такое есть, посмотри ролики
@@Proger20 будь добр, дай ссылку, на плей лист. Благодарю.
@@Poker-s_S.V. у меня и так мало роликов, посмотри - по названию поймешь
Пили второе видео
Ещё не готова) мало занимаюсь шашками
Давай запишем вместе видео
давай) пиши мне в вк)
Привет. С тобой можно связаться в вк? Добавился в друзья, ЛС закрыт
Уже открыт
кста. rand() устарел)...
загугли C++11 Random
там не надо инициализировать сид и можно указать минимальное и максимальное значение :)
Писать самому нейронку на С++ это изобретение велосипеда.
Есть же уже специальные библиотеки на Pythone и С++ с API для других языков.
Писать велосипед ради велосипеда - бесполезно, а вот писать велосипед для понимания устройства велосипеда все же имеет смысл.
@@user-xh9pu2wj6b шаришь
даже бабушка не поймет, имхо, ужасный код, и особенно смутило чтение картинки, довольно косячно, саму нейронку конечно обьяснил, но код вырвиглазный
Не плохо, но задачка уже избитая
Опять windows.h! А если у меня Linux или mac!?!?!?!?
windows.h не используется по сути... лишь для времени...
Объяснение без объяснения :). Самое используемое объяснение для всех функций - "идем дальше". Очень похоже, что автор сам ничего не знает, код откуда-то слямзил и использует его. Поэтому и ничего не объясняет.
Надеюсь автор никогда никого ничему не будет обучать. :)
Весь код написан лично мной...
Надеюсь автор комментария никогда больше не будет писать комментарии
Ничего не понятно, только 20 мин потратил((
Поздравить могу вас. Если ничего не понятно, скорее всего вы глупый
моя бабушка не знает язык бомжей с брайтонбич
это ты про с++?
Соболезную...
C++ лучший язык
@@user-iv4of4gg1w Привет спустя 2 года