Дорогие друзья! Небольшой квест. В этом видео я специально сделал небольшую арифметическую ошибку. Она не влияет на общее восприятие и понимание материала. И тот, кто обнаружит эту ошибку, тот красавчик! ))
Хммм... хитрый ход ) Придется второй раз пересмотреть, и тут два плюса, увеличится число просмотров, и улучшится качество понимания и запоминания материала. Хорошая идея подстегивания слушателей курса к Deep learning )))
11:26 - вот тут по-моему "ашипка", получится не 127 на 127, но 126 на 126 пикселов, так как и снизу и сверху и справа и слева теряется по пикселу. Смотрю дальше... может ишо чего замечу ) Переместил свой коммент сюда, чтобы в общей ветке другие не прочитали и не расстроились "ну вот, а я сам хотел бы поискать ашипку".
@@selfedu_rus я написал и потом удалил свой комментарий про это -- посчитав неважным -- в почте у вас должен остаться этот комментарий ) спасибо за ваши видео
Учусь в GB, там рассказывал преподаватель много много много - часа три, понял, что я мягко говоря не способен учиться. здесь за 20 минут я понял, как это все работает. было бы неплохо еще рассказать, для чего делается укрупнение признаков, возможный ответ, для увеличения скорости нейронной сети, за счет экономии вычислительных мощностей?
Хочу спросить: а как так применяя операцию свертки на входной тензор изображение, не получили тензор с меньшей размерности. Например как в конце видео: [32, 32, 3] -> [32, 32, 10] ? Если это так то это значит что мы применили свертку размером [1,1].
Подскажите пожалуйста один момент. Как следует из начала урока, один фильтр соответствует одной группе нейронов. В конце видео в примере мы получаем после пуллинга 10 карт признаков размером 16х16. Дальше вы говорите, что этот набор из 10 анализируется целиком одной группой нейронов, т.е. для каждой карты признаков (квадрата 16х16) будет свой фильтр и потом они суммируются и получается одна из 30 следующих карт признаков. Что-то не сходится у меня в голове эта мысль, как может быть получена одна из 30 карт признаков с помощью разных фильтров, из предыдущего утверждения следует что эта группа нейронов соответствует одному фильтру. Тот же вопрос про обработку многоканального изображения: если мы говорим про одноканальное изображение, то там вроде все ясно, а потом вы говорите что если каналов 3, то каждый канал обрабатывается своим фильтров (т.е. своей группой нейронов) и потом результат суммируется. Тогда получается, что для обработки 3х канального изображения нужно 3 группы нейронов, т.е. 3 фильра. Может быть все таки имеется в виду, что мы изначально берем грубо говоря 10 фильтров, и каждый канал прогоняем через эти фильтры и уже после этого суммируем? Просто что-то в голове все это не укладывается в логическую цепочку
*Цепочка «элемент -> процесс -> элемент» (под изображением также понимаются и другие карты признаков (во 2-й цепи), MaxPool карты (в 1-й цепи, а вообще MaxPool карты - это те же карты признаков, но на прошлом шаге прошедшие обработку, операцию MaxPool)):* Изображение -> фильтр (весовая маска, где каждый вес между пикселем изображения и нейроном группы карты признаков настолько больше, насколько характернее нахождение на ожидаемом изображении точки, чтобы был составлен элемент. Таким образом, чем более изображение похоже на отбираемый фильтром элемент, тем больше будет значение нейрона, ответственного за этот отрабатываемый участок) -> Карта признаков Изображение -> операция MaxPool (выбор из каждой секции максимального значения в рамках данной секции) -> MaxPool карта *Суть в прилагательных:* Карта признаков - характерный MaxPool - наиболее выраженный ~~~ *Изменение геометрических размеров, параметров:* Новый слой карты признаков после фильтрации - увеличивается глубина ряда этого слоя. Т. к. из изображения (или из множества таких изображений, если речь идёт не о 1-м и 2-м слоях) извлекают больше 1-го признака -> фильтров и соответствующих карт признаков больше, чем их (MaxPool карт) было на предыдущем слое. Новый слой карты признаков (MaxPool карт) после операции Max Pool - уменьшается размер карты (ширина и высота). Т. к. сама операция MaxPool предполагает извлечение максимального значения из некоторых значений (а значение может называться максимальным только в сравнении с другим, а значит при их наличии). *Размерность в глаголах:* Карта признаков после фильтрации - глубина увеличивается, размерность сохраняется (но не всегда сохраняется, нужно установить соотвествующий падинг). Карта признаков после MaxPool - глубина сохраняется, размерность уменьшается (но не всегда уменьшается, однако по умолчанию падинг установлен так, что размерность уменьшается - если всё же нужно её сохранение, то можно установить соотвествующий падинг).
Подскажите не могу понять - начальные значения w0-w8 фильтра задаются случайным образом? То есть грубо говоря мы инициализируем n фильтров и дальше грубо говоря первым фильтром проходим по всему изображению получая значения первой группы нейронов. Потом вторым наугад инициализированным фильтром вторую группу нейронов и так далее? Второй вопрос - значения w0-w8 фильтра по окончанию прохождения всех слоев корректируются и все начинается заново? Таким образом случайно сгенерированный фильтр стремится к какому-то своему "правильному" состоянию? И третий вопрос - если я правильно понял - все наугад инициализированные фильтры - часть из них могут оказаться одинаковыми а мы просто будем тратить время на прогонку этих "относительно" одинаковых фильтров по нейросети?
18:20 правильно ли я понял, что в каждой из 30 групп нейронов у нас по 3 фильтра, то-есть по одному на каждый канал одного тензора, а во входном тензоре, в каждом элементе имеется 3 канала для тех 3х фильтров из каждой группы? Или же прогоняем через каждую группу нейронов все входные тензоры (то-есть через одну группу все тензоры, а потом суммируем) и в каждой группе по 3 фильтра на каждый канал, следовательно мы берем первый элемент тензора, прогоняем его через 3 фильтра первой группы нейронов, суммируем результат и так с каждым тензором и потом все суммируем и получаем 1ю карту признаков, и таким же образом делаем с остальными группами нейронов.
Хочу уточнить, а не правильней ли будет при анализе и поиске объектов на изображении использовать всегда цветовую модель Lab а не RGB? Ведь она гораздо правильней представляет изображение с точки зрения содержимого - слой яркости показывает объекты, а a и b - их цветовые особенности. Что думаете по этому поводу?
там на последних слоях всюду 30 каналов. Но даже если нужно из 30 получить 10, то значит, используется 10 фильтров размерностями w x w x 30 каждый, где w - размер карты признаков
Большое спасибо за видео, очень всё понятно разъяснено! Хотел узнать Ваше мнение: сейчас разрабатываю неиронную сеть для предсказания курса криптовалют, столкнулся с тем что неиронка предсказывает следующию цену просто копируя предыдущую (по сути просто смотря в прошлое а не анализируя переданные данные); неиронная сеть использует LSTM блоки, хотел узнать может ли комбинация LSTM и Conv1D/Conv2D блоков решить эту проблему.
@@selfedu_rus Спасибо за ответ! Я пока на пути создания :). Ну даже если не прогноз курса криптовалют а просто прогноз данных таких как погода, к примеру, для таких целей можно использовать Conv1D? Спрашиваю потому что читал что данный слой используется для аудио и не уверен что его можно использовать для предсказания. Мне просто 14 я пока только исследую неиронные сети.
@@selfedu_rusСпасибо за ответ! Я пока на пути создания :). Ну даже если не прогноз курса криптовалют а просто прогноз данных таких как погода, к примеру, для таких целей можно использовать Conv1D? Спрашиваю потому что читал что данный слой используется для аудио и не уверен что его можно использовать для предсказания. Мне просто 14 я пока только исследую неиронные сети.
Здравствуйте, возник ряд вопросов, в ответ на которые я очень нуждаюсь. На 9:23 вы говорите, что каждая цветовая компонента обрабатывается своим отдельным фильтром, и для каждой цветовой компоненты отдельно образуется карта фильтров, затем они(карты фильтров) складываются между собой математически, по-элементно, и после того, как сума сформировалась к ней прибавляется смещение биос. В результате у нас получается числовое значение "Vk,m", оно пропускается через функцию активации и таким образом вычисляется выходное значение на выходном нейроне. Вопросы: 1) Получается, что при формировании карт признаков для цветовых компонент задействуется еще один слой нейронов? Ведь, исходя из информации, сказанной в видео-уроке, карта признаков состоит из выходных значений нейронов. То есть для формирования карт признаков для каждой цветовой компоненты используется дополнительный слой нейронов? 2) После сложения карт фильтров каждой из цветовых компонент и добавления биоса формируется "Vk,m" - матрица 3х3 (у вас в видео-уроке она имеет желтый окрас), которую вы именуете как "числовое значение", которое следовательно подается на вход активационной функции. Но ведь как матрица 3х3 может является "числовым значением Vk,m", если это так называемое "числовое значение" формируется с помощью последовательного по-элементного прибавления друг ко другу каждого элемента карт признаков цветовых компонент и в результате получается матрица 3х3, к которой в конце прибавляется смещение биос? Как такую матрицу можно именовать "числовым" значением?
@@selfedu_rus Ну на вход в нейронную сеть мы подали изображение 32х32, в первом скрытом слое пропускаем его через 10 групп нейронов, которые выполняют свертку изображения. На 11:00 вы говорили, что после прохождения маской по всему изображению, результат будет на 2 пикселя меньше (было 128х128, стало 126х126). То есть в примере на 17:00 после первого шага мы должны получить 10 карт признаков, каждая размером 30х30, или я не так понял?
Здравствуйте, спасибо за ваши уроки, но у меня возник вопрос. К примеру у меня есть нс, которая должна определять (с камеры) есть ли маска на человеке, или нет. Возникнут ли какие либо проблемы с распознаванием, так как обучающая выборка была стандартизирована, а изображение с камеры нет?
привет! очень хорошо объяснено, спасибо за видео :) возник такой вопрос - как определить количество скрытых слоев? на 17:20 у вас 2 слоя сверточной сети, 2 слоя макс пулинга - почему именно такая конфигурация? можно ли было использовать 1 слой сверточной сети и 1 слой пулинга?
Большое спасибо за видео! Вопрос - мне нужно найти слова в скане многострочного документа напечатанного на старой печатной машинке. Может ли нейронная сеть мне помочь в этом и какой Ваш урок мне в этом поможет? Заранее спасибо!
Если это разовая работа, то проще воспользоваться программой FineReader. Иначе, вам просто придется повторять его алгоритм, а он очень не простой (и неизвестный).
Спасибо за урок! Только жаль не упомянули о том, как именно полученные на последнем слое карты активации отправлять на вход обычной полносвязной сети. Насколько мне известно, эти карты активации нужно "вытянуть" в одномерный вектор, и этот вектор уже должен подаваться на вход полносвязной сети. Причем если этот вектор получается большим, то это может привести например к долгому обучению т.к весов соответственно понадобится больше. Если размер "вытянутого" из карт активаций вектора получается большим, то его можно уменьшить, применив тот же max pooling но с более большим окном
Здравствуйте, а не подскажете как здесь будет работать обучение сети методом backpropagation. Т.е формула для корректировки весов содержит умножение на входящее значение, это значит, что фильтр должен проходить так же по исходной картинке меняя постепенно свои веса?
Сам не погружался в математику в случае со сверточными сетями, но как пишут в литературе, здесь принципиально ничего не меняется, также идет коррекция весовых коэффициентов фильтров (сверток) с помощью packpropagation
Спасибо за урок! Предположим, что мы подали на вход Conv2D слою трехканальное изображение и назначили слою 64 ядра (фильтра). Правильно ли я понимаю, что под каждый канал будет выделено 64 фильтра, и работать это будет так: первый фильтр первого канала, первый фильтр второго канала, и первый фильтр третьего канала будут применены каждый к своему каналу, и результаты будут сложены, далее к этой суммарной матрице будет применен bias, а затем функция активации, и так 64 раза?
Если на входе трехканальное изображение, то для получения одного выходного канала будут применяться три разных фильтра для входных данных, затем суммироваться, добавляться биас и так 64 раза (для формирования 64 каналов).
Здесь небольшая не точность, или ошибка на 9.42. Если посмотреть документацию Keras, то при обработке 3-канального (цветного) изображения, данные соответствующего цвета с пикселя, перемножаются на соответствующий ВЕС СВЯЗИ записаный в фильтре (для каждого цвета соответственно), и помешаются на вход нейрона. Таким образом на входе нейрона собираются данные с каждого цветового канала, с каждого пикселя. далее они просто суммируются, и к ним прибавляется bias умноженный на СВОЙ ВЕС СВЯЗИ. В процессе обучения Н.С. все эти веса связей "обучаются". Просто автор говорит о сложении матриц, и сложение матрицы с числом, которых по сути нету, и может сложится не правильное понимаение принцыпа работы.
@@selfedu_rusесли разобраться то да, но вообще, когда смотрел, то первое впечатление которое сложилось, что мы производим операцию поэлементного сложения матриц, а потом производим операцию прибавления к матрице скаляра (числа)(bias), а в этом случае число прибавляется к каждому элементу матрицы, в то время когда мы должны найти сначала сумму всех элементов в матрице, и только потом прибавить bias. Может просто именно у меня такая особенность восприятия. Извиняюсь что отвлекаю Вас.
Так это получается, что фильтр позволяет хоть как-то проинициализировать вертикальные связи до построения входного вектора, в отличае от пулинга.. явная потеря вертикальных связей. Однако, пулинг интуитивно кажется перспективным методом. Обдумаю во сне.. А если при поиске искомого фрагмента картинки получаются разные по масштабу области - разное количество пикселей, сильно разное, то пулингом их допускается приводить к одной размерности?
MaxPooling выделяет максимальные значения на выходах каналов (сверточных слоев), то есть, сохраняет максимум информации, сокращая размерность вектора (матрицы).
@@selfedu_rus да, я пока спал - передумал).. т.е. конечно выражение связи по вертикали в пулинге слабее, чем у фильтра 3 на 3 с средней вертикалью единичек, но всё же он передаёт инфу.. из фильтров альтернативой ему тогда будет что-то типа: 1 0 1 0 0 0 1 0 1 Если так можно выразиться) PS посмотрел следующий ролик, осознал поочерёдный алгоритм применения - успокоился)
Привет, у меня два вопроса. Один по пониманию. 1)Каждая группа нейронов выделяет какой то признак в соответствии с ядром фильтра, и передаёт эту полученную свёртку(сумму отсканированный кусочков 3 на 3 умноженных на ядро фильтра) следующей группе нейронов, следующая группа нейронов получает свёртку с предыдущего этапа и делает тоже самое(выделает признаки и передаёт полученную свёртку дальше). Max polling я пока не рассматриваю. Сначала нужно со свёрткой разобраться. Правильно я понимаю как происходит свёртка? 2) Нейросеть обучается на картинках одинакового размера, допустим 128x128 пикселей, а что если у меня картинка 5000x2500 пикселей и я хочу её прогнать через нейросеть и получить предсказание? Спасибо.
1) в целом, да, верно; 2) изображения других размеров должны быть приведены к формату изображений обучающей выборки (в том числе размеру, цветовому представлению, стандартизации, если она была и т.п.)
Если затем предполагаются заметно другие картинки (не похожие на те, что обучается сеть), то ничего хорошего не выйдет. Это как обучить человека немецкому языку и отправить его в Англию в надежде, что он будет что-то понимать ))
@@selfedu_rus Будет полезно посмотреть видео как распознать печатный текст. Я вот его пытаюсь сделать но нифига. В нете народ тоже ищет но везде только рукописный. А с печатным столько проблем оказалось) Я про случаи когда текст не сегментировать а распознавать строку с текстом, смещая выборку по X. Например символы 'но' распознаются как 100% 'ю'
чтото огромные формулы в начале как "не пришей кобыле хвост" ... что дают для чего, никаких выводов по ним нет, просто математическую запись показать ... лучше бы пару лишних минут про котиков ... а то там количество карт активации с каждым разом множится а мотив неясен и никак не обозначается ...
Дорогие друзья! Небольшой квест. В этом видео я специально сделал небольшую арифметическую ошибку. Она не влияет на общее восприятие и понимание материала. И тот, кто обнаружит эту ошибку, тот красавчик! ))
Хммм... хитрый ход ) Придется второй раз пересмотреть, и тут два плюса, увеличится число просмотров, и улучшится качество понимания и запоминания материала. Хорошая идея подстегивания слушателей курса к Deep learning )))
11:26 - вот тут по-моему "ашипка", получится не 127 на 127, но 126 на 126 пикселов, так как и снизу и сверху и справа и слева теряется по пикселу. Смотрю дальше... может ишо чего замечу )
Переместил свой коммент сюда, чтобы в общей ветке другие не прочитали и не расстроились "ну вот, а я сам хотел бы поискать ашипку".
@@ValstanSav Красавчик! :))
@@selfedu_rus я написал и потом удалил свой комментарий про это -- посчитав неважным -- в почте у вас должен остаться этот комментарий )
спасибо за ваши видео
@@ywbc1217 Спасибо, значит, вы тоже красавчик! ))
Лучше всех (Из тех кого я уже просмотрел) объясняешь как устроенна нейронная сеть
Спасибо теперь я больше понимаю как устроенно это все
Как же круто! Очень интересно все и многообразно. Я рада, что начала изучать эту тему. Спасибо за ваш курс, он лучший из тех, что я видела :)
изучил видио до конца, какже хорошо и понятно вы обьясняете.
Нашел ошибку до того как прочитал что здесь допущена преднамеренная ошибка). Хороший видео урок, спасибо!
Безусловно просто и ясно.
Хороший добрый комментарий в поддержку автора канала и контента.
11:37 126x126 а не 127x127 потому, что пиксели обрезаються справа и слева
а я думал добавляется один байес
Спасибо большое за очень понятное объяснение!
Спасибо огромное за Ваши уроки!
Хороший канал, надеюсь он наберет популярность!!!)
Самое лучшие объяснения как работает нейронная сеть !!
огромное спасибо за доходчивость и детальность
Спасибо. Какое большое спасибо...
Помог.
А то сидел тупил.
Учусь в GB, там рассказывал преподаватель много много много - часа три, понял, что я мягко говоря не способен учиться.
здесь за 20 минут я понял, как это все работает.
было бы неплохо еще рассказать, для чего делается укрупнение признаков, возможный ответ, для увеличения скорости нейронной сети, за счет экономии вычислительных мощностей?
Хочу спросить: а как так применяя операцию свертки на входной тензор изображение, не получили тензор с меньшей размерности. Например как в конце видео: [32, 32, 3] -> [32, 32, 10] ? Если это так то это значит что мы применили свертку размером [1,1].
А с аудио будет курс или видео уроки, в том про подготовку данных.
Подскажите пожалуйста один момент. Как следует из начала урока, один фильтр соответствует одной группе нейронов. В конце видео в примере мы получаем после пуллинга 10 карт признаков размером 16х16. Дальше вы говорите, что этот набор из 10 анализируется целиком одной группой нейронов, т.е. для каждой карты признаков (квадрата 16х16) будет свой фильтр и потом они суммируются и получается одна из 30 следующих карт признаков. Что-то не сходится у меня в голове эта мысль, как может быть получена одна из 30 карт признаков с помощью разных фильтров, из предыдущего утверждения следует что эта группа нейронов соответствует одному фильтру. Тот же вопрос про обработку многоканального изображения: если мы говорим про одноканальное изображение, то там вроде все ясно, а потом вы говорите что если каналов 3, то каждый канал обрабатывается своим фильтров (т.е. своей группой нейронов) и потом результат суммируется. Тогда получается, что для обработки 3х канального изображения нужно 3 группы нейронов, т.е. 3 фильра. Может быть все таки имеется в виду, что мы изначально берем грубо говоря 10 фильтров, и каждый канал прогоняем через эти фильтры и уже после этого суммируем? Просто что-то в голове все это не укладывается в логическую цепочку
класныеи видео
*Цепочка «элемент -> процесс -> элемент» (под изображением также понимаются и другие карты признаков (во 2-й цепи), MaxPool карты (в 1-й цепи, а вообще MaxPool карты - это те же карты признаков, но на прошлом шаге прошедшие обработку, операцию MaxPool)):*
Изображение -> фильтр (весовая маска, где каждый вес между пикселем изображения и нейроном группы карты признаков настолько больше, насколько характернее нахождение на ожидаемом изображении точки, чтобы был составлен элемент. Таким образом, чем более изображение похоже на отбираемый фильтром элемент, тем больше будет значение нейрона, ответственного за этот отрабатываемый участок) -> Карта признаков
Изображение -> операция MaxPool (выбор из каждой секции максимального значения в рамках данной секции) -> MaxPool карта
*Суть в прилагательных:*
Карта признаков - характерный
MaxPool - наиболее выраженный
~~~
*Изменение геометрических размеров, параметров:*
Новый слой карты признаков после фильтрации - увеличивается глубина ряда этого слоя. Т. к. из изображения (или из множества таких изображений, если речь идёт не о 1-м и 2-м слоях) извлекают больше 1-го признака -> фильтров и соответствующих карт признаков больше, чем их (MaxPool карт) было на предыдущем слое.
Новый слой карты признаков (MaxPool карт) после операции Max Pool - уменьшается размер карты (ширина и высота). Т. к. сама операция MaxPool предполагает извлечение максимального значения из некоторых значений (а значение может называться максимальным только в сравнении с другим, а значит при их наличии).
*Размерность в глаголах:*
Карта признаков после фильтрации - глубина увеличивается, размерность сохраняется (но не всегда сохраняется, нужно установить соотвествующий падинг).
Карта признаков после MaxPool - глубина сохраняется, размерность уменьшается (но не всегда уменьшается, однако по умолчанию падинг установлен так, что размерность уменьшается - если всё же нужно её сохранение, то можно установить соотвествующий падинг).
Подскажите не могу понять - начальные значения w0-w8 фильтра задаются случайным образом? То есть грубо говоря мы инициализируем n фильтров и дальше грубо говоря первым фильтром проходим по всему изображению получая значения первой группы нейронов. Потом вторым наугад инициализированным фильтром вторую группу нейронов и так далее?
Второй вопрос - значения w0-w8 фильтра по окончанию прохождения всех слоев корректируются и все начинается заново? Таким образом случайно сгенерированный фильтр стремится к какому-то своему "правильному" состоянию?
И третий вопрос - если я правильно понял - все наугад инициализированные фильтры - часть из них могут оказаться одинаковыми а мы просто будем тратить время на прогонку этих "относительно" одинаковых фильтров по нейросети?
18:20 правильно ли я понял, что в каждой из 30 групп нейронов у нас по 3 фильтра, то-есть по одному на каждый канал одного тензора, а во входном тензоре, в каждом элементе имеется 3 канала для тех 3х фильтров из каждой группы?
Или же прогоняем через каждую группу нейронов все входные тензоры (то-есть через одну группу все тензоры, а потом суммируем) и в каждой группе по 3 фильтра на каждый канал, следовательно мы берем первый элемент тензора, прогоняем его через 3 фильтра первой группы нейронов, суммируем результат и так с каждым тензором и потом все суммируем и получаем 1ю карту признаков, и таким же образом делаем с остальными группами нейронов.
да, если входной тензор содержит три канала, а на выходе слой дает 30 каналов, то каждый из 30 фильтров имеет размеры 3x3x3
Хочу уточнить, а не правильней ли будет при анализе и поиске объектов на изображении использовать всегда цветовую модель Lab а не RGB? Ведь она гораздо правильней представляет изображение с точки зрения содержимого - слой яркости показывает объекты, а a и b - их цветовые особенности. Что думаете по этому поводу?
КАКОЙ ДОБРЯК!!!
В конце видео как из 10 каналов получилось 30 каналов можете объяснить?
там на последних слоях всюду 30 каналов. Но даже если нужно из 30 получить 10, то значит, используется 10 фильтров размерностями w x w x 30 каждый, где w - размер карты признаков
Здравствуйте, а что делать, если при свёртке значение нейрона на выходе будет больше 255, его стоит оставить таким или приравнять к 255 ?
выходное значение может быть любым, ограничение накладывает только функция активации
Большое спасибо за видео, очень всё понятно разъяснено! Хотел узнать Ваше мнение: сейчас разрабатываю неиронную сеть для предсказания курса криптовалют, столкнулся с тем что неиронка предсказывает следующию цену просто копируя предыдущую (по сути просто смотря в прошлое а не анализируя переданные данные); неиронная сеть использует LSTM блоки, хотел узнать может ли комбинация LSTM и Conv1D/Conv2D блоков решить эту проблему.
Спасибо! Как именно сделать нейронку для прогноза курса валюты - без понятия. Если бы было такое решение был бы сказочно богат! )))
@@selfedu_rus Спасибо за ответ! Я пока на пути создания :). Ну даже если не прогноз курса криптовалют а просто прогноз данных таких как погода, к примеру, для таких целей можно использовать Conv1D? Спрашиваю потому что читал что данный слой используется для аудио и не уверен что его можно использовать для предсказания. Мне просто 14 я пока только исследую неиронные сети.
@@selfedu_rusСпасибо за ответ! Я пока на пути создания :). Ну даже если не прогноз курса криптовалют а просто прогноз данных таких как погода, к примеру, для таких целей можно использовать Conv1D? Спрашиваю потому что читал что данный слой используется для аудио и не уверен что его можно использовать для предсказания. Мне просто 14 я пока только исследую неиронные сети.
вам лучше это обсудить в ТГ-канале по машинному обучению (ссылка под видео)
@@selfedu_rus Большое спасибо за совет! Обязательно напишу туда, сразу ссылку не увидел.
Очень круто, спасибо! Хочу чуть-чуть поправить: не биос (BIOS), а байэс (bias).
Байэс это ученый, а это нейрон смещения биас
Здравствуйте, возник ряд вопросов, в ответ на которые я очень нуждаюсь.
На 9:23 вы говорите, что каждая цветовая компонента обрабатывается своим отдельным фильтром, и для каждой цветовой компоненты отдельно образуется карта фильтров, затем они(карты фильтров) складываются между собой математически, по-элементно, и после того, как сума сформировалась к ней прибавляется смещение биос. В результате у нас получается числовое значение "Vk,m", оно пропускается через функцию активации и таким образом вычисляется выходное значение на выходном нейроне.
Вопросы:
1) Получается, что при формировании карт признаков для цветовых компонент задействуется еще один слой нейронов? Ведь, исходя из информации, сказанной в видео-уроке, карта признаков состоит из выходных значений нейронов. То есть для формирования карт признаков для каждой цветовой компоненты используется дополнительный слой нейронов?
2) После сложения карт фильтров каждой из цветовых компонент и добавления биоса формируется "Vk,m" - матрица 3х3 (у вас в видео-уроке она имеет желтый окрас), которую вы именуете как "числовое значение", которое следовательно подается на вход активационной функции. Но ведь как матрица 3х3 может является "числовым значением Vk,m", если это так называемое "числовое значение" формируется с помощью последовательного по-элементного прибавления друг ко другу каждого элемента карт признаков цветовых компонент и в результате получается матрица 3х3, к которой в конце прибавляется смещение биос? Как такую матрицу можно именовать "числовым" значением?
Dislike: 17:40 размер тензора уменьшается в 4 раза, а не в 2 раза, как сказано в видео
в 2 раза по каждой координате имелось в виду )) но формально вы правы, это нужно было уточнить
@@selfedu_rus Like: ошибку признал
@@komissarovrodion ок
А разве карта признаков не должна быть 30x30? Или у нас фильтр был 1 пиксель? 17:13
Не совсем понятен вопрос. У нас карта признаков 16x16x30, после mapooling размеры уменьшаются в 2 раза по первым 2-м коордианатм и становятся 8x8x30
@@selfedu_rus Ну на вход в нейронную сеть мы подали изображение 32х32, в первом скрытом слое пропускаем его через 10 групп нейронов, которые выполняют свертку изображения. На 11:00 вы говорили, что после прохождения маской по всему изображению, результат будет на 2 пикселя меньше (было 128х128, стало 126х126). То есть в примере на 17:00 после первого шага мы должны получить 10 карт признаков, каждая размером 30х30, или я не так понял?
@@ДенисАгапитов-э6у Это все разные вещи. Вначале я говорил, как обрабатывать границы изображений. А далее, как работает операция maxpooling.
@@selfedu_rus Хорошо, спасибо
Здравствуйте, спасибо за ваши уроки, но у меня возник вопрос. К примеру у меня есть нс, которая должна определять (с камеры) есть ли маска на человеке, или нет. Возникнут ли какие либо проблемы с распознаванием, так как обучающая выборка была стандартизирована, а изображение с камеры нет?
Да, могут возникнуть проблемы. Входные данные нужно стандартизировать также, как и при обучении НС.
привет!
очень хорошо объяснено, спасибо за видео :)
возник такой вопрос - как определить количество скрытых слоев? на 17:20 у вас 2 слоя сверточной сети, 2 слоя макс пулинга - почему именно такая конфигурация?
можно ли было использовать 1 слой сверточной сети и 1 слой пулинга?
Да, это просто пример, конфигурации придумывает сам разработчик НС, исходя из опыта и разума )
Большое спасибо за видео!
Вопрос - мне нужно найти слова в скане многострочного документа напечатанного на старой печатной машинке.
Может ли нейронная сеть мне помочь в этом и какой Ваш урок мне в этом поможет?
Заранее спасибо!
Если это разовая работа, то проще воспользоваться программой FineReader. Иначе, вам просто придется повторять его алгоритм, а он очень не простой (и неизвестный).
Спасибо за урок! Только жаль не упомянули о том, как именно полученные на последнем слое карты активации отправлять на вход обычной полносвязной сети. Насколько мне известно, эти карты активации нужно "вытянуть" в одномерный вектор, и этот вектор уже должен подаваться на вход полносвязной сети. Причем если этот вектор получается большим, то это может привести например к долгому обучению т.к весов соответственно понадобится больше. Если размер "вытянутого" из карт активаций вектора получается большим, то его можно уменьшить, применив тот же max pooling но с более большим окном
Вытягивать можно произвольным образом, при обучении НС сама подстроится под данные. А в Keras есть для этого специальный слой Flatten.
@@selfedu_rus Про Flatten уже увидел в следующем видео про CNN в этом плейлисте ) Спасибо!
Здравствуйте, а не подскажете как здесь будет работать обучение сети методом backpropagation. Т.е формула для корректировки весов содержит умножение на входящее значение, это значит, что фильтр должен проходить так же по исходной картинке меняя постепенно свои веса?
Сам не погружался в математику в случае со сверточными сетями, но как пишут в литературе, здесь принципиально ничего не меняется, также идет коррекция весовых коэффициентов фильтров (сверток) с помощью packpropagation
Спасибо за урок! Предположим, что мы подали на вход Conv2D слою трехканальное изображение и назначили слою 64 ядра (фильтра). Правильно ли я понимаю, что под каждый канал будет
выделено 64 фильтра, и работать это будет так: первый фильтр первого канала, первый фильтр второго канала, и первый фильтр третьего канала будут применены каждый к своему каналу, и результаты будут сложены, далее к этой суммарной матрице будет применен bias, а затем функция активации, и так 64 раза?
Если на входе трехканальное изображение, то для получения одного выходного канала будут применяться три разных фильтра для входных данных, затем суммироваться, добавляться биас и так 64 раза (для формирования 64 каналов).
@@selfedu_rus Ясно,спасибо!
Здесь небольшая не точность, или ошибка на 9.42. Если посмотреть документацию Keras, то при обработке 3-канального (цветного) изображения, данные соответствующего цвета с пикселя, перемножаются на соответствующий ВЕС СВЯЗИ записаный в фильтре (для каждого цвета соответственно), и помешаются на вход нейрона. Таким образом на входе нейрона собираются данные с каждого цветового канала, с каждого пикселя. далее они просто суммируются, и к ним прибавляется bias умноженный на СВОЙ ВЕС СВЯЗИ. В процессе обучения Н.С. все эти веса связей "обучаются". Просто автор говорит о сложении матриц, и сложение матрицы с числом, которых по сути нету, и может сложится не правильное понимаение принцыпа работы.
Да, в видео так по сути и говорится? Сначала каждый канал своим фильтром, а результат суммируется.
@@selfedu_rusесли разобраться то да, но вообще, когда смотрел, то первое впечатление которое сложилось, что мы производим операцию поэлементного сложения матриц, а потом производим операцию прибавления к матрице скаляра (числа)(bias), а в этом случае число прибавляется к каждому элементу матрицы, в то время когда мы должны найти сначала сумму всех элементов в матрице, и только потом прибавить bias. Может просто именно у меня такая особенность восприятия. Извиняюсь что отвлекаю Вас.
Так это получается, что фильтр позволяет хоть как-то проинициализировать вертикальные связи до построения входного вектора, в отличае от пулинга.. явная потеря вертикальных связей. Однако, пулинг интуитивно кажется перспективным методом. Обдумаю во сне..
А если при поиске искомого фрагмента картинки получаются разные по масштабу области - разное количество пикселей, сильно разное, то пулингом их допускается приводить к одной размерности?
MaxPooling выделяет максимальные значения на выходах каналов (сверточных слоев), то есть, сохраняет максимум информации, сокращая размерность вектора (матрицы).
@@selfedu_rus да, я пока спал - передумал).. т.е. конечно выражение связи по вертикали в пулинге слабее, чем у фильтра 3 на 3 с средней вертикалью единичек, но всё же он передаёт инфу.. из фильтров альтернативой ему тогда будет что-то типа:
1 0 1
0 0 0
1 0 1
Если так можно выразиться)
PS посмотрел следующий ролик, осознал поочерёдный алгоритм применения - успокоился)
Не совсем понятно как нейронная сеть будет подбирать веса для своих "ядер фильтров", по какому алгоритму она их будет подправлять ?
также, как и для полносвязной - градиентным алгоритмом
Знать предмет и объяснить (передать) его несведущему совершенно разные вещи.
Привет, у меня два вопроса. Один по пониманию. 1)Каждая группа нейронов выделяет какой то признак в соответствии с ядром фильтра, и передаёт эту полученную свёртку(сумму отсканированный кусочков 3 на 3 умноженных на ядро фильтра) следующей группе нейронов, следующая группа нейронов получает свёртку с предыдущего этапа и делает тоже самое(выделает признаки и передаёт полученную свёртку дальше). Max polling я пока не рассматриваю. Сначала нужно со свёрткой разобраться. Правильно я понимаю как происходит свёртка?
2) Нейросеть обучается на картинках одинакового размера, допустим 128x128 пикселей, а что если у меня картинка 5000x2500 пикселей и я хочу её прогнать через нейросеть и получить предсказание?
Спасибо.
1) в целом, да, верно; 2) изображения других размеров должны быть приведены к формату изображений обучающей выборки (в том числе размеру, цветовому представлению, стандартизации, если она была и т.п.)
Как обучить нейросеть на картинках (символах) которые на 99% похожи друг на друга?
Если затем предполагаются заметно другие картинки (не похожие на те, что обучается сеть), то ничего хорошего не выйдет. Это как обучить человека немецкому языку и отправить его в Англию в надежде, что он будет что-то понимать ))
@@selfedu_rus Будет полезно посмотреть видео как распознать печатный текст. Я вот его пытаюсь сделать но нифига. В нете народ тоже ищет но везде только рукописный.
А с печатным столько проблем оказалось)
Я про случаи когда текст не сегментировать а распознавать строку с текстом, смещая выборку по X. Например символы 'но' распознаются как 100% 'ю'
А как вычисляется градиент, как происходит распространение ошибки? Почему об этом толком никто не говорит? Говорят только о самом очевидном
Про это есть отдельные уроки на этом канале
Биос добавляется не к сумме а уже входит в нее (см. время показа 10.33)
Если несколько каналов, то сначала по всем каналам проходят свертки, а затем, один раз прибавляется смещение.
чтото огромные формулы в начале как "не пришей кобыле хвост" ... что дают для чего, никаких выводов по ним нет, просто математическую запись показать ... лучше бы пару лишних минут про котиков ... а то там количество карт активации с каждым разом множится а мотив неясен и никак не обозначается ...
126 на 126 - вместо 127 на 127
да, есть такое ))
пиксэл 😄
Не пиксел, а пиксель!!!!!!!!! Пикселей, а не пикселов, пиксели, а не пикселы, и т.д.
Пиксел
Ну по правде говоря будет на 2 пикселя меньше чем исходное изображение 126*126
верно! )
10102024