неОчередной тред про хипстерские технологии, которые не работают.Я ничего не понимаю, что делать? Либо в тупую import slesarplow as sp по туториалам, либо идти изучать математику курсы MIT тебе в помощь. Не нужно засирать тред вопросами типа "что такое сигма?".Какая математика используется? В основном линейная алгебра, теорвер и матстат, базовый матан calculus многих переменных.Что почитать для вкатывания? http://www.deeplearningbook.org/ | Николенко и др. "Глубокое обучение" На русском, есть примеры, но уже охват материалаВ чем практиковаться нубу? http://www.deeplearning.net/tutorial/ | https://www.hackerrank.com/domains/ai | https://github.com/pytorch/examplesГде набрать первый самостоятельный опыт? https://www.kaggle.com/ | http://mltrainings.ru/Где работать? https://www.indeed.com/q-deep-learning-jobs.htmlГде узнать последние новости? https://www.reddit.com/r/MachineLearning/ | http://www.datatau.com/ На реддите также есть хороший ФЭК для вкатывающихсяГде посмотреть последние статьи? http://www.arxiv-sanity.com/Где ещё можно поговорить про анализ данных? http://ods.ai/Нужно ли покупать видеокарту/дорогой пека? Если хочешь просто пощупать нейроночки или сделать курсовую, то можно обойтись облаком. Иначе выгоднее вложиться в 1080Ti или Titan X.Список дедовских книг для серьёзных людей:Trevor Hastie et al. "The Elements of Statistical Learning"Vladimir N. Vapnik "The Nature of Statistical Learning Theory"Christopher M. Bishop "Pattern Recognition and Machine Learning"Взять можно тут: http://libgen.io/Напоминание ньюфагам: немодифицированные персептроны и прочий мусор середины прошлого века действительно не работают на серьёзных задачах.Предыдущий:https://2ch.hk/pr/arch/2019-03-14/res/1315967.htmlАрхивач:http://arhivach.tk/thread/412868/Остальные в предыдущих тредахТам же можно найти треды 2016-2018 гг. по поиску "machine learning" и "НЕЙРОНОЧКИ & МАШОБЧИК"
Что вы думаете про курсы для вката а-ля курсов Стэнфорда на coursea?Лучше ли книг? Есть ли смысл искать курсы универов а-ля Гарварда/mit и попробовать вкатиться через них?btw посоветуйте годноту, через которую лучше всего вкатываться.
мне тоже интересноя сейчас прохожу вот этот https://www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187 халявный курс, в описании наобещали всякого (я особенно на то что расскажут про тензорфлоу лайт и тензорфлоу джс купился), по факту выдали четыре первых урока и обещают следующую партию к середине апреля, я не только и не столько машиноб учу, так что я не парюсь особо, но жирная лошадь с визгливым голосом которая вообще не понять зачем нужна т.к. кодинг она не преподает и инцель вместо препода бесят
Котоны, почему инфа которая есть по соревновательному машобу в свободном доступе такая туфта. Я пересмотрел видяхи с тренировок МЛ, посмотрел курс по Каглу от топ-гусей, все топовые кернелы и дискуссии и ничего нового не вынес. Может пару скриптов себе забрал. Те кто осознано выигрывают не особо делятся знаниями, максимум в общих словах, остальные это мимокрокодилы, которые решили брутофорсом или шэйкап помог оказаться в топах.
кстати можно оч. глупый вопрос?а вообще реально сделать сетку которая будет например генерировать музыку или картинки (да хоть тот же фурри порн) на заданную тему, которые потом можно продать типа их человек рисует. короче заставить сетку фрилансить на себяпонятно что это сложно но вот насколько сложно
>>1373624Типа такого?https://www.thiswaifudoesnotexist.net/https://github.com/Aggregate-Intellect/awesome-does-not-exist
>>1373622>Те кто осознано выигрывают не особо делятся знаниямЛол, рабочие вещи тебе никто и не расскажет, то что сливают или не работает или пиздят
>>1373630Да меня бесит эта дружественная атмосфера на каггле, когда чел толкает откровенную хуйню в кернелах или дискуссиях, или тысячный раз форкает топовый паблик кернел, тем самым засоряя инфопространство, то его умудряются еще апвоутить и писать в стиле датс авсом, грейт ворк и тд. В любом бы нормальном сообществе его бы обоссали и выгнали на мороз.Есть что-нибудь интересное почитать по ДС или машобу? Дедовские книги прочитаны уже
>>1373622>Те кто осознано выигрывают не особо делятся знаниямиПотому что их нет. Им везет.Соревновательный машоб это та еще хуита.
>>1373622Дурачёк думает, что ему сейчас просто так расскажут и покажут, как выиграть на Каггле. Действительно, там ведь одни альтруисты сидят.
>>1373647>Дедовские книги прочитаны ужеЕсли ты реально их осил и сделал хотя бы часть упражнений, то ты нереально пиздатый чел. Че ты тут делаешь? Иди работу ищи.
Почему в керас так хуёво задокументирован? В доках тензорфлоу больше информации о том, что он может, чем в их официальной документации. Я только вчера узнал, что у них, оказывается, препроцессеры есть у готовых моделей.
Че скажете про https://habr.com/ru/company/yandex/blog/446554/ ?Буду там импортить slesarplow или тема годная?
>>1373883У меня сурьезный матфак за плечами, поэтому с упражнениями трудностей почти не возникало. Другое дело, что почти все упражнения про сферического коня в вакууме. Главная проблема - применить знания на практике, хотя бы в рамках кагла.>>1373697Как скажешь, братан.>>1373741Ничего я такого не думал, я думал что там делятся своим опытом, который поможет сократить время моих экспериментов и поможет избежать подводных камней.Везде же расхваливали кагл, рассказывали про его крутые кернелы, дискуссии и тп. Что это лучшее место чтобы начать вкатываться в мл/дс вот я и повелся. А на деле миллион ебучих индусов и китайцев постят бегиннер и стартер код, один и тот же примитивный ЕДА от соревнования к соревнованию, а топы угорают над всеми остальными.
>>1374933Кагл хорош следующим: там есть куча датасетов для начинающих, и если ты там на лидерборде не в полной жопе, это уже хорошо для трудоустройства.Топы зачастую обязаны выложить исходники решения, их полезно читать, если совсем нулевой. Инфы и статей много, часто бывает какой-нибудь state of art проплывет мимо тебя, а там он проскочит.На этом все.Чем плох кагл, это тем, что это спорт, имеющий мало отношения к бизнесу и даже к мл. Побеждают там те, кто лучше всех угадывает невидимый валидейшен сет. Это лотерея. По факту же примерно топ 50 людей предоставляют хорошие и годные решения для бизнеса. Перформанс отличается минимально. И одно из таких решений засветят, потому что когда ты на 50-м месте, хули бы его не засветить.В бизнесе же все не так. Прежде всего потому, что в бизнесе ты всегда можешь доразметить датасет, а точность 97% за неделю или 98% за три месяца - первое лучше. Потому что проще значит лучше. Поэтому кагл относится с бизнесом примерно как олимпиадное программирование соотносится с коммерческим.
>>1373612 (OP)В шараге сказали пос таггер написать, а ни в питоне, ни во всяких МЛах не шарю, чё делать.
Здрасьте. Короче, я второкурсник на прикладной математике и физике, теорвер/матстат у нас на третьем, но есть необходимость изучить его здесь и сейчас (если кратко, устраиваюсь аналитиком в к Олежке, зарплата оч сильно зависит от навыков; теорвер знаю только школьный, разъёбывал олимпиады). Учить полный курс со всеми выкладками для математиков нет сил и времени (да и интеграл лебега мы только-только начали строить).Посоветуйте книжку по сабжу/курс лекций, чтоб поконкретнее, может, что-нибудь без доказательств, чтоб как у экономистов/дауновБауманов, но желательно поближе к нуждам машоба (а хорошо бы, чтоб вообще вся красота вроде ЕМ-алгоритмов etc, только не на уровне ШАДа, а попроще).
>КОКОК МЛ МЛ ИИ НЕ ЗА ГОРАМИ>СКОРО ВСЕХ ЗАМЕНЯТ РОБОТЫ>НЕТ НЕРЕШАЕМЫХ ЗАДАЧСлушал я эти кукареки, мысленно радовался за прогресс, но это пока сам не столкнулся с необходимостью применить то о чём все так громко кричат. Оказывается, что в 2к19 нет готовых решений для определения капчи, не гугловской с выбором картинок (хотя для неё есть решение при помощи распознавания звука), а древней, буквенной капчи, при том, что буквы в одном регистре. Вот вы вместо кукареканья и рисования психоделических картинок, лучше займитесь решением прикладных задач.
>>1375790Мой одногрупник делал распознавание капчи, с помощью нейронок, получилось неплохо. Просто тем, кому это нужно уже это сделали.
>>1375795Следуя твоей логике, в свободном доступе так много различных библиотек для работы с запросами потому что они никому не нужны и этого еще никто не делал?
Почему в этом треде одни питухи?Что-то уровня жс-треда.Вроде бы обычно правило наблюдается, что чем сложнее область, тем качественнее тред.А тут очень сложная область и одни долбоебы и почти нет постов по делу.
>>1376036import keras, xgboost, sklearn, numpy as np, pandas as pd, matplotlib.pyplot as plt слишком легко написать, вот и лезут дауны.
>>1376036Потому что это терд нечеткого петуха. Постить тут что-то по делу невозможно.Скрываю, кароч, и тебе рекомендую поступить так же.
>>1375995Потому тот, кто взломал капчу не заинтересован в том, чтобы кто-то другой это сделал и капчу бы усложнили.
>>1376153Вот только на гитхабе чуть меньше чем нихуя репов с разгадывателем капч или хотя бы примерами реализации. >>1376158В голос, блять. Про гугл капчу не слышал? А про сервисы которые за 2 доллара в месяц любую капчу разгадывают?
>>1376173>Вот только на гитхабе чуть меньше чем нихуя репов с разгадывателем капч или хотя бы примерами реализации. Даже для одного только сосача штук 10 репов видел.Дохуя и больше репов, которых никто не видел просто, неизвестных.
>>1376173>В голос, блять. Про гугл капчу не слышал? А про сервисы которые за 2 доллара в месяц любую капчу разгадывают?И вот с такими мудаками я должен делиться? Пфф.
> Питон> СкоростьЭто же каким отбитым долбоебом надо быть, чтобы не мочь написать бэкпропагатор на крестах и не знать, как посчитать производные от элементарных функций. Вам для чего библиотеки типа бласа или лапака писали? Самое сложное это Байесовый поиск гиперпараметров, пожалуй.Пиздец, и эти люди хотят дата сайнс делать. С тензорфлоу. От Гугла. Ноль понимания, дохуя понтов.
>>1376425Нужно быть отбитым долбоебом чтобы в 2к19 сделать выбор Python/C++ в сторону C++ не зная при этом программирования. Для мл нужны математические знания, а не знания программирования, именно поэтому никто не хочет ебаться со строгой типизацией и медленным синтаксисом плюсов, при этом потратив больше времени на обучение.
>>1376428>Для мл нужны математические знания,> а не знания программирования,Судя по треду, у местных нет ни того ни другого.> не знания программированияХули вы тогда в pr забыли?> не знать C++> работать на медленном Питоне.Изучение крестов ГОРАЗДО более выгодно в далекой перспективе
>>1376429>Изучение крестов ГОРАЗДО более выгодно в далекой перспективеВ том и дело, что не выгодно, выгодным оно было когда процессоры Pentium 4 были редкостью, а видеокарты признаком зажиточности. Сейчас чуть ли не на телефоне можно нейронку запускать.
>>1376440> си ++ макакиВо-первых, CИ макаке как нехуй делать выучить Питон или Скрипт. Обратное не совсем верно.Второе. ИТТ собрались долбоебы, которые думают, что могут делать дата сайнс, при этом не могут взять элементарную производную от гиперболического тангенса. Они думают, что выставлять нужно чилсо нейронов в заранее написанной проге делает тебя спецом. Это то же самое, как утверждать, что научившись работать в Excel ты стал спецом , которого возьмут на работу. В третьих, хули этот тред вообще в программирование делает?Хотите быстрые деньги - учите ПХП и скрипт. АИ это специфичный, требующий знаний матчасти и технического образования предмет.
>>1376443>CИ макаке как нехуй делать выучить Питон или Скрипт. Обратное не совсем верно.>Обратное не совсем верно.Только в случае если ты собираешься байтоебить и писать низкоуровневую хуиту типа драйверов.
Прочитал весь тред. За весь (!) тред НИ ОДНОГО вопроса по теме, типа "А что такое перцептрон?" или "Что такое сверточное ядро?".Одни только кукареки, лол.Объявляю этот тред самым запомоенным на всем програмаче. Хуже него уже нет.
>>1376561И как думаешь, их не задают в треде, потому что такие сверхразумы и гуглят сразу, или же тут просто никто ничем не занимается?
>>1376559Ну бля, я вот сейчас пытаюсь вкурить в эту хуйню, но для треда вопросов нет. Нет, я могу конечно по каждой непонятке сюда срать, но никто всё равно ни на что не ответит
>>1376564>в треде нет идиотских вопросов, которые можно нагуглить за секунду>арррряяяя дебилы собрались!!!
>>1376473>Пахевашая матанопетушня, уходи Они потом еще удивляются, почему градиент в ноль ушел и сеть в насыщении
>>1376664Какая задача, какая сеть, какие данные уже имеются?>>1376688Какая задача, какая сеть, как такое случилось?
Горю желанием вкатиться уже почти как год, но вместо этого изучаю веб для деняк от которого уже начинает подташнивать. Вопрос, насколько быстро можно вкатиться, чтоб что-то с этого поднимать? Матан знаю плохо, но готов это исправить.
>>1376712> Сгенерировать программноЗачем генерировать программно то, что подлежит регрессионному анализу? Если у тебя уже есть программа, которая на входные данные выдает тебе искомое значение, зачем тебе вообще нейросеть?По-моему, люди ИТТ вообще не понимают, о чем говорят и пишут.
>>1376762> Если у тебя уже есть программа, которая на входные данные выдает тебе искомое значение, зачем тебе вообще нейросеть?Есть питоноскрипт, который выдает словари с инфой о входящих данных, по сути парсер, но он медленный.Переписывать мне его было влом, я просто нагенерировал им данные и скормил averaged perceptron'у, написанному на цитоне, добился 300х ускорения c достаточно хорошим результатом.
>>1376762Мда. Не знал, что тут настолько тупые люди. Где я писал, что у меня программа "на входные данные выдает тебе искомое значение"?
>>1376772>Переписывать мне его было вломТут можешь остановиться и сказать, что играешься.Если хочешь играться - играйся. Но тогда лучше скачать пару MNIST баз и играться на image recognition. Будет точно полезнее, хотя бы потому, что более практично и более применимо к реальным проблемам.>>1376783>Не знал, что тут настолько тупые люди. Где я писал, что у меня программаТолку от нейросети мало, если ты генеришь какие-то данные программно. Хочешь распознать паттерн? Так разберись, что у тебя программа генерит и как генерит. Но опять же, для игр подойдет.
>>1376789> что более практично и более применимо к реальным проблемамТы понимаешь, что я использовал тот парсер и заменил его? Как ты предлагаешь мне парсить мои данные с помощью image recognition? smh
>>1376789>Хочешь распознать паттерн? Так разберись, что у тебя программа генерит и как генерит. Это такой троллинг тупостью? Зачем мне самоу разбираться и искать зависимости, если у меня нейросеть для этого есть?
>>1376816>Зачем мне самоу разбираться и искать зависимости, если у меня нейросеть для этого есть?Да потому что в 99% случаев все эти завимости давно изучены. Оставшийся 1% публикуются в научных журналах. Генерить данные кодом, а потом скармливать это нейросети - Сизифов труд.Для обучения может и Ок, на практике лучше делать то, для чего нейронки изначально писали - распознавать изображения, речь и текст. >>1376791>Ты понимаешь, что я использовал тот парсер и заменил его?> заменил> Переписывать мне его было вломТы его не заменил. Ты написал нейронку. Окей. Если входные данные в нейронку будут в области, далекой от тренировчного датасета, то выдавать тебе она будет хуйню, в то время как исходный парсер будет работать.> написал нейронкуМолодец, толку с того? Ты как то это хочешь использовать в приложениях или выложить на гХаб? Первая же критика - какого хуя ты просто парсер не переписал? Было лень? Тогда катись к хуям.
>>1376831Я использую ее уже почти год ежедневно и она хорошо справляется со своей задачей. Я в курсе, что не полноценная замена исходного парсера, но это и не требуется.Я не знаю, что ты ожидаешь услышать от меня. Мог ли я потратить в 10 раз больше усилий если судить по числу строк, переписывая чужой код? Мог, но зачем? Или ты хочешь услышать, что мне интересен машоб и я хотел поиграться с ним? Ну окей, это тоже.
За весь тред полтора поста хоть сколько-то рилейтед, ни одного непосредственно по сути дела, ни на один вопрос никто не ответил. Тред можно удалять, машоб нынче не нужен.
>>1375790>Оказывается, что в 2к19 нет готовых решений для определения капчи, не гугловской с выбором картинок (хотя для неё есть решение при помощи распознавания звука), а древней, буквенной капчи, при том, что буквы в одном регистре. Готовых решений нет, потому что никому это нах не упало, какое-то абстрактное решение которое будет работать с любой капчёй всегда будет проигрывать специализированному на конкретной капче. А это проект на один вечер тащемта.>лучше займитесь решением прикладных задач.Без проблем, сколько платишь?
>>1377065>какое-то абстрактное решение которое будет работать с любой капчёй всегда будет проигрывать специализированному на конкретной капче.Именно поэтому разгадывание капч так дешево стоит. Около 2 долларов за месяц, любые капчи. Наверно сидят там и обучают каждый раз нейронку при виде новой капчи, а потом выдают результат, и всё это за пару секунд. Чудеса да и только. >Без проблем, сколько платишь?2 доллара в месяц.
>>1377102Это еще круче. Написал пару строк кода и не нужно держать у себя, или где-либо еще, лишние данные.
>>1373612 (OP)Хочу швирять данные в нейронку и ждать какой-нибудь вывод, без теории и какого-либо серьёзного бекграунда, чисто хуяк-хуяк ради фана, какой фреймворк/стек лучше всего подходит под мои цели?
В общем понятно, что нейронки это тупик. Годятся только для задач, где на надёжность наплевать, вроде классификации котиков, для реальных задач надо придумывать что-то другое, для чего можно доказать корректность.
>>1377171>доказать корректностьЭто же нивазможна, да и нинужна, достаточно показать результат лучше чем у человека.
>>1377171>понятно, что нейронки это тупик. Годятся только для задач, где на надёжность наплевать, вроде классификации котиков, для реальных задач надо придумДавай "умник" придумай математически корректное описание котиков.
>>1377577В ценах акций за прошлый период тупо нет информации об их будущих ценах.Доказали уже практически на научном уровне.Весь "технический анализ" - по сути полная хуйня.
Ладно, моему преподу на меня похуй, так что буду задавать свои вопросы здесь:1. Если нейросеть на основании имеющихся исходных данных не может построить модель, отображающую исходные данные в целевые, доказывает ли это напрямую то, что исходные данные просто не содержат достаточно информации о целевых данных?2. Для каких задач не подходят сверточные нейронные сети?3. Сможет ли сверточная нейросеть классифицировать объект на изображении, даже если он не посередине изображения, а где-нибудь в углу?
>>13776611. Нет. Может, у тебя нейросеть хуёвая. Почём нам знать, как ты её обучал, на каких данных. И вообще, что значит "достаточно информации"?2. Для тех, где у объектов нет пространственной структуры, т.е. свёртка не нужна. (Нет, конечно, полносвязный слой можно рассматривать как свёртку, но только ради удобства).3. Может быть. Но, конечно, зависит от того, какого размера объект и что ещё на изображении. Если у тебя посередине здоровенный кот, а сбоку от него - маленькая кружка, то не обессудь.
>>1377661>Если нейросеть на основании имеющихся исходных данных не может построить модель, отображающую исходные данные в целевые, доказывает ли это напрямую то, что исходные данные просто не содержат достаточно информации о целевых данных?Нет.>Для каких задач не подходят сверточные нейронные сети?Когда у тебя нет инвариантности по оси. Грубо говоря, кот в левом-верхнем углу и в правом нижнем углу - это кот. Или, например, резкий скачок биржевых данных 5 февралая и 10 октября - это резкий скачок. В первом случае инвариантность идет в пространстве изображения (и применяются 2д свертки), во втором - во времени.Где не подходит - например, если у тебя в первом измерении площадь квартиры, во втором ее цена и так далее - никакой инвариантности тут нет, каждое измерение определяет разные вещи.>Сможет ли сверточная нейросеть классифицировать объект на изображении, даже если он не посередине изображения, а где-нибудь в углуСудя по этому вопросу, зря я распинался в прошлом.
>>1377981>может потому нейронная сеть на то и называется нейронной, что как в мозге?Нет, она так называется что бы пудрить мозги и получать профит.
Отлично знаю линал и матан, теорвер знаю на уровне экономфака ВШЭ (их книжечку прочитал). Подойдёт ли книжка "Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow. Концепции, инструменты и техники для создания интеллектуальных систем" как стартовая? И Deep Learning Иошуа Бенджио? Ещё знаю Python и pandas/numpy (читал Уэса Маккинни "Python для анализа данных").Или вообще что читать-то? На русском (английский хоть и знаю, но слишком тяжело читать много). Видосы не нравятся, вообще этот формат терпеть не могу.
>>1377935>Когда у тебя нет инвариантности по оси. Грубо говоря, кот в левом-верхнем углу и в правом нижнем углу - это кот. Или, например, резкий скачок биржевых данных 5 февралая и 10 октября - это резкий скачок. В первом случае инвариантность идет в пространстве изображения (и применяются 2д свертки), во втором - во времени.>Где не подходит - например, если у тебя в первом измерении площадь квартиры, во втором ее цена и так далее - никакой инвариантности тут нет, каждое измерение определяет разные вещи.А, то есть когда каждое измерение независимо, то сверточные сети применять нельзя. Верно?
>>1378305Для старта даже анус пса пойдет. А там дальше разберешься. Нормально делай - нормально будет. Все, давай, на созвоне
Проблематика обучения.В современных ЭБУ есть значительных проблемы с объемом ОЗУ! Связанно это с историческими факторами и с сложностью создания больших объемов ОЗУ с контролем ошибок на кристалле. А вот в калькуляторах обычно таких проблем нет поскольку ОЗУ там зачастую без контроля и процессоры индустриальные за копейку. Поэтому подходы которые использовались в 80-е и 90-е с созданием значительных массивов накопления данных применять в нормальных ЭБУ нельзя. Например: если в Январе у нас на обучение по ДК по некоему методу, там реализованному, выделено около 520 байт, то в современных ЭБУ реализация подобного метода затребовала бы около 4-х килобайт. Поэтому всю прошлую жизнь регулятора надо запомнить с использованием буквально 10-ка переменных (сотни байт не более). И методы редукции объемов данных конечно есть. Один из таких методов – применение искусственных нейронных сетей.Искусственные нейронные сети (ИНС).Штука довольно избитая, с ней все сейчас носятся как с писаной торбой. Нейросети то… нейросети се… нейросети читают ваши номера и выписывают вам штрафы. нейросети разве-что борщ не варят (а то бы на них можно было женится).В основе используемых в ЭБУ искусственных нейронных сетей, как и многих других, лежит так называемый “Персептрон Розенблатта”, . предложенный в 1957 году Френком Розенблаттом.Практическое применение ИНС получили после разработки эффективных методов обучения весов нейронов в скрытых слоях (в основном: метод обратного распространения ошибки) в 80-х годах прошлого века… Я не буду тут особо распылятся на эту тему, поскольку про все это, есть сотни статей, в том числе на русском языке и любой желающий может их “накрячить” (гугл у нас проштрафился и теперь гуглить уже не модно)… Есть хорошие обучающие видео на трубе. Несмотря на то, что я не буду подробно останавливаться тут на ИНС – я надеюсь у читателя все-таки есть представление, как именно они работают и какие проблемы решают-создают… Хотя кое-что все-таки следует написать.ИНС, которые используются в ЭБУ получают банальным комбинированием нескольких персептронов по следующей схеме:Собственно слой слева — называется входным слоем. Этот слой как обычно ничего не делает и передает значения на входах следующему. Слой расположенный по середине называется скрытым слоем и состоит из некоторого количества персептронов. Слой справа называется выходным слоем и содержит один персептрон. Это схемы прямого распространения сигнала без обратной связи (т.е. информация в такой сети передается cлева на право и не передается с выхода на вход). Сеть построенная на таких принципах может делать разные крутые вещи. Например универсальная теорема аппроксимации, доказанная в 1989 году Джорджем Цибенко. Гласит:Искусственная нейронная сеть прямой связи с одним скрытым слоем, и сигмоидальной активационной функцией, может аппроксимировать любую непрерывную функцию из множества переменных с любой заданной точностью, при достаточном количестве нейронов в скрытом слое!Эта теорему можно перефразировать, и получить то сокровенное знание которое тупые японцы так и не получили при изобретении VTEC (и спасает их лишь то – что VTEC они все же разработали чуть РАНЬШЕ, чем теорема была доказана, и чем все осознали, что случилось и как такую полезность можно применить):Любой табличный параметр системы управления с любой заданной точностью в пространстве любого количества измерений, может быть получен в реализации искусственной нейронной сети с прямой связью, c одним скрытым слоем и сигмоидальной активационной функцией, при достаточном количестве нейронов в скрытом слое. Т.е. ну вот в той самой, что вы видите на картинке выше.Только что, вы прочитали, как вычисляется VE в автомобиле с 2-мя плавными фазовращателями и плавным подъемом клапана на впуске, для любого из возможных соcтояний оборотов-нагрузок-поворотов валов-подъема клапанов — и при этом не используется ни одной таблицы в привычном нам 3Dвиде. Только лишь веса связей нейронной сети. И для того чтоб что то поменять в двигателе — придется перенастроить эти веса. Настраиваются они с помощью специального программного обеспечения написанного на языке matlab при этом все это обычно интегрировано с классическими старыми комплексами настройки.И если вы не поняли – никогда и никем даже в отдаленной перспективе для такого двигателя не будут выпущены, какие либо “другие” распределительные валы… Пока шиночипы не сломают себе голову в попытке осмыслить, что же именно написано тут всего лишь в паре абзацев текста. Вот вам, то – чего не бывает, в нашей “настройке которой не бывает”! (хотя честно говоря — там даже проблемы на уровне снять-поставить эти валы).Однако у ИНС есть один существенный недостаток – никто не понимает как именно они работают. Нет, конечно с математической точки зрения мы понимаем каждый шаг. С практической — мы понимаем как настроить веса и добиться нужного нам вывода. Но почему веса именно такие, как они есть – никто не может объяснить. Это все конечно никак не мешает их использовать – ведь людям понадобилось 1000лет, с момента постройки первых каменных кладок на связующих, чтоб понять, как именно работает цемент. Но есть какой-то осадочек… Кроме того у сетей подобного типа есть проблемы с обучением – скажем так в некоторых условиях они могут не обучатся. С точностью вывода на практике бывает тоже не все хорошо.ИНС с описанной выше структурой требуют серьезных затрат на обучение, поэтому в ЭБУ применяются только в виде предварительно обученных. Дальше речь пойдет про еще более современную концепцию построения ИНС, которые уже будут обучатся непосредственно в ЭБУ!
>>1378984Нечеткая логика.Это еще более свежая концепция, объясняющая нам, что мир не черно-белый, а тепло и холодно – это не конкретные численные значения температур, а все факты которые мы знаем – не точны…Концепция введена Лофти Заде в 1965-м году и развита в более поздних работах. На бытовом уровне это можно объяснить как то, что “тепло-ташкент-жарища” – это про что-то одно, а “мороз-дубак-воркута” – про что-то другое, и эти что-то ортогонально друг другу противоположны, но все это нас мало интересует, как и сама нечеткая логика. В этом разделе нас интересует, так называема “функция принадлежности” в виде нормализованного Гауссиана (колокола), которая используется для классификации. Про нее мы и будем писать ниже.Локальная линейная модель – LLM.Начнем с простейшей линейной функции, ее формула для одномерного случая известна каждому:y =”смещение” + x * “наклон”Теперь посмотрим на картинки.Слева мы видим некую непрерывную одномерную нелинейную функцию.Справа — попытку аппроксимации этой функции четырьмя линейными функциями – по сути, совокупностью четырех локальных линейных моделей.Не очень то похоже, но в реальном мире точность такого представления для использования может быть вполне достаточная – например лаг в мелких бошах как то так задавался. Но, что если не достаточно и надо точнее?!Предположим, что этот график – единственное, что мы знаем про нашу функцию, как видим в нем 437 пикселей (я померил когда рисовал линии в нем).Очевидно, что мы можем представить его в виде 437 линейных функций, где каждая линия будет иметь размер всего в 1 пиксель!При этом “смещение” будет = высоте пикселя по Y оси, а “наклон”=0. Модель такой функции называется – частичной линейной моделью, без градиента и является частным случаем полной линейной модели. Но поскольку “наклон”=0 – x в нашей формуле вырождается. Тогда, как же нам определить координаты нашего пикселя по x?Для этого нам надо добавить к каждой модели еще и функцию принадлежности этой модели к определенному участку пространства входных значений x нашей функции – так мы сможем вернуть ей зависимость от x.Формулу принадлежности можно взять из fuzzy логики, но мы пока не будем это делать а применим простейший метод, который свяжет нашу координату по x c одной конкретной функцией из 437, и превратит наш набор цифр в совокупность из 437 линейных моделей. В нашем случае, для каждой конкретной из 437 моделей, функция вычисления принадлежности будет возвращать 1.00, если x соответствует номеру функции в пикселях и 0.00 для любого другого значения x. Умножив значение смещения для каждой нашей линейной функции на возвращаемые “веса” из функции принадлежности и просуммировав результаты, мы сможем поставить точку именно там, где надо, и полностью повторить левую картинку.Предположим, что осей у нас больше – что это меняет?! Да ничего по сути – просто очевидно линейных моделей надо будет несколько больше…Давайте теперь перефразируем теорему аппроксимации в таком виде: Любая непрерывная функция из множества переменных с любой точностью, может быть аппроксимирована некоторой совокупностью локальных линейных нейро-fuzzy моделей!Совокупность локальных линейных моделей — LOLIMOT.Метод идентификации нелинейных систем совокупностью локальных линейных моделей LOLIMOT был предложен Оливером Нильсом в конце 90-х и очень подробно описан в его монографии [1]. Такая совокупность описывается формулой:Как видите, вычисления очень простые – нужно лишь предварительно вычислить для всех наших функций набор из весов принадлежностей, с помощью вычисления функции принадлежности а остальное вообще элементарно. И настало время понять, что такое эта самая функция принадлежности… Но сначала давайте разберемся, чем вообще этот подход отличается от ИНС, рассмотренных ранее, и чем они лучше — если аксиоматически делает вроде бы то же самое…По сути наша картинка очень похожа на персептрон. Яйцо эквивалентно всему нейрону скрытого слоя. Сама LLM представляет набор весов и смещений нейрона. А функция принадлежности эквивалентна функции активации нейрона. Сумма справа – ничто иное как нейрон выходного слоя лишенный функции активации и с весами =1.
>>1378994Теперь посмотрите на картинку выше с красной линией, я тоже посмотрю на нее и напишу это:Для модели 1 вес нейрона смещения = 8.0, а вес нейрона входа 1 = -25.0Представляете как легко обучается такая ИНС?, если я смог просто посмотреть на картинку и назвать веса. Забудьте про любые проблемы обучения, про горы вычислений с плавающей точкой, про ошибки дифференцирования, которые усиливаются при распространении ошибки во внутренние слои, про то, что у вас может вообще ничего не выйдет из-за сваливания в локальную яму. Эта штука может обучатся, даже внутри самого дешевого микроконтроллера который умеет лишь в знаковый int! Для использования в качестве функции поправки для лямбды (наш частный случай) на начальном этапе обучения все веса просто обнуляются – в итоге функция приходит к нормальному состоянию выхода (=0) т.е. отсутствия какой-то поправки.Функция принадлежности к моделиЧто такое функция принадлежности Я буду объяснять на конкретном примере. Возьмем такой набор значений:X1=1 Y1=10X2=2 Y2=5X3=3 Y3=15Мы опять же, не знаем какая именно функция представлена этим набором цифр и каково ее поведение в неуказанных тут точках, поэтому для ее представления мы будем использовать тот же самый метод, что раньше и с пикселями на картинке – “частичные линейные модели без гадиента”, поэтому у нас будет 3 модели с экстремумами в известных точках X = 1 2 и 3 для каждой соответственно. Построим Гауссовские функции (колокола) с экстремумами в этих точках и пиком амплитуды = 1:с – это у нас центры координат соответствующих моделей т.е они принимают значения 1 2 и 3.сигма – стандартное отклонение параметров модели. (их графический смысл указан синими стрелочками).Формулу Гауссиана вы видите справа на картинке:У выбранной функции принадлежности есть проблема – она не учитывает наши знания о пространстве значений выше и ниже крайних, т.е если скажем мы растянем ось X до 100 то диапазон от 5 до 100 окажется у нас никак не охваченным, и для больших X наши функции вернут 0, хотя очевидно, что функция принадлежности должна в любом случае вернуть какое то не нулевое значение хотя бы для одной модели, поэтому нам надо нормализовать то, что мы построили по специальной формуле:Суть этого действия в том, чтоб для любого участка пространства значений совокупное значение суммы весов принадлежностей оказалось = 1, таким образом в любой точке пространства в любом возможном случае всегда работает какая-то одна (или несколько) моделей из тех что у нас есть при этом их веса распределены между соответствующими моделями так, чтоб в сумме они составили 1.00 (или 100%).После того, как мы получили значения функции принадлежности, мы можем обучить нашу ИНС (а точнее, так же как и с пикселями, просто ввести в соответствующие ячейки веса смещения при весах входа=0, поскольку такая простая модель никакого обучения не требует и в ней веса — это cсобственно и есть выходные значения). Затем вычислить результат ее работы Y для любого исходного значения x:Применение Гауссовских функций принадлежности дает нам просто идеальные стыки графика на границах моделей (например X=1.5) где у нас нет никаких априорных знаний о свойствах нашей функции.Ну и наконец приведем всю формулу нашей частной модели и функции ее принадлежности, хотя она и не сильно отличается, от полной модели рассмотренной ранее:Именно этот упрощенный метод без градиентов используется при обучении по лямбде, для детонации например, используется уже полный метод с градиентами! Т.к. в случае детонации можно ожидать наличия связи с нагрузкой и оборотами – в случае же лямбды такой связи очевидно нет!
>>1378995Ну и наконец функция обучения весов.Для случая с лямбда регулятором мы конечно не можем так пальцами в картинки тыкать и поэтому нам нужна функция обучения весов. Но она настолько проста, что мне даже лень ее объяснять. Поэтому пусть это будет просто кусок исходника на С.Разве что стоит сказать про fak – это ошибка выхода умноженная на скорость обучения (некий желаемый коэффициент меньше 1.00 – обычно принимает довольно маленькое значение около 0.05).Редукция числа моделей и входов.Как вы поняли это еще не все преимущества такого подхода, перед классическими ИНС на персептронах. Для работы любой ИНС нам необходимо еще при проектировании жестко задать количество входов, поскольку с этим связанно выделение памяти. В случае с LOLIMOT вы конечно тоже задаете количество входов – но эти входы расположены не просто так, а строго в порядке предполагаемой их важности для процесса обучения регуляторов. И если например в какой-то момент при адаптации вы видите, что вход стоящий последним не оказывает никакого влияния на вашу функцию и не имеет смысла – вы можете его отключить! Тем самым уменьшить количество вычислений и конечно же — уменьшить количество необходимых моделей, а значит ускоряется и процесс обучения и работа процессора ЭБУ в целом. Ведь любые математические штуки, даже самые простые, требуют значительных ресурсов для вычислений – а этих ресурсов может и не быть, либо они могут быть нужны нам для чего-то другого…Редукция вывода сети.Это тоже очень важное свойство нашего метода, важное именно для обучения c использованием лямбды. Дело в том, что лямбда может внезапно сдохнуть. Но перед тем, как система управления поймет, что лямбда сдохла – лямбда может усиленно делать вид, что живая, и при этом прилично так врать. С этим связаны очень серьезные проблемы в простых “лоховских” решениях, типа “подключим мы ка лямбду к примитивному ЭБУ напишем в нем примитивный регулятор и все у нас будет хорошо” – на самом деле _хорошо_ не будет! Мало того все будет очень плохо но не сейчас а позже… В общем такое поведение приводит к значительным ошибкам обучения запоминаемым в наших моделях. Если бы мы использовали классическую ИНС – с этим ничего нельзя было бы сделать. Но у нас сеть с неким “нормальным состоянием” – и в этом нормальном состоянии ее веса = 0, и в процессе работы они увеличиваются до каких-то относительно небольших значений ограниченных алгоритмом обучения. Следовательно, мы можем предположить, что в адекватном случае работы, веса в обученной сети так же не должны превышать какие-то определенные небольшие значения. Поэтому мы можем после обнаружения проблемы с лямбдой минимизировать последствия накопления ошибок в LOLIMOT — например однократно ограничить веса, каким-то значением, или умножить всю сетку весов на какое-то значение меньше 1.00. Таким образом, оставив полезные “малые” поправки и убрать вредные “большие”. Есть у этого конечно и отрицательные моменты – в современной системе у вас так половина машины сдохнет, а вы даже и не поймете, что это произошло…И так ознакомившись с теорией мы готовы к тому, чтоб окунуться в практику и посмотреть на конкретную реализацию функции обучения для лямбда-регулятора на базе совокупности локальных линейных моделей.
Обучение по ДК в реальном проекте.Используется сеть структуры – 3 входа, 10 локальных линейных моделей. (реализация допускает до 15 LLM). Упрощенных метод — без градиентов. Сеть редуцированна по входам – 4й вход на который может быть выведено множество переменных — не задействован.В качестве входных параметров: обороты (nkw), относительная топливоподача (rk), температура двигателя (tmot).Центры моделей сети представлены следующими значениями:Стандартные отклонения для моделей:При первом взгляде может показаться, что центры и стандартные отклонения выбраны странно – но первый взгляд в этом случае всегда обманчив! Помните про нормализацию, которая распространяет действие модели на всю ось? Так вот обычно всегда задействованы две, а иногда и три модели одновременно. 5я по счету модель работает практически всегда. “Холодные” 7-я и 8-й модели работают на прогреве зимой и в области низких нагрузок. Холостой на прогретом моторе обслуживает 4-я модель, на холодном моторе 2-я. 1-я модель, определяет поведение в зоне низких нагрузок на холодном моторе 6-я на горячем.Посмотрим несколько симуляций расчета функции принадлежности в excell, для того, чтоб видеть, как модели будут сменять друг друга в разных условиях работы двигателя.И так мы получили сложнейшую функцию обучения с плавными переходами между моделями с трехмерной сеткой входов и она у нас занимает всего каких то ничтожных 40 байт в ОЗУ!Ладно на сегодня хватит пожалуй писанины. Увидимся в следующей серии.Список литературы:1) Nelles Oliver: Nonlinear System Identification: From Classical Approach to Neural Networks and Fuzzy Models. Springer, Berlin (2001)2) Материалы конференции "Artificial Neural Networks and Machine Learning – ICANN 2014" стр 153-160 Torsten Fischer and Oliver Nelles: "Merging Strategy for Local Model Networks Based on the Lolimot Algorithm" Springer (2014).
Аноны, есть проблема.Надо написать классификатор изображений на овердохуя классов.Проблема в том, что для каждого класса у меня OCHE MALO изображений - штук по 50 для каждого.Переобучение после третьей эпохи нахуй.Рейт ниже плинтуса. Че делать?Читал статью в блоге кераса "Building powerful image classifier using very little data" (или как-то так), но дело в том, что там под вери литл дата имеют ввиду аж 2000 изображений блять.(по 1000 на класс).Возможно вообще обучить сеть, юзая по 50 семплов на класс?
>>1379171Что за модель-то используешь? С нуля вряд ли, а вот готовую подогнать можно и с 50-ю классами.
>>1379181Ну, честно говоря, я только начал пока. Сейчас тупо отпизды выбрал простейшую сеть.model = models.Sequential()model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape))model.add(layers.MaxPooling2D(pool_size=(2, 2)))model.add(layers.Conv2D(64, (3, 3), activation='relu'))model.add(layers.MaxPooling2D(pool_size=(2, 2)))model.add(layers.Flatten())model.add(layers.Dense(128, activation='relu'))model.add(layers.Dropout(0.5))model.add(layers.Dense(num_classes, activation='softmax'))model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])С нуля показывает рейт 2%, что чуть лучше, чем тупой рандом.Сейчас запустил то же самое с раширением данных, прогнал на 10 эпохах - переобучения нет, что самое главное, но рейт еще ниже.Но, мне кажется, это оттого, что эпох мало. Ну, раз в переобучение не уперся, значит тупо эпохи не дожал. Сейчас вертится обучение на 50 эпохах.Да, я знаю про дообучение готовой.Сейчас пытаюсь выжать максимум из нулевой, чтобы было на что опираться.Если хотя бы 10% выжму на нулячей, можно считать успех...
>>1379187Бери готовую вроде VGG19, у твоей малюсенькой модели никаких шансов. Два конволюционных слоя + один dense это вообще ни о чём, это максимум MNIST классифицировать. Картинки-то хоть какого размера? dropout, кстати, попробуй убрать
>>1379194Да я понимаю, что с нуля на таком милипиздрическом количестве образцов на класс у обученной с нуля сети шансов нет.Но хочу пока что просто посмотреть, сколько можно выжать, не прибегая к дообучению готовой сети.>Картинки-то хоть какого размера?Разные, от 100x100 до 1000x1000 максимум. В среднем хуйня, 300x400 где-то.В генераторе все шакалятся до 150x150.>dropout, кстати, попробуй убратьПервоначально без него запускал, 3 эпохи и все, переобучение. На тестовых данных рейт, как и положено, стремительно растет аж до 95%, но на тестовых в районе 0.01-0.02.С дропаутом переобучение наступает медленее немного, 5 эпох.Тестовый прогон с расширением данных показал, что на 10 эпохах переобучения нет.Сейчас запустил то же самое на 50 эпохах. Посмотрим че выйдет.Это базовая модель, чисто чтобы убедиться, что это говно вообще работает и мои изменения влияют на результат.
>>1379219Специально никак не выставлял. Видимо используется стандартный керосовский.Ну и все остальные гиперпараметры тоже отпизды стоят.Говорю же, просто пробую пока, изучаю что вообще происходит
>>1379285Пиздец, 10% рекорд короче.Это при дообучении resnet50.Но, возможно, я просто долбоеб и что-то не так делаю
>>1379171>Проблема в том, что для каждого класса у меня OCHE MALO изображений - штук по 50 для каждого.В чем проблема доразметить? Скорее всего это лучший вариант, анон. >Че делать?Для начала аугментировать данные. Отразить-повернуть по 4 осям - это однозначно (если это имеет смысл конечно, в перевернутой цифре 6 например смысла мало). Далее, можно поповорачивать на произвольный угол, потому что сверточные сети по дефолту о поворотах ничего не знают. Затем "В генераторе все шакалятся до 150x150" - скорее всего зря. Скорее всего лучше и кропать и ресайзить. Все зависит от самих данных. Если у тебя коты, кропать 1000х1000 в 150х150 навернок не стоит. Но если у тебя деревья - то далеко не факт.Затем, если у тебя есть много, очень много неразмеченных данных, можно запилить GAN-сеть (progressive gan например - давно не интересовался темой, какой там state of art сейчас, но эта хуйня точно работает). Погонять ее пару дней, и взять дискриминатор как основу для дообучения. Если же GAN так ничего осмысленного не загенерит, это скажет много о распределении твоих данных. Брать VGG, тренированную на котах, и пытаться размечать с помощью них спутниковые фотки - идея так себе. Но, с другой стороны, если ты найдешь похожий датасет, можно сначала потренировать на нем, а потом уже на своем датасете.По поводу сеток, слишком сложные не бери. Смысла ноль. Советую inception, в частности googlenet. Как бейслайн самое то.
Помогите, ПРОШУ!Иду на аналитика, теорвер в вузе ещё не проходил (только через год!), надо ОЧЕНЬ СРОЧНО понять линейную и логистическую регрессии, КАКИЕ ВЕЩИ (а ещё лучше -- прям главы учебника конкретного) знать НЕОБХОДИМО из теорвера/матстата, чем меньше -- ТЕМ ЛУЧШЕ! Сам с физтеха, разбираюсь быстро, но учить вообще не вариант, вот желательно самый сжатый формат, чтобы я на интуитивном уровне понимал, что там, и скриптил на питончике, чувствуя себя уверенно.
>>1379517>В чем проблема доразметить? Скорее всего это лучший вариант, анон. Эт, конечно, заебись затея, но я не могу расширить датасет.>Для начала аугментировать данные.Так уже...>Брать VGG, тренированную на котах, и пытаться размечать с помощью них спутниковые фотки - идея так себеНо в мануалах кераса прям так и говорят, что можно брать сеть, тренированную на котах и распознавать с ее помощью даже речь.Вот пикрил на кошечках-собачках, что сука характерно, конечно, любые отпизды выбранные параметры выдают 90%.А на моей задаче 7% пока рекорд
>>1379712ты уверен, что ты лейблы не перепутал или потерял где-то? попробуй сделать numpy.random.shuffle на массиве лейблов и посмотри как это влияет на результаты
>>1379712>Но в мануалах кераса прям так и говорят, что можно брать сеть, тренированную на котах и распознавать с ее помощью даже речь.Так все упирается в количество данных. Если у тебя их бесконечно, за бесконечное время ты перетренируешь вообще любую сеть. А у тебя данных мало, поэтому тебе единственный вариант набрать низкоуровневых фич с другого датасета, а своим уже оттюнить высокоуровневые.Низкоуровневые фичи можно набирать и в unsupervised манере.>А на моей задаче 7% пока рекорд А у генератора случайных чисел какой рекрод будет? Сколько классов у тебя?
>>1379727Да вроде все верно, проверил на датасетах кошки/собаки + рентгеновских снимках легких, везде с первой же эпохи высокие рейты.>>1379771>А у тебя данных мало, поэтому тебе единственный вариант набрать низкоуровневых фич с другого датасета, а своим уже оттюнить высокоуровневые.Вот вопрос тогда - насколько низкоуровневые признаки надо брать? Я пытаюсь обучать последний сверточный блок (ну, там где 3 штуки Conv2d) VGG16.Может, надо вообще пару первых слоев оставить, а остальное обучать?По логике да, я пытаюсь искать признаки моих пич среди высокоуровевых собачьих глаз>А у генератора случайных чисел какой рекрод будет? Сколько классов у тебя?200 классов, по 50 изображений на класс.У рандома, соответственно, шанс 1/200, 0.5%В целом, сесть имеет статистическую мощность и выдает эти 2-3-7 процентов, что лучше рандома.Но все равно с человеческой точки зрения это ни о чем же.
>>1379776>Вот вопрос тогда - насколько низкоуровневые признаки надо брать?Поэксперементируй десу.>Может, надо вообще пару первых слоев оставить, а остальное обучать?Поищи визуализации слоев, когда из белого шума градиентым спуском максимизируют активации на данном слое, в этих слоях хуйни типа линий под разным наклоном, они как правило универсальны для любых визуальных данных. Думаю до половины сетки ты можешь использовать точно.>Может, надо вообще пару первых слоев оставить, а остальное обучать?Тут еще два стула на самом деле. Можно обучать с нуля, можно обучать с уже обученного. Я предпочитаю делать и так и так. То есть глубокие слои я инициализирую заново, а верхние не переинициализирую, но и обучение на них не фиксирую. Правда это имеет больше смысла в случае resnet'ов.Алсо не понятно, почему у тебя не resnet в 2019 году. У тебя из-за того что мало данных градиент до верхних слоев просто не доходит. То есть у тебя не просто переобучение, у тебя самые нижние слои переобучаются и на этом все обучение заканчивается.Короче бери сетку у который максимум перформанса при минимуме параметров и residual связями. Вот это короче https://github.com/titu1994/Inception-v4/blob/master/inception_resnet_v2.py
А что если выпилить каналы и сделать изображения черно-белыми?По идее это на порядок ускорит обучение, правильно?
>>1379851>Подскажи плиз, откуда взялось такое ебанистическое число параметров? Это 107648 из слоя flatten умножить на 256 из слоя dense.107648 это 29x29x128 из последнего пулинга после flatten.Любой dense layer это матрица размером вход х выход, в них как правило больше всего параметров.>А что если выпилить каналы и сделать изображения черно-белыми?Можешь поместить после входа Conv1D с параметрами 1х1х1, он сплющит твою картинку в черно-белую.Обучение это ускорит только для первого слоя, потому что у тебя что у тебя из 3 каналов делается 64, что из 1 канала делается 64, потом число каналов не поменяется. Нет смысла короче.
>>1379873>Любой dense layer это матрица размером вход х выходОк, спс тебе, анон!>Обучение это ускорит только для первого слоя, потому что у тебя что у тебя из 3 каналов делается 64, что из 1 канала делается 64, потом число каналов не поменяется. Хмм, вроде понимаю. Ведь один хуй же происходит свертка, да потом еще пулинг, число данных уменьшается.Верно ли, что я тогда могу изображения на входе особо не шакалить? Ведь они все равно будут сжаты свертками и пулингом.Еще охуенно важный вопрос, подскажи плиз, что такое GlobalAveragePooling2D()?Видел в куче сетей, в отличие от Flatten'а не увеличивает число параметров. Где тут наеб?
>>1379888>Верно ли, что я тогда могу изображения на входе особо не шакалитьВ целях ускорения нет. Лучше число фильтров на последних слоях уменьшать, или увеличивать даунскейл при пулинге.Либо заменять большие квадратные фильтры на комбинацию более простых. Опять inception короче.>Верно ли, что я тогда могу изображения на входе особо не шакалить?Нет большого смысла делать то, что сетка может сделать сама. Разного рода конвертации типа RGB->YUV, RGB->Grayscale это просто 1x1x3 либо 1x1x1 свертки с зафиксированными параметрами. Если ты про даунскейл, то тоже, добавить лишний слой с малым числом фильтров и спулить потом все - это практически бесплатно. А вот вещи типа поворотов или, например, преобразования Фурье, кепструмов-хуепструмов имеет смысл пилить вручную. Потому что сама сетка не научится это делать за время жизни вселенной.>Еще охуенно важный вопрос, подскажи плиз, что такое GlobalAveragePooling2D()?Это AveragePooling с размером кернела во все изображение. То есть на входе у тебя hxw, на выходе будет один многоканальный пиксель.У dense-слоев наибольшее число степеней свобод, они умеют все то же, что сверточные слои, и еще кучу всего сверху. Чтобы ускорить обучение, мы объявляем, что у нас есть инвариантность вдоль осей w и h (но не в фильтрах, они мапятся каждый-с-каждым как в dense-слоях), и получаем сверточные слои, в которых эта инвариантность жестко зашита. При этом любой такой сверточный слой представим в виде dense-слоя с большим числом нулей и одинаковых параметров вдоль диагонали матрицы (см. пикрелейтед для 1д случая).На самых глубоких слоях мы утоптали наше пространственное режение до 29х29, поэтому говорим, что все, пространственной инвариантности у нас нет. И хуячим dense-слой, то есть по сути 'valid' свертку размером 29х29.Что касается GlobalAveragePooling2D, то здесь dense layer заменен вообще средним арифметическим. Какой тут инвариант подразумевается сам подумай, я не знаю.
>>1379907>Это AveragePooling с размером кернела во все изображение. То есть на входе у тебя hxw, на выходе будет один многоканальный пиксель.Хуясе. Понял, анон.Кстате, походу я долбоеб кто бы сомневался.Я понял, откуда берутся эти охуилярды параметров.Я подключаю полносвязный слой к полноценной пикче 29x29, ясен хуй это много параметров.Количество сверточных слоев должно быть таким, чтобы в итоге уменьшать пикчу до нескольких пикселей.Тогда и больше высокоуровневых признаков будет извлечено и быстрее все будет происходить.
44 процента, аноны!Вроде все делал как обычно.Дообучал первый (последний? Короче тот, что с высокоуровневыми признаками) сверточный слой VGG16.Первые 10 эпох копошилось в районе 0.01, потом выросло до 10, а потом до 40.Так, с этим уже можно работать.Наконец-то поведение этой хуйни начинает напоминать то, о чем я читал в книжке.Я уж думал я совсем даун кого я обманываю, это так и есть
Подскажите, что за хуйня.Запускаю одну и ту же сетку.VGG16, fine tuning верхнего сверточного блока.Всего по 50 примеров на класс.Аугментация изображений.30 эпох.Довольно рандомное поведение наблюдается.3 раза запускал, каждый раз разные проценты.От 40 до 60.Связано ли это с аугментацией изображений?Тип что рандомно там нагенерилось, так сеть и обучилась.Пездос, оно работает, я в шоке, думал выше 7% не прыгну вообще.Это еще старая базовая сеть, можно же всякие инсепшены и реснеты брать + кросс-валидацию, ибо примеров мало, еще гиперпараметры подрочить...
>>1380046>Связано ли это с аугментацией изображений?А она у тебя каждый раз разная, лол?Learning rate уменьши
>>1380052Ну рандомные преобразования же, ну.Конечно разная.Повороты там, отражения, искажения.Валидационные данные остаются как есть, разумеется.>Learning rate уменьшиВот с ним немного экспериментировал. При сильно большом потери огромные.Но тоже вполне себе гиперпараметр и его стоит подрочить, согласен.Знаешь что про one cycle? Что это? Вроде как динамический learning rate.
>>1380057>Ну рандомные преобразования же, ну.Они не должны быть настолько рандомными. Тебе важна повторяемость результатов для итерационных улучшений. Рандома должен быть минимум. Сгенерил гигабайт рандомных картинок и юзаешь их и только их. Иначе вклад любых твоих изменений, даже позитивных, утонет в шуме такого рандома.В теории даже рандомную инициализацию весов можно зарубить, на практике большой роли это не играет.>Знаешь что про one cycle? Что это? Вроде как динамический learning rate.Ставишь lr очень низким, и плавно его наращиваешь до экстремальных значений. Внимательно смотришь график loss - в какой-то момент его заколбасит. Берешь четверть от этого числа и обучаешь начиная с этой четверти до числа. Я пробовал, у меня сработало. Вместо 10 поколений стало обучаться за 2. Но точность выше не стала.
>>1380071Понял, спасибо, анон.Подскажи, что за хуйня происходит на пике?С одной стороны вроде переобучение, но валидейшн-рейт тоже растет потихонечку.
>>1380071>Ставишь lr очень низким, и плавно его наращиваешь до экстремальных значений. Внимательно смотришь график loss - в какой-то момент его заколбасит.Seems legit
>>1373612 (OP)NVIDIA открыла код системы машинного обучения, синтезирующей пейзажи по наброскамКомпания NVIDIA опубликовала исходные тексты системы машинного обучения SPADE (GauGAN), позволяющей синтезировать реалистичные пейзажи на основе грубых набросков, а также связанные с проектом нетренированные модели. Система была продемонстрирована в марте на конференции GTC 2019, но код был опубликован только вчера. Наработки открыты под свободной лицензией CC BY-NC-SA 4.0 (Creative Commons Attribution-NonCommercial-ShareAlike 4.0), допускающей использование только в некоммерческих целях. Код написан на языке Python с применением фреймворка PyTorch.https://www.opennet.ru/opennews/art.shtml?num=50507
Анон, подскажи, пожалуйста, нюфажине.Ну вот допустим вспомнил/подтянул я теорвер, линал, статистику, подучил питон, балуюсь с выборками данных из ОП-поста.А дальше что? Опыта-то нет, кому из работодателей нужен такой работник?Ну и вопрос - а как устроиться? Как вы устраивались?Инб4 записаться на курсы за 999999 по DataScience
>>1380224Знаю только либо людей, которые без опыта и познаний в математике устраивались в стартапы по знакомству, либо задротов, которые после ШАДа шли в Яндекс. Остальные не нашли работу и ушли в программирование.
Аноны, почему модель не сходится при маленьком batch size'е?Все то же самое, запускаю на домашнем пека с маленьким batch size, чтобы в память видюхи влез - вообще сука не сходится.При запуске на сервере с большим batch size - сходится и обучается нормально.В чем дело?
Посоветуйте наиболее актуальные курсы на Coursera, проходил два года назад от Яндекс и МФТИ, но не закончил из-за работы. Сейчас хочу заново взяться.
>>1380317Как быть? Что делать? Можно заставить модель сходится на говножелезе?Пока попробовал уменьшить изображения на входе, но увеличить batch size, посмотрим что выйдет
Еще охуительный вопрос. Больший batch size - всегда лучше? Или не всегда?По идее чем больше образцов захавано при расчете градиента, тем более адекватна оценка.Может ли быть такое, что слишком большой batch size ухудшает модель?
>>1380319Жопой прочитал, у тебя ж как раз батч сайз маленький. Ну, тоже сёдла, но по более простой причине - градиента только в одном направлении недостаточно, ставь больше батч.> Что делать?Больше батч, вон, ты же видишь что лучше выходит. Ну или бустить.>>1380322>Больший batch size - всегда лучше?Зависит от задачи, но в общем - лучше в самый раз, не больше ни меньше.
>>1380311> Аноны, почему модель не сходится при маленьком batch size'е?При изменении batch size для того же перформанса нужно поменять и learning rate так, чтобы отношение bs/lr было константным. Когда ты снизил batch size, тебе нужно было снизить и lr. Ты этого не сделал, в итоге у тебя lr слишком большой со всеми вытекающими.
Кто-нибудь пытался вкатиться в компьтерное зрение? Выглядит как реальный рокет саенс, намного сложнее нейронок. Но я какую-то задротскую книгу листал, может быть на практике все иначе?
>>1380484У нас в мухосрани есть вакансии в CV. Сомневаюсь, что там все уберменши с бэкграундом уровня Szeliski Book, в стране в вузах такого уровня подготовки нет.
Почему kaggle бесплатно раздает виртуалки для машинного обучения, да еще и с GPU?Я просто охуел, когда увидел. Прост приходишь такой и запускаешь свой говнокод на настоящей видюхе.Откуда у них столько денег?Там еще и по несколько штук одновременно можно запускать, на амазоне бы это стоило 5 баксов за час
>>1380492Ты в курсе, что OpenCV разрабатывается русскими и если ты прямо сейчас зайдешь на гитхаб, ты увидишь в последних коммитах одни русские фамилии?Как же вы заебали с этим дрочем на западные вузы. Успехи в Computer Vision зависят прежде всего от способностей к прикладной математике, а математическая подготовка у нас нормальная, даже ее недостатки - они скорее области переусложнения, а не упрощения. И компьютерное зрения традиционно сильная сторона русских.>уровня Szeliski BookНу в этой книжке самые азы как раз.
>>1380494>Откуда у них столько денег?Каких денег, они утилизируют простаивающие мощности на которых в другое время корпорации будут считать реальный код. Взамен получают статистику.
>>1380497Живу на родине OpenCV, сижу с разработчиками в одном офисе Нижний Новгород, Intel. Некоторых их этих людей я знаю лично. У них хорошо с математикой, но эту книгу они бы признали очень сложной.
>>1380512Эта книжка просто введение в специальность. По любой теме краткое описание без особой практики, а хочешь что-то реализовать действительно - пиздуй читать статьи, на которые она ссылается. Может, она для тебя сложная, но проще не бывает.Unless туториалы от васяна, где эти алгоритмы представлены как черные ящики и ты просто их используешь.
>>1380527>Unless туториалы от васяна, где эти алгоритмы представлены как черные ящики и ты просто их используешь99% Машин лернинга.
>>1380497>что OpenCV разрабатывается русскимиЧего бля? Это сборник алгоритмов начиная с 50х, и да, никакой супер йобы толком с ними не сделаешь. А так, да, наши ботаны запилили.
>>1380512>Некоторых их этих людей я знаю личноА они разве не посъебывали, вроде как основатели встали на тапки?
>>1380541Не в курсе насчет основателей, но многие нынешние контрибуторы в OpenCV все еще здесь. Некоторые съебали из Intel и запилили свои стартапы, с упором на диплернинг.
Дообучаю Xception. На обучающих данных быстро растет рейт, но на проверочных очень медленно, хотя и стабильно.С чем это связано?На VGG16 на проверочных данных рейт растет более отрывисто, но быстрее и более коррелирует с тренировочными данными.
Анон, обучающий сеть, а ты не забыл предобработку входных данных сделать (vgg16.input_preprocessing())?
>>1380562Вот та же самая сеть, fine tuning верхнего слоя Xception, но где изображения на входе меньше шакаляться и batch size побольше.В целом, я уже наглядно вижу, что оно более плавно, что ли, обучается.На втором скрине сеть на основе VGG16, итоговый рейт до 70%, но кривая более резкая.Переобучение же - это когда рейт перестает улучшаться на проверочных данных. Но он улучшается же.Когда нужно вырубать обучение? С одной стороны, по идее, чем дальше обучение, тем больше сеть начинает хавать некорректных признаков из обучающих данных.Но при этом у меня на тестовых рейт не падает, сука. Хотя по идее должен начинать в определенный момент.
>>1380635Хмм, это из кераса?Прост через генератор изображения рандомятся, скейлятся и нормализуются.train_datagen = ImageDataGenerator( # Расширяем тренировочные данные. rescale=1. / 255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest')train_generator = train_datagen.flow_from_directory( train_dir, target_size=target_size, batch_size=batch_size, class_mode='categorical')
>>1380645Там для разных предобученных моделей свои способы предобработки. У VGG вроде как переставляются каналы местами (RGB -> BRG) и нет рескейла, только вычитается среднее, у MobileNet нормируются пиксели на [-1, 1].
>>1380650>>1380645Например, vgg16 его предобрабатывает а-ля caffe, а xception - как tf.https://github.com/keras-team/keras-applications/tree/master/keras_applicationsПросто пиздец, ну почему керас так хуёво документирован?
>>1380650>>1380656Хмм, ну это же просто вид input shape'а, нет?Входная форма тензора задается для первого слоя
>>1380668Нет, при чём тут форма входных данных? Форму оно никак не меняет, оно значения пикселей меняет, а веса в готовых нейронках по этим значениям как раз настраивались.
>>1373612 (OP)Анон, хочу пощупать нейрончики, но на моём говно-ноуте это нереально. Посоветуйте какое облако можно взять нищуку, чтобы запускать tensorflow-ы всякие и прочие хипстерские технологии, которые не работают?А когда разбогатею, откладывая деньги, которые дают на обеды - обязательно куплю норм ПК
>>1380800Был массив batch_size x height x width x channels - станет массив такой же размерности, но со значениями, преобразованными в соответствии с тем, как обучали нейронку на imagenet. Когда обучали VGG, у изображения меняли местами каналы и центрировали каждый канал, соответственно, на это же рассчитаны веса готовой нейронки. Когда обучали другие архитектуры, картинки преобразовывали по-другому, и у них веса рассчитаны на другое. preprocess_input преобразует твоё изображение к тому, что ожидает нейронка.
Посоветуйте каких-нибудь хацков для каггла или где их найти, пожалуйста. Я имею ввиду именно что-то практичное для соревнований, типа самостоятельно залейблить тестовую дату и на ней обучаться и вот все такое.
>>1381072Мониторь публичные ядра, туда часто высирают топовые сетки.Правда как-то раз видел сетку из топ 1% по какому-то соревнованию в 30 строк, лол, но обосрался с того, что там тупо около 10 циферок забито уровня0.0040.03320.09Короче хуй пойми откуда взятый набор гиперпараметров.
>>1381067>Когда обучали VGG, у изображения меняли местами каналы и центрировали каждый канал, соответственно, на это же рассчитаны веса готовой нейронки. Когда обучали другие архитектуры, картинки преобразовывали по-другому, и у них веса рассчитаны на другое. preprocess_input преобразует твоё изображение к тому, что ожидает нейронка.Нихуя себе! Спасибо, анон, Это же должно быть пиздец как важно тогда.Запустил несколько эпох с preprocess_function, сразу заметно, что БЫСТРЕЕ обучается, я в ахуе.госпаде, почему я узнаю об этом только сейчас, почему этго не было в книжке по керасу (написанной автором кераса блять)
Ебать, короче для VGG16 добавление предобработки keras.applications.vgg16.preprocess_input дает более лучшие результаты.Но для Xception keras.applications.xception.preprocess_input наоборот значительно ухудшает обучение. Что за хуйня?
>>1380868Google Colab.>>1381569Xception тупо делит весь массив на 127.5 и вычитает 1, т.е. если там были значения от 0 до 255, то оно приведёт их на интервал [-1, 1]. Попробуй выкинуть из ImageDataGenerator rescale.
>>1380644Если VC расзмерность твоей модели слишком большая и ты выучивашь все данные и обобщение фиговое, то это называется оверфитинг.
>>1377041> Почему работа нейронки отдалённо напоминает то, что видит разогнанный мозг под лсд?Я ж писал уже. ЛСД это 5ht2a агонист, который растормаживает воздействие таламуса на кору. В нейроночках ваших изначально нет аналогов таламуса. Поэтому они считай постоянно под ЛСД. Тем более, сверточные сети изначально создавались на основе зрительной коры кошки (Нобелевская премия Хьюбела и Визеля)
>>1381853Вот только посчитать VC-размерность для всякой диплернинх параши вряд ли возможно, во всяком случае, мозги нужны, одной бороды мало. Поэтому, если что-то не работает, только танцы с бубном.
>>1382126Если модель запомнила весь датасет и плохо обобщает та валидации и тесте, то она явно слишком сложная и ничего считать не нужно. К тому же при прототипировании есть только два варианта: нарастить сложность или уменьшить ее.
>>1382535При чем здесь нечеткий петух? В реальности VC размерность не используется для оценки риска модели, все используют k-fold, holdout или LeaveOneOut(с вариациями). На практике все сводится к наращиванию или уменьшению сложности в том числе подбор коэффициента L1/L2/ElasticNet регуляризации, вероятность дропаута, аугментации данных, подбор числа слоев. Само по себе значение VC размерности не столь важно, важно понимание, того, что у глубоких нейронок оно крайне высокое (если случайно перемешать лейблы в ImageNet, то нейронки их заучат c 0 ошибкой).
>>1378996Что мешает использовать в этой задачи нормальный метод нелинейной одномерной регресси например Natural Cubic splines, и просто подобрать коэффициент регуляризации по сетке?
>>1382551VC размерность, слесарушка, нужна не для "оценки риска модели" и прочих бизьнесьметрик чтобы потом отчет составить и начальству отрапортовать, а для того чтобы понять имеет ли вообще смысл задача аппроксимации.
>>1382983>Незнает что такое риск в статистическом обучении, думает, что кому-то интересно сколько точек в данном пространстве может выучить рассматриваемая модель. Считает себя д'артаньяном.Ты точно уроки на завтра сделал?
>>1383038>кому-то интересно сколько точек в данном пространстве может выучить рассматриваемая модельКто-то тут явно ничего не выучил.
>>1382561>Что мешает использовать в этой задачи нормальный метод нелинейной одномерной регресси например Natural Cubic splines, и просто подобрать коэффициент регуляризации по сетке? Возможности микроконтроллера мозгов, судя по всему. Вообще, автор пасты какой-то пахом.Нашел оригинал на drive2 (юзер emmibox, он же, как я понел, Maxi RPD c турбобазара), там этот упорок:1) Ищет СПГС в последнем клипе рамштайна.2) Дрочит на немецкий автопром и хейтит рисовозки3) В своей тюненх-конторе настраивает ведра на сраном 5 январе 4) В своей прошивке для этого самого января, как я понел, напиздил чужого кода, соединил его в хекс-редакторе и продает мозги из конца 90х 5) Кидает через хуй своих клиентов (на том же драйве нашел кучу жалоб что этот хуй с непомерным чсв криво настраивает моторы, посылает нахуй с техподдержкой своего говна и вообще долбоеб)Короче, типичный нечеткий петушок (возможно, кстати, это он и есть, диванон, ололо, уже не первый тредик семенит с этой пастой и сам с собой разговаривает).Но вот за Nelles Oliver: Nonlinear System Identification: From Classical Approach to Neural Networks and Fuzzy Models. Springer, Berlin иIsermann R. Engine Modeling and Control: Modeling and Electronic Management of Internal Combustion Engines ему, конечно, респект, интересная хуита.
Что то какой-то второй золотце, тот по лишпу упоролся, этот по матлабу.https://habr.com/ru/company/edison/blog/432334/
>>1383409Суть VC-теории в теореме о росте. Дело не в определениях про "количество точек" а в том как растёт размерность с увеличением выборки. Бесконечная vc-размерность означает что в задаче аппроксимации не больше смысла чем в предсказании случайного шума.
>>1383722>растет VC размерность с увеличением выборкиРазмерность не растет с увеличением выборки, она от нее вообще не зависит, функция роста выборки зависит. Вероятность переобучения стремиться до нуля с увеличением выборки, для моделей с конечной VC размерностью - вот суть VC теории. А ты даже определений не знаешь.
Уважаемые сеньеры-помидоры. Я почитал обзорные статьи и не очень понимаю, куда двигаться дальше, чтобы побыстрее начать делать ML более-менее осознанно. Правильно я понимаю, что для серьезных задач используют только ансамблевые методы и нейронки? Что оба могут дать сопоставимую точность. Что нейронки могут все, просто устроены на уровне нейрона, не используют классические алгоритмы обучения, работают как черный ящик и требуют ОЧЕ много вычислительных ресурсов для обучения, соответственно обучаются очень долго.В то же время ансамлевые методы используют классическое обучение, сложно устроены, обучаются на порядки быстрее, чем нейронки, но проектировать их дохуя сложно.Хочу делать машоб для управления роботами: навигация в пространстве, манипуляция физическими предметами etc.В идеале я хочу шарить во всем: классические алгоритмы, ансамбли, deep learning. Но может на практике что-то из этого не используется (или не используется конкретно в интересной мне сфере) и соответственно учить не имеет смысла?
>>1373612 (OP)Есть чёнить чтоб совсем не ебаться? Ну там GUI чтоб указать ему что ему скормить и что ему выдать, нажал на кнопочку и обучил?
>>1384064>Правильно я понимаю, что для серьезных задач используют только ансамблевые методы и нейронки? нет>Что нейронки могут всенет>не используют классические алгоритмы обучениянет>работают как черный ящикне совсем>требуют ОЧЕ много вычислительных ресурсов для обученияне совсем>соответственно обучаются очень долго.не совсем>ансамлевые методы используют классическое обучениеты про что вообще? https://dyakonov.org/2019/04/19/ансамбли-в-машинном-обучении>обучаются на порядки быстреенет (по секрету, можно сделать ансамбль из нейронок)>но проектировать их дохуя сложнонет
>>1384064Почитай бишопа или ESL, разберись в основных алгоритмах. Прочитай про нейронки (необязательно).
Elements of Statistical Learning очень сложная книжка. Неужели все двадцатилетние хипстерки, работающие в дата саенс, знакомы с материалом книги? Я не верю, что они смогли это освоить, не утратив молодости и шутливости.
Есть так называемые cascade-forward neural networks (CFNN). Написано, что CFNN имеет весовое соединение от входного и каждого предыдущего слоя до следующих слоев. Показано на приложенной картинке как выглядит cascade-forward neural networks.Подскажите, пожалуйста, как с помощью Keras сделать такую же CFNN как на картинке?
>>1385147Не то, чтобы очень сложная, процентов 80 довольно легко понять. А досконально теорию нужно знать только для того, чтобы пройти собес в Яндекс. Почти все вкатывальщики делают упор на ПРАКТИКУ и ПЕТ ПРОЕКТЫ (fit-predict + симпатичный EDA). Так что не считай себя дураком анончик :3
>>1385995Примерно так:i1 = Input(...)i2 = Input(...)l1_input = Concatenate(...)([i1 i2])l1 = Dense(...)(i1_input)l2_input = Concatenate(...)([i1 i2 l1])l2 = Dense(...)(l2_input)l3_input = Concatenate(...)([i1 i2 l1 l2])l3 = Dense(...)(l3_input)Keras в плане рисования любых графов достаточно прост - конструктор создает веса, которые могут быть переиспользованы, а вызов функции уже конкретный слой.
>>1386152> досконально теорию нужно знать только для того, чтобы пройти собес в Яндекс. Зачем этой офшорной рекламной параше вообще нужны такие специалисты? Это же чистые понты уровня поиска уборщицы с вышкой по математике, пхд и знанием хаскеля. Кроме рекламы и ухода от налогов в рашке они чем-нибудь вообще занимаются? У них гитхаб беднее чем у любого среднего индуса. Полтора враппера и ещё какая-либо хуета без задач.
>>1387667>Кроме рекламы и ухода от налогов в рашке они чем-нибудь вообще занимаются?курсы для вкатывальщиков продают
Спрашивал в ньюфаг треде, но напишу и сюда. Хочу вкатиться в изучение нейронок, покатит ли условный минт или убунта на виртуалке или поставить вторую ось?
>>1390043Если планируешь обучать на GPU, то проще вторую ось поставить, чем ебаться с пробросом видеокарты.
>>1390083>Если планируешь обучать на GPUУ меня неплохая видеокарта, но не топовая, поэтому сомневаюсь в целесообразности ее использования. Я так понимаю, что не обладая 1080, все же лучше воспользоваться этим советом >>1390087 ?
>>1390138>1066/1070Увы, у меня 1063. Я брал ее в декабре для других целей, там количество видеопамяти было не критично, ну и плюс экономия.
У меня super tupoi вопрос. Есть ли какой гайд/репозиторий с кодом о том, как предобработать картиночки? Сделать их одного рамзера там, аугементация и прочая херь?
>>1391485Снимают людей на выблядка и отправляют использованные ими наборы данных в цру, анб, госдеп сша и моссад.
>>1391485И помимо снятия людей на выблядка, они в калаб отдают чуть старое оборудование, а сами они перешли на более новое и классное.
>>1391528Алекстайм возмущался, что женщина снимает его на выблядка, думая что в ее ребенке встроена камера для слежки за ним.
Анон, я сейчас решаю для себя задачу по распознаванию лиц. Использую openCVЗадача:1. Парсить папку с кучей видео2. В одном видео может быть несколько людей3. Один и тот же человек может быть в разных видео4. На выходе я должен получать список "человек - видеофайл1;видеофайлХ;".5. Предварительного сета лиц для обучения нет.Как это лучше сделать?Пока у меня получается следующее:1. Нет ни одного лица в сете1.1. Обучаем модель распознавания на двух чёрных квадратах2. Берём кадр1 видео1 ищем лица.2.1. Пытаемся распознать лицо - получаем слишком большую дистанцию2.2. Всё ок, мы знаем что у нас в модели только чёрные квадраты, поэтому создаём новую персону (персона1) и апдейтим модель распознавания.2.3. Берём кадр2 видео1 ищем лица.2.4. Пытаемся распознать лицо - получаем нормальную дистанцию с персона1 и апдейтим модель. Теперь персона1 имеет 2 фотки и распознаётся лучше.2.5. Начинаются проблемы. В кадр3 видео1 у нас может внезапно поменяться ракурс лица и оно хоть и распознается как персона1, но дистанция получится относительно большой или у нас может появиться персона2 ещё не внесённая в модель распознавания, но она распознается как персона1 с относительно большой дистанцией. Как обойти этот случай? Как понять - это персона1 с другим ракурсом/освещением или персона2?3. Но ок, допустим в видео1 у нас только персона1. Открываем видео2. Там может быть как персона1, так и персона2. Но у персоны1 будет новый ракурс\освещение. Как результат мы с примерно одинаковой дистанцией распознаем человека и или будем считать что персона2 = персона1 или что персона1видео1 != персона1видео2.Как всё это правильно сделать|что почитать?
>>1390978дело не то в быстрее/не быстрее, но в том, что у тебя комп в комнате не будет шуметь + компом можно будет пользоваться и тупо выключать если надо + можно настроить оповещение в телегу по завершению обучения, у colab плюсов много
>>1391867opencv + object tracking и хранить все дескрипторы лиц и после сравнивать их (разумеется перед этим обработать их)мимо нубас
У меня встройка вместо видеокарты, но есть охуенная идея. Кому делать нехуй не в падлу попробуйте потренировать сеточки делать из верхних пиков нижние
>>1391977Попробовал встроенный object tracking, работает как земля. Придётся видимо по крайней мере по началу сортировать руками.
>>1376036>очень сложная областьПро петухов это о тебе? ЖС легче, там нельзя обойтись вызовом двух-трёх абстракций от Гугла.
>>1376425>не мочь написать бэкпропагатор на крестах и не знать, как посчитать производные от элементарных функцийСначала докажи что сам можешь, а потом уже кукарекай. Это нихуя не просто.
>>1376425Осталось придумать, нахуя это делать. Современные системы настолько же далеки от ручного вычисления производных примерно как студенческий интерпретатор лиспа далек от gcc.И если ты не понимаешь, что питон используется только как язык описания графов, а все выполняется на видюхах после компиляции, то просто заткнись и съеби из треда, пафоса у тебя больно дохуя, при том, что ты полный ноль в теме.
>>1378305Пойдёт. Анна выше не слушай. Книжечки лучше, быстрее начнёшь разбираться и не будет пробелов.
>>1392232> В некоторохых подходах к обратному распространению берутся граф вычислений и множество числовых значений, подаваемых на вход графа, а возвращается множество числовых значений, равных градиентам во входных точках. Такой подход мы называем символьно-числовым дифференцированием. Он реализован в библиотеках Torch (Collobert et al., 2011b) и Caffe (Jia, 2013).> Другой подход – взять граф вычислений и добавить в него дополнительные вершины, содержащие символьное описание требуемых производных. Он используется в библиотеках Theano (Bergstra et al., 2010; Bastien et al., 2012) и TensorFlow (Abadi et al., 2015).
>>1376425> Верить в то, что питон или джава медленнее крестовВот и выросло поколение, учившее программирование по мемам
>>1392232>>1392301Школуйня, ты хоть на сайт слесарьплова сходи или пейпер по нему почитай. Там все вычисления организованы в виде графов. Как и в любом другом подобном софте.
Здравствуйте, мне в шараге дали задачу восстановления регрессии нейронной сетью. Требуется выявить и прогнозировать зависимость y = f(x1,...,x14), где y - уровень загрязнения воздуха, а x1...x14 - это количественные переменные влияющие на y. Я особо не разбирался в этой теме, просто взял в шараге набор данных про эти загрязнения в Excel на 25000 примеров. Сконвертировал в csv затолкал в Keras. И все, казалось бы радуйся. Дело сделано, мавр может уходить. Happy end. Но нет. Дело в том, что когда я показал на кафедре свое решение. То кафедральные преподаватели меня начали спрашивать - мол нахуя тебе нейросеть? Почему нельзя применить обычные математическое методы восстановления регрессии? На эти вопросы я ответить не смог, потому что препод который ставил мне задачу, сказал мне делать именно нейросеть, потому что это кайфово, молодежно и вообще. К тому же этот препод не шарит в методах восстановления регрессии, он просто слышал про нейросеть и решил, чтоб я такую сделал. Теперь поздняк метаться, препод уже давно зафиксировал за мной задачу с нейросетью и заполнил университетские бумажки. И поэтому я должен усраться, но доказать, что нейросеть в данном случае лучше математических методов восстановления регрессии(даже лучше, чем SVR и Gradient boosting)Подскажите, пожалуйста, как доказать, что нейросеть лучше, чем SVR и Gradient boosting? Могу ли я применить SVR и Gradient boosting из примеров scikit-learn на своем наборе данных, получив точность 94%? А затем взять keras и нахреначить огромную нейросеть с кучей нейронов, выжать точность 98% и потом заявить, что нейросеть очень точная? АЖ НА 4 ПРОЦЕНТА! И поэтому она лучше! Можно так сделать? Или это неправильно и не по понятиям?
>>1392410Один перцептрон и есть линейная регрессия. Каким способом керас высчитывал ошибку? Методом наименьших квадратов?
>>1392410Gradient boosting is a machine learning technique for regression and classification problems, which produces a prediction model in the form of an ensemble of weak prediction models, typically decision trees. It builds the model in a stage-wise fashion like other boosting methods do, and it generalizes them by allowing optimization of an arbitrary differentiable loss function. Gradient boosting can be used in the field of learning to rank. The commercial web search engines Yahoo[13] and Yandex[14] use variants of gradient boosting in their machine-learned ranking engines.
нейросети скоро порешают моделейсколько ещё профессий они убьют прежде чем дойдет до программистов? https://2ch.hk/news/res/5056490.html
>>1392410Судя по твоим словам, подозреваю, что у тебя ебический оверфит и на самом деле нихуя не работает, и об этом преподы и спрашивают.
>>1392432>Один перцептрон и есть линейная регрессияТам, вроде, нелинейная регрессия, multiple linear regression дает 0,74 эр квадрат, но зато нейросеть, gradient boosting и SVR дают 0,94-0,98. Спасибо за пост с упоминанием линейной регрессии, значит я лоханулся, и мне надо выпилить слово "зависимость" и выпилить обозначение у=f(x1,...,x14), а то можно подумать, что там функция и линейная зависимость. Это просто я написал неправильно, пытаясь передать смысл. >Каким способом керас высчитывал ошибку? Методом наименьших квадратов?Да, так>>1392445Благодарю, так и хочу сделать, но выходит, что я не по понятиям поступлю, если мне надо выгородить нейросеть, то я должен сделать вид, что она чуть-чуть точнее. И я не знаю, можно так или это слишком толсто - без разбора применить SVR, gradient boosting, скопипастив примеры из интернета, получить 0,94 эр квадрат, а над нейросетью усираться, подбирай параметры и количество слоев и нейронов, чтобы сделать 0,98 и сказать СЕТЬ-ТО ТОЧНЕЕ ОЛОЛОЛО!>>1392632Да, вроде, нет. Тестовые данные же не участвуют в обучении. Преподы спрашивают у меня - зачем нейросеть, если есть методы машинного обучения, которые предназначены для восстановления регрессии. А я не могу ответить, потому что лоханулся с заданием и мне его уже оформили как "нейронная сеть" и поздно метаться. И теперь выходит, что я должен каким-то образом высосать из пальца причину почему нейросеть лучше SVR и gradient boosting'a
>>1392687>я должен сделать вид, что она чуть-чуть точнеену вообще нейросеть должна быть точнее>над нейросетью усираться, подбирай параметры и количество слоев и нейроновэто нормально, все так делают
>>1392687Ну блэд, это наука. Если данные не подходят под твою концепцию, значит тем хуже для данных. Делаешь фактическое сравнение методов. Если какой-то метод лучше нейросети, меняешь датасет так чтобы он был хуже нейросети.
Я правильно понял, что на пикриле происходит типичнейшее переобучение?Обучаю очень здоровую сеть на достаточно малом наборе данных 10к образцов, без регуляризации.Я верно понял, что сеть тупо запоминает всю обучающую выборку и не вычленяет действительно полезные признаки из нее?
>>1392992200 классов, готовый resnet50 с полностью замороженой основой, обучается только полносвязный слой.Мне непонятно одно, какого хуя это поделие вообще не обучается.Ладно бы там рейт низкий был, я бы все понял, но такое ощущение, что обучение вообще не идет.Vgg с 10кк тренируемых параметров нормально обучалась без переобучения, тут 2 ляма параметров - переобучение.Не должно так быть
>>1392994Дропаут попробуй вставить.Можно применить глобальный пулинг к карте признаков (в керасе при импорте прямо можно указать).Опять же предобработка изображений (preprocess_input).Не птицы часом?
>>1392994Возможно, перескакивает минимум функции потерь. Попробуй поиграться с моментумом оптимизатора, понизить lr.
>>1392999>Дропаут попробуй вставить.А толку? Будет действовать только на полносвязный слой.К тому же, есть аугментация изображений.>preprocess_inputСтоит keras.applications.resnet50.preprocess_input.> глобальный пулинг к карте признаковСтоит model.add(layers.GlobalAveragePooling2D()), это оно?
>>1393050> > К тому же, есть аугментация изображений.Проверь, что она корректно работает. А то может все изображения там ломаешь, вот с нормальными оно и не работает потом
>>1393050>Будет действовать только на полносвязный слойТак ты же только его и обучаешь, разве нет? Или что значит "с полностью замороженной основой"?
>>1393056Да, только его и обучаю.Ну, я прост думаю, что раз сеть запоминает всю обучающую выборку, то дропауты на полносвязном слое уже не помогут.Если бы там были дропауты между conv-слоями, то был бы толк.
>>1393060Если у тебя нижние слои фиксированы, то они, очевидно, ничего не "запоминают" (что за корявое слово, выборку разве что методы ближайших соседей запоминают и методы, использующие ядра), это некоторое константное преобразование входа, всё переобучение происходит на полносвязном слое.
>>1393067>Если у тебя нижние слои фиксированы, то они, очевидно, ничего не "запоминают"Блять, действительно, какой же я даун.
Тогда в чем дело, у меня во всех сетках абсолютно одинаковый полносвязный модуль.Меняется только сверточная основа.Почему vgg16 обучается, а resnet50, xception и inception нет?
>>1393070Может, из-за размерности карты признаков? У vgg16 на выходе 512 фильтров, т.е. карта признаков для входного изображения 224 x 224 будет 7 x 7 x 512, при применении global average pooling - просто 512. Не знаю, что у других, но наверняка больше.
>>1393072У resnet 2048.Чет мне не кажется, что дело в этом.Может в preprocess_funciton?Использую стандартные для каждой сетки.
>>1393090Не знаю. Хотя, кстати, у меня есть подозрение, что preprocess_input - это in place функции, т.е. они ещё и аргумент меняют.
>>1393099Да!2 новости, хорошая и плохая:1. Я, кажется, нашел в чем была проблема. Таки в препроцессинге.2. Я настолько тупой, что понял это только сейчас, а остальные 200 экспериментов провел некорректно.Вот на втором пике закомментированная строка раньше была раскомментирована.Я создал эти генераторы еще давно, когда только начинал тыкать нейросети. В книжке был пример, там вручную делался препроцессинг для обучаемой с нуля сетки.А я и preprocess_function использовал и рескейл пикселей изображения. Вот из этого и выходила хуйня.Еще один вывод. Предыдущие сети (на основе vgg16) обучались даже несмотря на хуевый препроцессинг.Это возможно по двум причинам:1. Этот итоговый препроцессинг подходил vgg16 и был близок к ее нормальному препроцессингу.2. Если достаточно долго обучать сеть, особенно дообучать верхние слои, то постепенно она пристроится к твоему препроцессингу (хотя, конечно, это полная хуйня, так делать не надо)
>>1393108>Если достаточно долго обучать сеть, особенно дообучать верхние слои, то постепенно она пристроится к твоему препроцессингуЭто как бы очевидно.
>>1393525Это же считай оружие в информационной войне. Серия грамотных вбросов может спровоцировать все что угодно от пынягейта / хуйзнаетчегогейта до реальной ядерной войны. Маск говорил, что ИИ может такую хуйню организовать. Но на это же способны террористические организации, нанявшие хакеров. И все, пиздарики человечеству или как минимум отдельным странам.
Можно ли в автокодировщике встроить слой субдескритизации во время считывания изображения, а потом увеличить размерность обратно?
>>1393219>>1393166До сих пор хуею, какой я дегенерат.Как исправил эту критическую неисправность в корявом препроцессинге, все сети с пол-тычка сразу стали обучаться нормально, как от них и ожидается.
Пацаны, хз, сюда это или нет.Задача: есть монеты на фото. Нужно определить их количество.Куда копать? Есть готовые решения?
Как оптимизировать гиперпараметры?Какой оптимизатор ставить, какой learning rate, моментум и другие гиперпараметры?В книжке, что я читал, об этом тактично умалчивается, говорят лишь: "Ну это молодая область, хуй знает короче, в целом, большинство использует метод квадратно-гнездового тыкинга".Но это хуйня же. Наверняка есть способы
Почему некоторые сети показывают на моих данных более лучшие результаты, чем другие?Причем логика вообще какая-то ебанутая.VGG16 - почти топ, лол, хотя это очень старая и простая по нынешним меркам есть.Получше Xception.Inseption и Resnet показывают результаты хуже чем vgg.Щас для лулзов запустил MobileNet - еще лучше vgg оказалась.
>>1394045Ставь по умолчанию и не выёбывайся, потом, если будет желание, можешь с ними поковыряться ради сотых долей процента.
>>1394045Grid search, random search, последовательно перебор, байесова оптимизация вот методы, которые используют на практике. Ну и LR динамически нужно уменьшать.
>>1394215Используются они только в классическом ml, в DL слишком долго и дорого, там с гиперпараметрами почти не играются в реальных задачах
>>1394224LR предпочтительнее уменьшать на плато. С числом нейронов и архитектурой почти всегда играются, аугментации подбирают, коэффициенты дропаута и l2 регуляризации подбирают. Так что используется.
>>1394045> Как оптимизировать гиперпараметры?Байесова оптимизация решает. Буквально вот эта поебота https://github.com/fmfn/BayesianOptimization берется как черный ящик и вперед>Какой оптимизатор ставитьадам>какой learning rate1-e4>Но это хуйня же. Наверняка есть способы Способы итеративные. Сначала, когда не знаешь, обучается оно или нет, используешь консервативные стратегии: lr поменьше, можно тупой как валенок SGD, и добиваешься постоянного убывания лосса. Дальше ты видишь, что лосс убывает, но как-то медленно, бесконечно медленно, неделю нужно ждать, врубаешь adam и заставляешь эту хуйню работать. Дальше понимаешь, что в конце концов обучение упирается во что-то и тебя этот уровень не устраивает, пробуешь разного рода стратегии переменного lr. Лично я юзаю шаманство отсюда https://www.fast.ai/2018/04/30/dawnbench-fastai/ , и получаю ровно то, что там пишут, обучение на порядок быстрее.Но вообще правило такое, что если SGD с медленным lr не обучается (даже гипермедленно), играться особого толку нет, надо чинить архитектуру.
>>1394284>Лично я юзаю шаманство отсюда https://www.fast.ai/2018/04/30/dawnbench-fastai/One cycle policy? Слышал про него, в ближайших планах попробовать.Пока тупо юзаю уменьшение LR на плато, помогает повысить точность процентов на 5-7.Еще, не знаю почему, но замена adam на простой SGD дала еще +5%.
Сразу извиняюсь на, наверное, глупый вопрос. Передо мной стоит задача классификации, при этом 2 из 3 признаков — это строки. Как с этим работать? До этого решал только такие задачи, где все признаки — это числа. Фреймворк — пайторч, если это как-то влияет.
>>1394420Нужна модель с несколькими входами.Для обработки текста используются свои архитектуры.Можно сделать именно несколько входов, они будут обучаться совместно, а можно тупо ансамбль сделать, вынеся обработку текста в отдельную сеть, но это будет менее эффективно, ибо по сути, текстовая сеть будет обучаться в отрыве от остальной.нубас
Что такое "переобучение" блять? Я ничего не понял.Это когда точность перестает улучшаться на валидационных данных. Да?Или когда точность на валидационных данных начинает падать по отношению к точности на тренировочных?Так вот, второй пункт у меня вообще всегда наблюдается. Всегда в итоге сеть на тренировочных данных уходит в 99%, а на проверочных - уж как пойдет.
Мимо проходил, извиняюсь за тупой вопрос.Но есть ли однокнопочные программы, в которой я указываю путь до своего пака с Чёрным Властелином, сеточка обучается, делает магию и начинает выдавать мне новых Чёрных властелинов?
>>1394546Как я понимаю, это классификаторы, которые будут мне говорить, насколько процентов этот Фотошоп похож на ЧВ. А я бы хотел генератор, по типу дипдреамс, который мне хоть на рандомный шум нарисует Чёрного Властелина во всей его красе, которым не стыдно вайпать неугодный тред.
>>1394553>Однокнопочных програм нет, а теперь уебывай обратно в другой топик программачаСпасибо за информацию.
>>1394655Положняк:Top tries: Keras API with TF/Torch backendMid trier: ю plain TF, plain TorchShit trier: - Deeplearning4j, Caffe, Theano, MXNet, MatlabUltra shit trier: визуальное конструирование сетей мышкой в браузере (azure machine learning и прочее), ненужные надстройки над существующими фреймворками (в том числе Fast.ai), starter pack'и, шаблоны "для любой задачи" и прочие васяноподелки с гитхаба
>>1394672Почему в keras'е нет встроенного ony cycle policy как в fatai, а есть только васяноподелка на гитхабе?
>>1394673Потому что Keras - это стандарт API для библиотеки машинного обучения, который реалищуют и другие библиотеки. Туда не нужно тащить каждую модную штуку из свежей публикации. Пройдёт время и станет ясно, что какая-то штука точно необходимая и без неё никак нельзя - добавят. Менять же стандарт каждый месяц - получишь совсем адский ад, примерно как в мире js и веб-макакинга, где каждый месяц проекты на новую модную библиотеку переписыают. > ony cycle policyЕсть в keras-contrib, он для этого и существует как инкубатор.
>>1394544GAN это оче тёмное колдунство, которое работает через раз, так что вряд ли ты что-то такое найдёшь
>>1395308Что ты как маленький for batch in range(number_of_batches): K.set_value(generator.optimizer.lr, lr) generator.train_on_batch(....)Две строчки всего, а столько нытья
Подскажите библиотеки с готовыми сгенерированными данные по типу sklearn.datasets.samples_generator. Чтобы они были разделены разными способами. Еще подсказали, что в tf.data есть, но не могу найти, возможно, не там смотрю
>>1373612 (OP)Ребят, читаю того же Николенко и параллельно Гудфеллоу и застрял на математическом введении. Пытался проскакать галопом по статистике и линейной алгебре по спецучебникам, но делу это не особо помогло.Стоит ли полгодика подрочить математику для понимания вещей? Или в вопросе можно разобраться и без этого бэкграунда? Просто такие темы, как тензорное исчисление, векторный анализ, серьезный теорвер и теория инфы — это не хуй собачий.Я студентота второго семестра, биоинформатик. Зачем я в это хочу вникнуть? Просто любопытно, как эта хуита работает и с чем ее едят.
>>1395621Там не так много математики, если ты не исследованиями планируешь заниматься. Линейная алгебра, основые дискретные и непрерывные распределения из матстата, баесовский вывод, численные методы и оптимизация, свойства функций из матана. Все пожалуй.
>>1395621Этот хорошо разжевал.https://youtu.be/adsSwIcvfD0Вторая его лекция тоже норм. Третья резко стала сложной.
>>1395636Никак, в этой сфере желающих вкатится дохуя, а вакансий не требующих реального опыта почти что нет.
>>1395624>Линейная алгебра, основые дискретные и непрерывные распределения из матстата, баесовский вывод, численные методы и оптимизация, свойства функций из матанаПотому удивляются, что это говно не работает.
>>1395665>Устраиваешься в какой-нибудь сбербанк Ух, вот ещё мне этих бюрократии, дресскода и жёсткого графика с 8 до 5 не хвататло.
Чому никто не говорит об svm? K-means? Слишком просто? Не нужно? Почему никто не обсуждает imbalanced data? Dataset shift? Overfitting? От качества исходных данных зависит чуть ли не 99% результата.
>>1395733Блядь, какой же ты тупой. Хули толку от того что ты работаешь в ойти, если спрашиваешь про ML. Единственный более-менее не расчитанный на везение вариант - устроиться в фирму с ML и далее потихоньку горизонтально перебраться. Ты много знаешь контор, где есть дефицит ML специалистов? Я - нет.Что касается меня, у меня в резюме уже несколько ML проектов и проблем с трудоустройством нет.
Поясните за аудиофайлы. Какие из них извлекают признаки, где об этом почитать, в каких библиотеках реализовано? Я в общем то хотел запилить что-то типа генератора узоров под музыку типа как во всяких проигрывателях.И ещё, чисто из любопытства. А есть ли классификаторы, определяющие по музыке её жанр?
>>1395745Обычно STFT спектрограмму смотрят, в распознавании речи фичи пофичастее используют. А генераторы узоров это как правило спектроанализатор подключенный к рисовалке красивостей, никакого ML.Классификаторы на гитхабе посмотри, по мне классификация звуков это самая скучная задача, не стоящая времени
>>1395742>Блядь, какой же ты тупой.Нет, ты.> устроиться в фирму с ML и далее потихоньку горизонтально перебратьсяСпасибо, капитан. Так и делаю, но на это нужно время.Я уж думал что побыстрее есть.Раз ты Ыксперт, расскажи, пожалуйста, какие есть проекты, есть ли там что общее или в каждом будет упор на что-то своё?И что насчёт карьерных перспектив с твоей точки зрения?
>>1395748Ок, спасибо.>никакого ML.Да я в курсе, но мне показалось, МЛщики должны знать про извлечение признаков из аудио. Кстати рисовалки красивостей как устроены?>Классификаторы на гитхабе посмотриДаже не знаю, что там в поиск забивать.> по мне классификация звуков это самая скучная задача, не стоящая времени Почему? Делаешь кроссвалидацию и подгоняешь гиперпараметры, как и весь остальной МЛ.
Почему сеть показывает нормальный рейт на валидационных данных (не тренировочных), но плохой на тестовых данных, которые она вообще ни в каком виде ни разу не видела?Это что, неявное переобучение на валидационных данных?Пока я дрочил архитектуры и гиперпараметры, сеть таким образом получила слишком много информации из валидационных данных?
>>1396477Да может быть и такое, плюс проверь какие у тебя данные на тесте, возможно они из другого распределения
>>1397002 Я тебе дал, но ты сказал, что тебе мало. Если тебе и этого мало - ты очень тупой и тебе рано в deep learning. Впрочем, ты правда тупой, если до сих пор просишь.max_lr = 2e-3#величина подбирается под сетку плавным ростом lr до максимальной величиныmin_lr = max_lr/4lrs = np.interp(range(200000), [0, 50, 100], [min_lr, max_lr, min_lr], period=100)#у меня пила с шагом 100 вместо one cycle policy, но можно нарисовать любую кривую lrlrIdx = 0for epoch in range(number_of_epochs):....for batch in range(number_of_batches):........K.set_value(setochka.optimizer.lr, lrs[lrIdx]) ........lrIdx = lrIdx + 1........setochka.train_on_batch(..., ....)....#здесь можно повалидироватьВот и все.
>>1397005Спасибо, но как я и писал, там все несколько сложнее.Меняется не только lr, но и моментум + weights decay.Плюс изначальные параметры подбираются не отпизды, а другими простыми алгоритмами.Плюс в конце lr затухает полностью, что с другими параметрами уже не помню.Вот я и ищу уже готовую реализацию этой хуйни как в фаст.аи.
>>1397007>Меняется не только lr, но и моментум + weights decay.Это 4 строчки к моему коду. В частости заменить Adam на AdamW, который есть на гитхабе для keras>Плюс изначальные параметры подбираются не отпизды, а другими простыми алгоритмами.Ага, что написано в моем комменте.>Плюс в конце lr затухает полностью, что с другими параметрами уже не помню.Если ты думаешь, что подобный ахалай-махалай обязательно заработает на твоей сетке, то нет. Я, например не просто так моменты не трогаю, а потому что мне это не нужно. Я и от AdamW отказался>Вот я и ищу уже готовую реализацию этой хуйни как в фаст.аи. Да ты просто похоже поверил в мемасики про import slesarplow и уверен, что на все должен быть подобный скрипт. Проблема в том, что если ты подобные простейшие вещи не можешь сделать, как ты исследовать будешь? Одно дело найти на гитхабе реализацию ради экономии времени. А другое дело ныть неделю будучи неспособным написать 10 строчек кода школьного уровня. Пиздец какой-то.
ЛГБТ зумерки не могут в машоб. Алсо, этот ваш ЛГБТ диплернинх это вообще не машинное обучение, а сойбойство простое и понты. Практического применения у этой хуйни нет - негров так и не распознает нормально, а разрисовывание котиков под Пикассо, генерация несуществующих гуков, сельдей и котов уже всем поднадоела, практической же ценности у этой хуйни нет. А у чего есть, то запрещают вовсю, например, подстановка фейковых еблетов на видео, файндфейсы итд. Так что остаётся вам друг другу жопы дергать, а самым успешным - писать рекламную малварь в рекламной параше Яндекс.
>>1395748>по мне классификация звуков это самая скучная задачаДа ну, по-моему ничего интереснее временных рядов в машобе нет. Ну и рл, но это другая опера.
>>1398327Полносвязный слой (перцептрон) может эмулировать работу любого другого слоя.Всякие специализированные слои - лишь урезанные версии перцептрона.Таким образом, любая современная сеть - это несколько перцептронов.
>>1398348Это всё понятно, вопрос же - почему некоторые задачи удалось решить только наращиванием специальных слоёв.
>>1398349Удачный выбор эвристики слоев - свертки и пулинги, которые были навеяны нейробиологическими исследованиями.
>>1398434Одному слою можно поставить нелинейную функцию активации и он будет решать не линейные разделения.
>>1398441Не будет. Функция активации просто растягиевает-сжимает пространство вдоль осей после применения преобразования пространства матрицей. Ключевой момент тут - после, а не до. То есть, если у тебя есть допустим функцияy=f(W x + b) И ты считаешь, что y>0 это один класс, а y<0 - это другой. Но тогдаf(W x + b) > 0 это то же самое чтоW x + b > f^-1(0)То есть ты применяешь функцию, обратную функции активации, к нулевому вектору (получишь либо вектор из нулей, либо вектор из 0.5 - короче какую-то константу) и дальше получаешь линейный класстификтор W x + bВот когда у тебя два слоя, все становится веслее, так как после применения функции активации ты скармливаешь следующему линейному слою уже нелинейно искаженное постранство.
>>1398459>f(W x + b) > 0 это то же самое что>W x + b > f^-1(0)Это, во-первых, бессмыслица, во-вторых даже в одномерном случае верно только для монотонной f.
>>1398489Для других задач функция активации тебе даст немного больше свободы и формально нейронка будет нелинейной (то есть f(x+y) != f(x)+f(y) ), но в целом из-за того, что она применяется поэлементно, особой выразительности в этом не будет.А когда функция активации применяется не поэлементно, то ты и получаешь многослойную нейронку. Каждый слой это такая ебическая функция активации для предыдущего слоя.Вот тут много картинок http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/ , они не совсем по этой теме, но дают аппарат для воображения понимать как именно что работает
>>1398634Один скрытый слой - это два слоя, скрытый и выходной, и случай не f(W x + b) , а W1 f(W0 x + b0) + b1 и на этом действительно можно построить нелинейный классификатор. Только за такое и в ебасос получить можно.
>>1398661Погоди, так перцептроном вроде и называют сеть с одним скрытым слоем минимум. Вопрос то про него и был, без скрытых слоёв это просто логистическая регрессия.
Да, блять, наконец-то.Смог заставить выполняться сеть в ебаном докере на сервере.Последние версии tensorflow не будут работать с виртуальным процессором. Tensorflow также в принципе не работает с питоном 3.7, макс 3.6.
>>1398679> Tensorflow также в принципе не работает с питоном 3.7,Всё отлично работает. И в актуальной стабильной и в альфе 2.0
>>1398673Ок, тогда правильный ответ про ебасос.>>1398671Представь себе табличку с колонками вида x1 x2 x3 x4 y. Дальше ты пишешь код в котором интерполируешь хуйней типа nearest neighbor:yoba(табличка, x) {x' <- ближайший x в табличкеreturn табличка[x']}Вот с помощью такой таблички можно аппроксимировать функцию с любой точностью, если табличка будет достаточно большой. А значит ты можешь с помоьщю такой табличке проаппроксимировать даже тысячеслойный resnet. Делов-то берешь все возможные варианты картинок 255х255х3, то, что resnet выводит на каждую картинку, и все заебись.Вот однослойный персептрон, с помощью которого можно аппроксимировать любую функцию, недалеко от такой таблички ушел. Да, в теории с его помощью можно аппроксимировать любую функцию (а значит любая глубокая нейронка может быть представлена в виде однослойного аналога с тем же количеством входов и выходов). Но на практике он будет, во-первых, очень широким. Экспоненциально широким. Возможно даже не влезет в размеры вселенной.Во-вторых, в ML нас интересует не сама результирующая функция, которая бы тупо равнялась каким-то конкретным значениям в узловых точках, а ее поиск, чтобы он не просто протабулировал твой трейнинг сет, а чтобы он еще и правильно работал на валидейшене. Для этого либо его структура должна быть такой, чтобы закладывались какие-то инварианты, либо твой алгоритм обучения должен эти инварианты накладывать. А у однослойного перспектрона нихуя инвариантов нет. Все влияет на все.
>>1398886>Вот однослойный персептрон, с помощью которого можно аппроксимировать любую функцию, недалеко от такой таблички ушел.Ну то что однослойный перцептрон только теоретически разделяет множества это понятно. Вопрос же был по какой фундаментальной причине именно стаканье слоёв помогает. Если не ограничиваться только задачами с конкретными архитектурами, связанными просто с природой самого датасета, как например сверточные сети для распознавания изображений.>Экспоненциально широким. Возможно даже не влезет в размеры вселенной.Да не, достаточно взять слой из N+1 нейрона для N нейронов на входе. С математической точки зрения.
>>1398929> по какой фундаментальной причине именно стаканье слоёв помогает.Там не простые слои. Обычный перцептрон с десятками слоёв будет просто все усреднять и нихуя им не аппроксимируешь. А в этом вашем ЛГБТ диплернинхе стыкуют по-сути неокогнитроны и свёртки по очереди через один слой. Очевидно, что десяток стыкованных неокогнитронов даже без сверток лучше чем один. К перцептрону в смысле изначальной розенблаттовской модели это все относится очень опосредованно.
>>1398929>Если не ограничиваться только задачами с конкретными архитектурами, связанными просто с природой самого датасета, как например сверточные сети для распознавания изображений.А как ты этим можешь не ограничиваться? Возьмем датасет, состоящий из рандомного шума, при чем не псевдорандомного, а рандомного. Очевидно, что однослойный подход будет работать лучше всего. Но любой объект реального мира, с которым работает человек, ведет себя как решение каких-то дифференциальных уравнений и локально подчиняется каким-то простым правилам, последовательно применяемым друг к другу. Скорее всего причина в антропном принципе, если бы физические законы не были просты, то и разумной жизни не могло бы возникнуть. Соответственно идеальный предсказатель должен выглядеть как численный решатель какого-либо дифференциального уравнения. И решения крайне редко выглядят как sum(alpha(Wt+phi)).На самом деле согласно последней статье про lottery ticket (https://arxiv.org/abs/1803.03635) ширина тоже важна для хорошего initial guess, но без глубины ты нужной мощности точно не получишь.>Да не, достаточно взять слой из N+1 нейрона для N нейронов на входе. Исходя из этого, ты можешь аппроксимировать любую одномерную функцию с помощью двух параметров. Это нонсенс. Если ты скажешь, что у тебя хитрая функция активации, то в которую ты спрячешь всю сложность, то функция активации сама по себе одна и та же для каждого выхода, и нонсенс получается уже в двумерном случае.
>>1398971>Соответственно идеальный предсказатель должен выглядеть как численный решатель какого-либо дифференциального уравнения. И решения крайне редко выглядят как sum(alpha(Wt+phi)).>На самом деле согласно последней статье про lottery ticket (https://arxiv.org/abs/1803.03635) ширина тоже важна для хорошего initial guess, но без глубины ты нужной мощности точно не получишь.Ну блин это все философия какая-то. Т.е. насколько я понял до сих пор не известно.
>>1398327Есть теорема Колмогорова, что композиции линейных комбинаций и нелинейной функции одного переменного уже при вложенности 3 могут аппроксимировать любую заранее заданную непрерывную функцию, но я боюсь призвать шизика. Ну и плюс оказывается, что большие сетки с удачно подобранными архитектурными фичами (свёртки, гейты в LSTM, механизм внимания) начинают на достаточно больших наборах данных извлекать себе признаки.
>>1399193> Есть теорема Колмогорова, Которая гласит, что функция многих переменных может быть аппроксимирована суперпозицией функций от двух переменных?
>>1399117>Т.е. насколько я понял до сих пор не известно.Это - известно. Глубокие нейронки выразительнее широких с тем же числом параметров. Почему я написал.Неизвестно другое - почему обучение градиентным спуском так хорошо работает. Есть предположения, но они не доказаны.
Посоны, спасайтеРешаю одну несложную задачку по построению регрессииНеобходимо предсказывать действитлбное число от -1 до 1Запилил простенькую сетку в керас на 3 слоя, с тангенсами в качестве активационных функцийВсе работает как надо, но для того чтобы ее использовать вдиссере необходимо доказать, что данная сетка наиболее оптимальнаЧе дальше с ней сделать вообще можно? как улучшить?Пока поигрался с количеством нейронов, активационными функциями и алгоритмами оптимизацииМожет нужно структуру менять или что-тодобавить?
>>1400451Построй RF, SVR с нелинейным ядром, GBDT, OLS, Ridge, Lasso, ElasticNet ,KRR, сравни их с сеткой по 5/10 фолдовой CV или LOO, и на тестовом множестве замерь метрику.
>>1400528спс, основной посыл понял, буду изучатьПолучается по сути мы разрабатываем отдельные сетки под конкретные виды регрессии?Есть какой источник типа книги или учебника, где подробно описано применение инс для решения задач регрессии? Для изучения и чтобы было на что сослаться
Здравствуйте, мне в далекой провинциальной шараге задали диплом с темой по нейронным сетям. Мне нужно несколько наборов данных проклассифицировать и добиться неплохой точности на тестовых данных. Я застеснялся отказаться от этой темы, я все проворонил и теперь уже поздно отказываться от темы, ибо в конце мая защита. За это время я читал две книги на русском языке Ф. Шолле Глубокое обучение на Python, Библиотека Keras - инструмент глубокого обучения, посмотрел курс по нейронным сетям на stepic.org, смотрел на youtube серию видео Андрея Созыкина - Глубокое обучение на Python. После этого я пытался сделать нейронную сеть на Keras, копипастив коды из книжек и гугла, и моя нейронная сеть дает очень плохую точность на тестовых данных. Потому что я не знаю как правильно выбирать число нейронов, количество слоев и другие параметры нейронной сети. И получается ужас.Подскажите, пожалуйста, какие-нибудь видеокурсы на русском языке или книги, где рассказывается как правильно выбирать количество слоев, количество нейронов, как правильно задавать для нейронной сети значения параметров momentum, learning rate, decay, epsilon, какую выбирать регуляризацию. Помогите!
>>1402827Зумера с профильным образованием не могут в машоб. > я пытался сделать нейронную сеть на Keras,Ну тау и почитай книжку от самого автора кераса. Он очень грамотно поясняет за диплернинх в т.ч на практических примерах в керасе. Или ты и в английский не можешь? Это же пиздец, отучиться и ко времени написания диплома даже не понимать что копипастишь, откуда и зачем.
>>1402827>задали диплом с темой по нейронным сетям. Мне нужно несколько наборов данных проклассифицировать и добиться неплохой точности на тестовых данныхЛол, за это диплом дают? А если я какой-нибудь Sphere GAN дома реализовал, мне дадут докторскую степень сразу?
>>1402836>Ну тау и почитай книжку от самого автора кераса. Ладно, спасибо, вроде, это и есть Ф.Шолле, еще раз посмотрю, попробую.>>1403641>Лол, за это диплом дают?>Сначала диплом за классификацию ирисов получи.Да, дают. Но набор данных с ирисами Фишера взять, естественно, нельзя, можно только те наборы данных, что принудила взять кафедра.
ПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.htmlПЕРЕКАТ! https://2ch.hk/pr/res/1406660.html