Вы видите копию треда, сохраненную 18 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Я ничего не понимаю, что делать?
Вкатывальщики импортят slesarplow as sp по туториалам (хотя сейчас актуальнее keras и pytorch)
Толковые качают из репозитория awesome-XXXX на гитхабе проект какого-то китайца, меняют фамилию и получают $10M инвестиций как стартап.
Умные смотрят prerequisites на https://see.stanford.edu/Course/CS229 и http://cs231n.stanford.edu/
Какая математика используется?
В основном линейная алгебра, теорвер, матстат, базовый матан и matrix calculus.
Почему python?
Исторически сложилось
Что почитать для вкатывания?
http://www.deeplearningbook.org/
Николенко "Глубокое обучение" - на русском, есть примеры, но меньше охват материала
В чем практиковаться нубу?
http://www.deeplearning.net/tutorial/
https://www.hackerrank.com/domains/ai
https://github.com/pytorch/examples
https://github.com/ChristosChristofidis/awesome-deep-learning#tutorials
Где набрать первый самостоятельный опыт?
https://www.kaggle.com/ | http://mltrainings.ru/
Стоит отметить, что спортивный deep learning отличается от работы примерно так же, как олимпиадное программирование от настоящего. За полпроцента точности в бизнесе борятся редко, а в случае проблем нанимают больше макак для разметки датасетов. На кагле ты будешь вилкой чистить свой датасет, чтобы на 0,1% обогнать конкурента.
Где работать?
https://www.indeed.com/q-deep-learning-jobs.html
Вкатывальщики могут устроиться программистами и дальше попроситься в ML-отдел
Где узнать последние новости?
https://www.reddit.com/r/MachineLearning/
http://www.datatau.com/
https://twitter.com/ylecun
На реддите также есть хороший FAQ для вкатывающихся
Где посмотреть последние статьи?
http://www.arxiv-sanity.com/
https://paperswithcode.com/
Количество статей зашкваливающее, поэтому все читают только свою узкую тему и хайповые статьи, упоминаемые в блогах, твиттере, ютубе и телеграме, топы NIPS и прочий хайп. Есть блоги, где кратко пересказывают статьи, даже на русском
Где ещё можно поговорить про анализ данных?
http://ods.ai/
Нужно ли покупать видеокарту/дорогой пека?
Если хочешь просто пощупать нейроночки или сделать курсовую, то можно обойтись облаком. На март 2020 Google Colab дает бесплатно аналог GPU среднего ценового уровня (что-то между 1050 и 1080) на несколько часов с возможностью продления.
Иначе выгоднее вложиться в GPU https://timdettmers.com/2019/04/03/which-gpu-for-deep-learning/ Заодно в майнкрафт на топовых настройках погоняешь
Когда уже изобретут AI и он нас всех поработит?
На текущем железе - никогда, тред не об этом
Список дедовских книг для серьёзных людей:
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/res/1614936.html (М)
Архивач:
http://arhivach.ng/thread/412868/
Остальные в предыдущих тредах
Там же можно найти треды 2016-2018 гг. по поиску "machine learning" и "НЕЙРОНОЧКИ & МАШОБЧИК"
Что за строки хоть? IoU какой-нибудь, если одинаковые строки встречаются в разных объектах.
Строки сами покажи. А то может тебе расстояние левенштейна пойдет, а мы тут йоба-эмбеддинги советовать будем
В простейшем случае есть один тензор - типа данные, есть второй тензор - типа внимание. В случае self attention ты получаешь их из предыдущего слоя. Типа
danniye = Dense(input)
attention = Dense(input)
Далее умножаешь почленно output = danniye * sigmoid(attention). Сигмоид имеет значение от 0 до 1, таким образом ты как бы накладываешь бинарную маску на danniye, какие-то данные пропуская, а какие-то обнуляя. Это называется attention gate
В более сложном случае у тебя есть аж 3 тензора, Q (это тот, который danniye), а еще K и V (ключ и значения - типа ассоциативная память) и формула сложнее
softmax(Q K' / sqrt(n)) V
Но суть примерно та же - ты из входного запроса какую-то информацию фильтруешь, какую-то пропускаешь.
Прелесть всей этой хуйни в том, что это что-то типа сверток, но если свертки жестко связывают нейрон следующего слоя с локальной областью предыдущего, то аттеншен позволяет иметь гибкие связи хоть с другим концом слоя. Это больше отвечает естественным языкам, которым пространственная инвариантность сверток не особо нужна.
Йоба-эмбеддинги я и сам строить умею. Это символьные строки, латиница, притом неочищенные - как извлекли, так и подаём, может быть вообще ложное срабатывание и абракадабра. На объектах есть разметка, что похоже, что непохоже. Так что я свожу каждую строку в вектор (через lstm), дальше из этого набора векторов строю один (через self-attention). Но, может, есть более разумные способы работать с неупорядоченными множествами?
Спасибо
Ага, я в принципе все понял, кроме "порядка размера буквы", что ты под этим имел ввиду?
Алсо, таки получилось вместе с BERT запустить обучение, не стал заморачиваться и сделал через dense слой все, оно даже учится.
Думаю features с inception можно еще склеить с текстом попробовать.
Обучается все это не очень быстро, кстати.
Это ты логи парсил что ли? Выглядит разумно.
Ну нужно рассчитать какое поле на входе имеет нейрон, в пикселях и это поле должно быть таким чтобы покрывать букву с запасом
Можно взять попарные косинусы и отсортировать, или брать от этого множества всякие статистические фичи.
Кароче, вопрос к знатокам- как это все дело вывести в онлайн на сервер под cpu или, если есть возможность- на свой комп для обработки, а ля бот для телеграма или что-то подобное?
В онлайн взаимодействии клиент-сервер я почти ноль, могу написать на php хелло ворлд и поиграть с шрифтами в html/css.
Нужно сделать что-то типа вот этого deepnudeonline.com
Модель можно экспортировать в onnx.
Сейчас бы у петуха, который не знает нихуя ни про биоинформатику, ни про ML, спрашивать мнение
> прикрутил к ней аугментацию- поворот на +-30 градусов, смена гаммы, контраст, все дела
Ты неправильно делаешь аугментацию, 20% картинки это черный фон. Нужно кропать после поворота. А чтобы при повороте на такой большой угол не пришлось кропать так много, проще разбить картинку на несколько поменьше с перекрытием. После обучения отмасштабируешь
>Кароче, вопрос к знатокам- как это все дело вывести в онлайн на сервер под cpu или, если есть возможность- на свой комп для обработки, а ля бот для телеграма или что-то подобное?
Это тебе в веб-программистам нужно, потому что вызвать predict у нейронки не отличается ничем от любого другого процессинга на сервере
Простейший подход это https://blog.keras.io/building-a-simple-keras-deep-learning-rest-api.html
Дальше пишешь простейший фронтэнд на жс, который берет картинку и делает запрос к этому бэкенду
Минус подобной хуйни в том, что сервер подвиснет на время обработки, и его очень легко завалить кучей запросов. Правильно реализовать очередь. Делается это тоже элементарно в принципе и должен быть похожий репозиторий на гитхабе, но мне лень его тебе искать. Ищи по запросу типа "flask deep learning", или как-то так
Собственно даже по правой картинке видно, что на правой картинке выросла черная опухоль на сиське. Это результат твоей агументации
спасибо за советы, возможно стоит так и сделать с перекрытием, но сама идея была делать именно 1024 на 512.
Почему-то мне кажется, что черные фоны по углам не так сильно повлияют на итоговый результат, просто будет отсеивать их нейронка. Да и это картинка после 2 дней обучения, когда мне еще 40 делать по хорошему- 200 с lr стандартным и потом еще 300 поколений на уменьшение. Хочу сделать качественно, зачем и прукручивал аугментацию, да еще с рандомным масштабированием. На меньшем масштабе если отбирать только примеры "анфас" оно не давало артефактов ни разу, после прохождения 6 дней обучения и без аугментации, так что я почти уверен, что это дело просто в недообученности.
>спасибо за советы, возможно стоит так и сделать с перекрытием, но сама идея была делать именно 1024 на 512.
Подумай, как работает свертка. У тебя выходной пиксель зависит от квадрата на входе, размер этого квадрата называется receptive field. Больше он ни от чего не зависит. Поэтому ты спокойно можешь кропнуть (не отмасштабировать, а просто порезать) картинку 1024х512 на 2 картинки 512х512 и так обучать обрезанные сиськи. Точно так же ты можешь взять обученную сеть 1024х512 и скормить ей картинку 10240х10240. В массиве весов сверточного слоя нет его размера, поэтому масшабировать можно как угодно, и смысла в конкретном размере картинке нет при условии, что у тебя кроп, а не ресайз)
На самом деле большие картинки чуть выгоднее, потому что у них меньше относительный процент границ. Границы штука хуевая, потому что если у нейрона receptive field выходит за границы картинки, там в пределах этого поля будут нули, что плохо. То есть кайма размером с размер receptive field у тебя работает хуево, на мелких размерах относительная площадь такой каймы больше. Поэтому есть два варианта, либо терпеть эти нули (padding=same), либо обрезать картинку (padding=valid), что слегка уменьшает объем пропускаемых в единицу времени пикселей.
>На меньшем масштабе если отбирать только примеры "анфас" оно не давало артефактов ни разу
Потому что когда ты делаешь ресайз, у тебя в receptive field влизает больше информации. То есть на 256х256 выходной нейрон видит только сиську, а на 1024х512 уже только сосок, если ты архитектуру не менял.
Потому что черные хуйни от поворта, будучи мелкими на 256, становятся большими на 512.
>Хочу сделать качественно
Ну и делай качественно. Качественно - это правдивое распределение на входе, без разных левых мод. Черные квадраты фидить 20% времени - это не самый хороший подход.
Еще раз спасибо за ответы, я просто совсем слаб в программировании, и только слегка поднаторел в запуске различных pix2pix на винде, будь она неладна.
да, ты прав, возможно стоит переключиться на 512 на 512, включить кроп просто. Я думал, что сеть будет улавливать разницу во входящем разрешении и будет лучше обучаться, если будет помнить, что у тушки грудь сверху и трусы снизу, но это, видимо, не так. (пока разрешение не 1024 на 1024- сним это бы прокатило, но у меня оно не лезет в 8 гб.)
Сразу спрошу глупый вопрос- в той примерной картинке 10240 на 10240 - она ведь должна быть не ресайзнутой, а, например, коллажем из картинок того-же масштаба, с которым работала нейросеть? Просто уже пробовал одну модель так запускать, и она не работала с неизвестным ей масштабом?
>(padding=same), либо обрезать картинку (padding=valid) вот эту терминологию я не понимать. Да, плохо что есть примеры с обрезанными краями, ну пусть один из слоев нейронки занимается тем, что все черные обрезанные края отсеивает. Не думаю, что это сильно нагрузит архитектуру сетки.
>1024х512 уже только сосок, если ты архитектуру не менял.
Вот именно, что менял (точнее я ничего не менял, я просто пользуюсь p2pHD от нвидии, ничего кроме критичных ошибок ШИндоус внутри не исправляю + ну только + аугментацию врезал, всегда можно заккоментить), это я не первую модель меньшего масштаба запускаю, а все по новой. В меньшей модели (моделях, их было много) были только картинки из, например, верхней части + лицо, или только в полный рост.
Ну и про фидить нули- да, я всосал, но счастливые часов не замечают, мне в кайф, что я вообще это запустил. Не бей ногами сильно, я чувствую превосходство, когда со мной разговаривает кто-то опытнее меня. Просто делаю как могу, пусть за меня работает ПК, я уже и так выжат от перебора картинок. Как представлю, что мне их все еще предстоит грамотно порезать, оставив только нужное... Я думал, что может существует софт типа вырезалки лиц по шаблону из deepfake, только для тела, и все что было найдено- это раскрытая архитектура deepnude, которая делает то же самое с помощью каскада из двух или трех нейронок с размеченными буквально вручную телом и сосками, но на такой трудовой подвиг я не готов и мне не хватит програмистских скилов.
Еще раз спасибо за ответы, я просто совсем слаб в программировании, и только слегка поднаторел в запуске различных pix2pix на винде, будь она неладна.
да, ты прав, возможно стоит переключиться на 512 на 512, включить кроп просто. Я думал, что сеть будет улавливать разницу во входящем разрешении и будет лучше обучаться, если будет помнить, что у тушки грудь сверху и трусы снизу, но это, видимо, не так. (пока разрешение не 1024 на 1024- сним это бы прокатило, но у меня оно не лезет в 8 гб.)
Сразу спрошу глупый вопрос- в той примерной картинке 10240 на 10240 - она ведь должна быть не ресайзнутой, а, например, коллажем из картинок того-же масштаба, с которым работала нейросеть? Просто уже пробовал одну модель так запускать, и она не работала с неизвестным ей масштабом?
>(padding=same), либо обрезать картинку (padding=valid) вот эту терминологию я не понимать. Да, плохо что есть примеры с обрезанными краями, ну пусть один из слоев нейронки занимается тем, что все черные обрезанные края отсеивает. Не думаю, что это сильно нагрузит архитектуру сетки.
>1024х512 уже только сосок, если ты архитектуру не менял.
Вот именно, что менял (точнее я ничего не менял, я просто пользуюсь p2pHD от нвидии, ничего кроме критичных ошибок ШИндоус внутри не исправляю + ну только + аугментацию врезал, всегда можно заккоментить), это я не первую модель меньшего масштаба запускаю, а все по новой. В меньшей модели (моделях, их было много) были только картинки из, например, верхней части + лицо, или только в полный рост.
Ну и про фидить нули- да, я всосал, но счастливые часов не замечают, мне в кайф, что я вообще это запустил. Не бей ногами сильно, я чувствую превосходство, когда со мной разговаривает кто-то опытнее меня. Просто делаю как могу, пусть за меня работает ПК, я уже и так выжат от перебора картинок. Как представлю, что мне их все еще предстоит грамотно порезать, оставив только нужное... Я думал, что может существует софт типа вырезалки лиц по шаблону из deepfake, только для тела, и все что было найдено- это раскрытая архитектура deepnude, которая делает то же самое с помощью каскада из двух или трех нейронок с размеченными буквально вручную телом и сосками, но на такой трудовой подвиг я не готов и мне не хватит програмистских скилов.
>Я думал, что сеть будет улавливать разницу во входящем разрешении и будет лучше обучаться, если будет помнить, что у тушки грудь сверху и трусы снизу,
А при чем здесь кроп? Ты же при кропе не переворачиваешь картинку, верх всегда остается верхом.
Посчитай этой хуйней https://fomoro.com/research/article/receptive-field-calculator какой у тебя receptive field выходного пикселя, будешь примерно представлять, от какой области изображения зависит выходной нейрон. Скорее всего этот самый нейрон просто не видит нужную область изображения, чтобы одновременно и сиська и пизда попала в его поле зрения.
>Сразу спрошу глупый вопрос- в той примерной картинке 10240 на 10240 - она ведь должна быть не ресайзнутой, а, например, коллажем из картинок того-же масштаба, с которым работала нейросеть
Да, я про это и писал. На генеративных GAN'ах это вообще охуенно работает и часто дает ебические глюки
>Не бей ногами сильно, я чувствую превосходство, когда со мной разговаривает кто-то опытнее меня.
Я просто разговариваю. Ты молодец.
>которая делает то же самое с помощью каскада из двух или трех нейронок с размеченными буквально вручную телом и сосками
Да, в этом больше смысла. Потому что каждый нейрон в pix2pix довольно слепой, он видит только небольшую область от входной картинки. Соответственно нужно за все слои умудриться классифицировать, что перед тобой - сиська или пизда, и дальше нарисовать что-то, и все это анализируя область что-то типа 64х64 пикселя. Если же помогает сегментатор, который делит картинку на области с разными критериями, все становится сильно проще.
> Ну нужно рассчитать какое поле на входе имеет нейрон, в пикселях и это поле должно быть таким чтобы покрывать букву с запасом
Хм, а как это можно сделать? Для меня то, что происходит на верхних уровнях Inception практически тайна.
1. https://fomoro.com/research/article/receptive-field-calculator
2. Посчитать руками. С конца идешь и делаешь так
Если сверточный слой
x = x + int((filter_width-1)/2) умножить 2
Если у него stride=2 или это pool слой с шагом два
x = x умножить 2
Вроде не проебался. Так ты посчитаешь, от какой области зависит выходной пиксель от слоя к слою. Чем выше к поверхности, тем больше будет эта область
3. Пропустить через нейронку абсолютно черную картинку, дальше черную картинку 1 пикселем посередине и найти разницу
yoba = np.zeros(shape=(256,256,3))
yoba1 = np.zeros(shape=(256,256,3))
yoba1[128,128,0] = 1
yoba1[128,128,1] = 1
yoba1[128,128,2] = 1
o1 = model.predict(yoba)
o2 = model.predict(yoba1)
Тогда в массиве (o1-o2) дельта будет изменена только в тех нейронах, в receptive field которых попал этот белый пиксель. Несложно понять, что число таких нейронов в 4 раза больше, чем receptive field.
В классифицирующих нейронках это не так актуально, потому в конце у тебя есть fully connected слой, который связывает все изображение воедино, то есть классификатор видит все пространство целиком. А вот сегментирующих, супер-резолюшенах, экстракторах фич и прочих вариантах вида картинка=>картинка, которые масштабируемы, размер поля очень важен, потому что все, что за пределами поля зрения, нейрон (пиксель) тупо не видит.
да, есть такое, можно в p2p включить третью картинку с размеченными данным от 0 до 255, но я не знаю, где ее взять- можно взять разницу между картинками. но. не придется ли мне потом каждую картинку, которую я беру для "теста", тоже размечать? Поэтому чето не хочется.
>>37176 я такие слова вижу впервые. Поробую вкурить. это ndf ngf? Все равно еще раз спасибо, мечешь бисер перед свином.
>но я не знаю, где ее взять
Обучить сегментирующую нейронку, какой-нибудь unet простенький с небольшим числом фильтров на наружных слоях, и с большим внутри. Почему так - потому что наружные слои будут работать просто как даунскейл и апскейл, а вот внутренние уже будут более-менее размыто сегментировать. Нужно вручную разметить хотя бы разноцветными кружочками пизду, пупок и сиськи и дальше скриптом это конвертнуть в маску для сегментации. В идеале - прямо всю анатомию обвести. Это с моей стороны пиздеж в пустоту, потому что вряд ли ты будешь размечать так 17К картинок. Твой подход вполне может сработать, просто GAN будет вынуждена сегментировать сама.
>Поробую вкурить. это ndf ngf?
Сначала я подумал о пикрелейтед, лол. Нет, это число фильтров в дискриминаторе и генераторе, а речь об их размере - kernel_size
https://github.com/NVIDIA/pix2pixHD/blob/master/models/networks.py#L145
>Все равно еще раз спасибо, мечешь бисер перед свином.
Свины в треде есть и это не ты. А я очень общие слова тебе говорю, относишь критически.
Машобоёбы, расскажите, пожалуйста, как в CNN определяется первый линейный слой?
Там размерность идёт как выход_с_cвёрточного_слоя х у
Вот эти x, y как определяются?
Сверточные слои без активации тоже линейные, если что, ты видимо хотел сказать полносвязный.
В 2D сетке в последнем сверточном слое есть 3 числа - его пространственные размеры (условные пиксели) и число каналов у каждого пикселя. После flatten все эти числа превращаются в один большой вектор размером "длина х ширина х число каналов". Далее у полносвязаного слоя есть параметр его размерность на выходе. Тогда рамер матрицы будет (длина х ширина х число каналов, размерность), итого длина х ширина х число каналов х размерность. Обычно это дохуя и такие слои самые тормозные в модели
Спасибо.
Вот есть кусок кода:
nn.Conv2d(256, 256, kernel_size=(5, 5)),
nn.ReLU(),
nn.BatchNorm2d(256),
nn.Dropout(0.3),
nn.Flatten(256),
nn.Linear(256, 64),
Линейный слой получается должен быть (256х256х3, 64) ?
И вопрос вдогонку: что делать если идёт мультиклассовая классификация изображений, причём каждое может одновременно относиться к разным классам?
Т.е. есть столбцы для каждого из классов, если изображение к нему относится, там единица, вплоть до всех единиц в "классовых" столбцах.
Можно ли все эти столбцы засунуть в Y_train? Или всё это надо преобразовывать ручками или через PCA?
>Линейный слой получается должен быть (256х256х3, 64)
Нет. nn.Conv2d(256, 256, kernel_size=(5, 5)) - здесь первый 256 это каналов на входе, а второй - число каналов на выходе. Размер слоя тебе неизвестен, потому что свертке похуй на размеры. Ты можешь в этот слой скормить картинку 10х10, а можешь 10000х10000, он проглотит и не подавится.
Размер соответствующих фич в данном слое будет зависеть размера твоего input_layer'a, а не от параметров сверточного слоя, которому похуй.
Например, если у тебя на входе 1000x1000x256 (не 3, потому что ты написал nn.Conv2d(256, 256, kernel_size=(5, 5))), то на выходе у тебя будет слой размером что-то типа (1000-floor(5/2))x(1000-floor(5/2))=998x998x256. Соответственно и размер линейного слоя у тебя должен быть 998х998х256=254977024, а размер матрицы будет 254977024x64x4=65274118144=65 Гбайт. Кек. В случае многослойной нейронки с постоянным даунскейлом от слоя к слою, такого пиздеца конечно не будет.
Так как считать это вручную бред, то это делают программным образом. Ну или берут keras, в котором ты не считаешь вручную эти размеры, а он за тебя это делает
>И вопрос вдогонку: что делать если идёт мультиклассовая классификация изображений, причём каждое может одновременно относиться к разным классам?
Универсальный ответ, и такой вопрос был недавно, использовать не softmax, который суммируется в единицу по всем классам, а sigmoid, у которого каждый класс независим и может выдавать от 0 до 1. Но это хуевый ответ.
Все сильно зависит от того, какая у тебя структура этих самых классов. Если у тебя есть собаки и коты, и они бывают рыжими и белыми, то проще сделать 4 класса, рыжих собак, рыжих котов, белых собак и белых котов и так далее.
Если же у тебя прямо дохуя тегов, то можно вместо последнего линейного слоя завести их несколько, и в каждом свой softmax классификатор, в котором пересечения классов нет. То есть по сути у тебя будет фичеэкстрактор, а поверх уже отдельные классификаторы - котов и собак с одной стороны, и по цвету шерсти с другой.
Все индивидуально, зависит от задачи и требует экспериментов.
>Линейный слой получается должен быть (256х256х3, 64)
Нет. nn.Conv2d(256, 256, kernel_size=(5, 5)) - здесь первый 256 это каналов на входе, а второй - число каналов на выходе. Размер слоя тебе неизвестен, потому что свертке похуй на размеры. Ты можешь в этот слой скормить картинку 10х10, а можешь 10000х10000, он проглотит и не подавится.
Размер соответствующих фич в данном слое будет зависеть размера твоего input_layer'a, а не от параметров сверточного слоя, которому похуй.
Например, если у тебя на входе 1000x1000x256 (не 3, потому что ты написал nn.Conv2d(256, 256, kernel_size=(5, 5))), то на выходе у тебя будет слой размером что-то типа (1000-floor(5/2))x(1000-floor(5/2))=998x998x256. Соответственно и размер линейного слоя у тебя должен быть 998х998х256=254977024, а размер матрицы будет 254977024x64x4=65274118144=65 Гбайт. Кек. В случае многослойной нейронки с постоянным даунскейлом от слоя к слою, такого пиздеца конечно не будет.
Так как считать это вручную бред, то это делают программным образом. Ну или берут keras, в котором ты не считаешь вручную эти размеры, а он за тебя это делает
>И вопрос вдогонку: что делать если идёт мультиклассовая классификация изображений, причём каждое может одновременно относиться к разным классам?
Универсальный ответ, и такой вопрос был недавно, использовать не softmax, который суммируется в единицу по всем классам, а sigmoid, у которого каждый класс независим и может выдавать от 0 до 1. Но это хуевый ответ.
Все сильно зависит от того, какая у тебя структура этих самых классов. Если у тебя есть собаки и коты, и они бывают рыжими и белыми, то проще сделать 4 класса, рыжих собак, рыжих котов, белых собак и белых котов и так далее.
Если же у тебя прямо дохуя тегов, то можно вместо последнего линейного слоя завести их несколько, и в каждом свой softmax классификатор, в котором пересечения классов нет. То есть по сути у тебя будет фичеэкстрактор, а поверх уже отдельные классификаторы - котов и собак с одной стороны, и по цвету шерсти с другой.
Все индивидуально, зависит от задачи и требует экспериментов.
Эмбеддинги и позиционный энкодинг тебе определенно нужны, почитай вот этот вот пейпер.
https://arxiv.org/pdf/2003.08077.pdf
Аноны, помогите пожалуйста советом. Изучаю ML около полугода, решил выполнить реальную задачу. Суть в том, что есть собранный датасет с физической активностью людей(есть дата и некий коэффициент активности(т.е. данные достаточно простые)). Нужно на примере одного человека построить функцию, которая при поступлении новых данных (при этом ранее обучившись на старых) могла сказать пользователю, достаточно ли он позанимался сегодня или нет. Я планирую использовать логистическую регрессию. Опытные аноны, подскажите пожалуйста, какой бы вы метод использовали для решения подобной задачи?
Блять, да он же на pytorch написан, придется этот код переписать на тензорфлоу, ибо pytorch я ненавижу.
Я бы нарисовал графики и захардкодил
Хм, а что такое learned positional encoding, насколько я знаю позиционный энкодинг нужен потому, что модель и понятия не имеет о последовательностях.
Но в имплементации я увидел какую-то хуйню, они создают рандомный тензор через pytorch с размерами (1, 5000, 256), и берут пропущенный через линейный слой тензор и складывают их, пропуская через дропаут, в чем прикол?
Алсо, что в тензорфлоу является аналогом nn.Embedding()?
>Так как считать это вручную бред, то это делают программным образом. Ну или берут keras, в котором ты не считаешь вручную эти размеры, а он за тебя это делает
Спасибо.
Но помучаю ещё вопросами:
если свёрточный слой идёт первым, и у нас цветные изображения, то слой будет выглядеть как nn.Conv2d(3, 32, kernel_size=(5, 5)) ? Это эквивалентно керасовскому Conv2D(filters=32, kernel_size=(3, 3), padding='SAME', input_shape=(img_size, img_size, 3) ?
> если у тебя на входе 1000x1000x256
Нет на входе у меня 3 канала, просто из дальше будет больше, и картнки 28х28. Т.е. судя по твоему посту будет 78х78х3 = 18252 ?
А размер матрицы 4672512?
А вот этот вот размер 78х78х3 полносвязного слоя дальше как сокращать?
Во-первых, соблюдать ли такое же измерение AxBxC?
Во-вторых, как резко его уменьшать? Можно ли сразу до 64 узлов?
Поясните физический смысл параметров трансформера плиз
Почему в голове именно три матрицы, зачем их нужно несколько, зачем residuals, почему это простакать надо шесть раз в енкодере, зачем ещё дополнительный аттеншен в декодере нужен тогда?
Что предиктят мадельки?
Более-менее со всем разобрался, хотя инициализация рандомом для меня все еще остается загадкой.
Переписал почти все, осталось понять, как результаты вытащить с сети.
> Алсо, что в тензорфлоу является аналогом nn.Embedding()?
И с этим тоже разобрался, embedding_lookup
>Во-первых, соблюдать ли такое же измерение AxBxC?
Не соблюдать. В остальном вообще без понятия. Посмотри как у других устроено
А размерность полносвязного слоя рассчитывается от последнего предшествующего?
То есть если картинки идут 80х80 и я 4 раза применю maxpooling, то у меня будет уже размерность 5х5. Сюда количество каналов, правильно?
Т.е. будет их 256, мне понадобится полносвязный слой из 5х5х256 = 6400 узлов?
>То есть если картинки идут 80х80 и я 4 раза применю maxpooling, то у меня будет уже размерность 5х5.
Только если у тебя свертки между этими пулингами имеют padding "same". Вообще возьми keras, ipython и просто печатай model.summary() для разных вариантов, поймешь, как оно что работает. Или ты думаешь я это узнал каким-то иным образом в свое время?
>Поясните физический смысл параметров трансформера плиз
Любая архитектура нейронки вводит некоторое предположение о датасете. Язык - изобретение человеков, поэтому скорее всего идеальная языковая модель будет каким-то образом повторять мозг. Но мы не знаем, как работает мозг, поэтому большей частью это эксперименты.
Можно предположить, о чем думали авторы трансформера, хотя скорее всего они думали совсем не так, как я.
>Почему в голове именно три матрицы
Стандартный процесс - сначала упростить работающее решение по-максимуму, чтобы оставить суть, потом усложнить его.
Возьмем LSTM, в котором была решена проблема забывчивости RNN с помощью механизма гейтов, когда стейт не тупо прибавлялся ко входу, а что-то из стейта выкидывалось, что-то сохранялось.
Потом LSTM максимально упростим - выкинем кучу формул (получили GRU), а потом рекуррентность.
Так ты получишь простейший attention gate, который выглядит как input нелинейность(W input), а вся нейронка - это настеканые таким образом слои, с residual связями. Упростить дальше уже сложно.
Дальше делаем одно усложнение - фикцированные веса нейронки заменяем на переменные
input нелинейность((W1input) * (W2input))
Все, остается добавить масштабный коэффициент.
Это работает эффективнее, чем attention gate, вот и используют
>зачем residuals
Это решает проблему vanishing gradients, без этого у тебя пока не обучится самый глубокий слой, менее глубокий обучаться не будет, что вызывает экспоненциальный взрыв времени обучения. Эта хуйня уже в учебниках должна быть, а ты вместо изучения сеток попроще лезешь изучать BERT
>почему это простакать надо шесть раз в енкодере
Потому что это попробовали 5 и 7, было не так оптимально. Сетка моделирует человеческий язык, а у коры головного мозга шесть слоев, то есть шесть довольно волшебное число. Когда была эра мелких нейронок, больше 3-х слоев не юзали, сейчас все обычно крутится вокруг 12 слоев, 6 что-то энкодит, 6 что-то декодит. Это все нумерология без научной ценности, но что-то в этом есть.
>зачем ещё дополнительный аттеншен в декодере нужен тогда
А ты полносвязные слои хочешь ебашить что ли?
>Поясните физический смысл параметров трансформера плиз
Любая архитектура нейронки вводит некоторое предположение о датасете. Язык - изобретение человеков, поэтому скорее всего идеальная языковая модель будет каким-то образом повторять мозг. Но мы не знаем, как работает мозг, поэтому большей частью это эксперименты.
Можно предположить, о чем думали авторы трансформера, хотя скорее всего они думали совсем не так, как я.
>Почему в голове именно три матрицы
Стандартный процесс - сначала упростить работающее решение по-максимуму, чтобы оставить суть, потом усложнить его.
Возьмем LSTM, в котором была решена проблема забывчивости RNN с помощью механизма гейтов, когда стейт не тупо прибавлялся ко входу, а что-то из стейта выкидывалось, что-то сохранялось.
Потом LSTM максимально упростим - выкинем кучу формул (получили GRU), а потом рекуррентность.
Так ты получишь простейший attention gate, который выглядит как input нелинейность(W input), а вся нейронка - это настеканые таким образом слои, с residual связями. Упростить дальше уже сложно.
Дальше делаем одно усложнение - фикцированные веса нейронки заменяем на переменные
input нелинейность((W1input) * (W2input))
Все, остается добавить масштабный коэффициент.
Это работает эффективнее, чем attention gate, вот и используют
>зачем residuals
Это решает проблему vanishing gradients, без этого у тебя пока не обучится самый глубокий слой, менее глубокий обучаться не будет, что вызывает экспоненциальный взрыв времени обучения. Эта хуйня уже в учебниках должна быть, а ты вместо изучения сеток попроще лезешь изучать BERT
>почему это простакать надо шесть раз в енкодере
Потому что это попробовали 5 и 7, было не так оптимально. Сетка моделирует человеческий язык, а у коры головного мозга шесть слоев, то есть шесть довольно волшебное число. Когда была эра мелких нейронок, больше 3-х слоев не юзали, сейчас все обычно крутится вокруг 12 слоев, 6 что-то энкодит, 6 что-то декодит. Это все нумерология без научной ценности, но что-то в этом есть.
>зачем ещё дополнительный аттеншен в декодере нужен тогда
А ты полносвязные слои хочешь ебашить что ли?
>Вообще возьми keras
У меня pytorch, в который надо готовую модель из кераса перевести, попутно уточнив некоторые детали.
Слабоумие и отвага.
Какая разница, формулы-то везде одни и те же. Ты можешь эту готовую модель в керасе распечатать через print (model.summary()) и тупо переписать захардкоженные размеры
>в чем проблема
В размере полносвязного слоя. Очевидно же.
Вот тут, например, есть большая керасомодель:
https://www.kaggle.com/shawon10/plant-pathology-eda-and-deep-cnn/notebook
Мне не понятно, какого размера будет полносвязный слой, и вообще, нужен ли он там, потому что если считать, что ядро 3х3 срезает по 1 пикселю, а 5х5 по 2, то учитывая количество свёрточных слоёв, там вообще отрицательные значения долы быть при использовании на картинке 80х80.
Так керас за тебя и посчитает, максимум тебе придется помнить, что число входных слоев пайторча равны числу выходных слоев предыдущего слоя, да иногда числа поперемножать
>учитывая количество свёрточных слоёв, там вообще отрицательные значения долы быть при использовании на картинке 80х80.
Да, и такая ошибка часто бывает
Попробую поиграться.
Ну а пока:
>>X_train[0].shape
(80, 80, 3)
>>nn.Sequential(nn.Conv2d(3, 32, kernel_size=(3, 3), bias=False...
Given groups=1, weight of size 32 3 3 3, expected input[150, 80, 80, 3] to have 3 channels, but got 80 channels instead
ШТО
Орнул.
траспонирование переставляет размерности, например твой кейс в нампайе решается как np.transpose(image, (2, 0, 1))
Ты разобрался уже, но напишу.
Входные данные неверные, бывают NHWC бывает NCHW (N - размер батча, H, W - длина и ширина, C - число каналов)
У тензорфлоу (и кераса) по дефолту NHWC, а пайторча видимо NCHW, поэтому при переписывании кода втупую у тебя эта ошибка
keras либо pytorch
Мне керас больше нравится своим функциональным интерфейсом, как-то логичнее что-ли, но вообще pytorch на коне ща
>>39335
Использовал torch.tensor.permute(), если кому надо.
Ещё судя по этому, можно использовать для изменения размерности view? reshape и transpose.
https://jdhao.github.io/2019/07/10/pytorch_view_reshape_transpose_permute/
хочу пойти аналитиком в нац полицию Украины (или МВД, или в любой отдел Кабинета Министров). Нет вакансий! Я в ахуе суууууука
БЛЯТЬ!
> хохол
> зумер вкатывальщик
> воннаби мусор
Тайдмен года, однозначно. Премию Жопеншмульцера в студию!
Не совсем так
В моём арсенале: 1.5 года дроча на бизнес процессы, графана и кликвью
1 год дроча на статистику, табличные данные и воркфлоу загрузить-препроцесс-линейная модель-валидейт-репорт.
Ну и до этого по мелочи в айти катался, в эмбеддед, 2 года
А захотелось в какую-то гос структуру пойти - в ахуе, даже не понял где вакансии, хоть и нагуглил .gov сайты со списком всех вакансий.
Такое чувство, что государство работает с third party айти конторами, у себя никого не держит
>>39563
Ну блин, задачка сан франциско крайм классификейшн - очевидный кейс
Проанализировать обращения
Эффективность патрулирований
Какие нарушения чаще всего, где сделать упор
Где впустую работают люди
Да и вообще оценить процессы - наверняка там полный распиздос
Да, это влажные фантазии! Но то что вакансий нет - надо разобраться
>сан франциско крайм классификейшн
>Эффективность патрулирований
>Где впустую работают люди
А ХАБАРЯ брати це як допоможе?
Я думал ты умер, куда пропал
Антоны, так может ли кто-нибудь пояснить за этот learned positional encoding и почему там используется рандом?
> Ну блин, задачка сан франциско крайм классификейшн - очевидный кейс
> Проанализировать обращения
Ага, получишь 97% нигр как причину преступности, пойдешь с этой статистикой к начальству и сядешь за расизм. СЖВ скрепы это швитое, нитрожь!
А, я таки сильно затупил, теперь понял тот код.
Да, в таком виде это имеет смысл, к каждому батчу применяется один и тот же набор рандомно сгенерированных значений.
Не заметил цифру 1 в начале, лел.
>На текущем железе - никогда, тред не об этом
А вот тут подробнее. Уже есть архитектура и понимание принципов работы? Где почитать moar?
Даже при torch.backends.cudnn.enable = False
Выдаёт cuDNN error: CUDNN_STATUS_ARCH_MISMATCH
Да вроде кеплер.
Нашёл такое
TF requires cudnn which requires a cc3.0 gpu. Your cc2.1 gpu is nearly useless with TF.
Всё плохо?
Ставь старый тензорфлоу, который поддерживает твою некро GPU
[-4,3] из-за слишком большого пулинга?
Ну т.е. просто обучать отдельные бустинги на подвыборках, а потом их смешивать?
Качество не должно возрасти?
Проверь.
Чет не могу найти подходящий метод
Вряд ли, скорее число фильтров не там написал
Что они наоборот делают? Они вытаскивают из тензора те части, которые указаны, разве scatter не тем же занимается?
Мне нужно наоборот запихнуть в тензор значение 1 на выбранные позиции по определенным индексам.
Ну в общем-то я подумал и решил, что это все будет куда сподручнее сделать в NumPy или в том же торче и нужные значения записать в tfrecord, чем сидеть и думать над такими операциями.
Думаю только, что размер датасета увеличится и обучение станет куда менее гибким
При обучении мы пишем:
model.train()
for images, labels in train_dataloader:
outputs = model(images)
loss = criterion(outputs, labels.squeeze(-1))
loss.backward()
При валидации и тестировании тоже циклы нужны?
Или просто
model.eval()
test_output = model(test_images)
?
Чет идея была не очень, да и способ кодировки хуевый на самом деле, в случае японского даже с кодировкой по символу получаются таблицы из одной единицы и 3000 нулями
С ядрами там двойственная задача такая же, только вместо скалярного произведения <x,y> там K(x, y). Для вывода двойственной задачи нужно записать ККТ для прямой задачи
>При валидации и тестировании тоже циклы нужны?
да, там тоже используется даталоадер
>При обучении мы пишем:
про шаг оптимизатора забыл
Спасибо.
>да, там тоже используется даталоадер
А как тогда предсказывать и записывать результат в файл?
Так я и записал. Даже решил вроде как, но вот так красиво подставить, чтобы получилась именно такая двойственная задача, не вышло. Спасибо.
У тебя есть датасет для твоих данных, его метод __getitem__ может возвращать не только тензор, но и индексы
> Что ваши нейроночки не способны ни на что кроме распознавания картиночек, звуков, генерирования смешных паст со случайным набором слов, и аппроксимации дискретных функций
А ещё сложнейшие оптимизационные задачи, где без черного ящика не обойтись и благодаря которым компании повышают прибыль на миллионы долларов. А так конечно нихуя.
В чем сложность задачи, если ты над ней не размышляешь строго? Ты ковыряешь нейроночку из каких-то случайных эмпирических соображений до тех пор, пока она не начнет выдавать лучшие результаты, что не гарантировано. Про миллионные прибыли - это да. Миллионы можно заработать, продавая лохам землю на Лун. Прибыль - не показатель сложности задачи, решенной для ее получения.
Модель это и не самое сложное и долгое, чем занимаются дата саентисты в фирмах.
То есть статистику дата-саентист не знает? Что может доказать или опровергнуть одиничный пример? Ты хочешь сказать, что каждая рядовая дата-саентист-макака проводит подробный математически строгий анализ того, что она делает, и находит подобные оптимизации?
В данном конкретном случае есть четырехколесное ведро, в него нужно вставить пихло, пихло должно быть дешевым и иметь требуемое количество лошадей и динамику что бы ведра купили.
Ведро нужно продать завтра.
На полноценное изучение математической модели свежеизобретенного пихла и вынработке оптимальной методики управления уйдет столько ресурсов и человекочасов что пихло с ведром выйдет золотым и через год.
Машинное обучение позволяет, нихуя не делая и зная лишь примерно безопасные пределы пердящего выххлопными двигла, на стенде подрочить месяцок и получить готовую прошивку. LOLIMOT Же позволяет обеспечивать постпродажную адаптацию так, что счастливый владелец буден наваливать и горя не знать, пока у него ведро по кругу сыпаться не начнет.
Страшные ты вещи анон рассказываешь. Твои истории пахнут вырождением специалистов.
Мимопроходил.
> . LOLIMOT
Шизло, нейрофаззи алгоритмы это такой же машобчик. Что у тебя в наплечной параше вместо мозгов, армяне в нарды играют, или что, что ты один класс алгоритмов машоба противопоставляешь всему машобу как явлению? Выпей таблетки, маня, да открой для себя no free lunch theorem.
И вот сейчас ты для себя открыл реальные причины истерии с коронавирусом.
Да, подавляющее большинство инженегров-специалистов - бумеры старперы.
Зумота не может спроектировать новый бэнве.
Даже у маска ключевые сотрудники - насовские диды как минимум заставшие маслятами апполон.
Зумота - сплошь вротэндеры.
Помрут бумеры - наступит неиллюзорный мэд макс.
>Для модели 1 вес нейрона смещения = 8.0, а вес нейрона входа 1 = -25.0
>Ну — я просто посмотрел на график.
Где он -25.0 увидел?
Блять, я тупой, в проекте был просто one hot encoding
Мне наплевать на ИИ. Это к Курцвейлу и прочим фантазерам.
Ну ты, например, паразит этого треда, который даже 0,1% не умеет того, что умею я. Соответственно все твои теоретизирования о "когнитивных вычислений, семантических сетей, совершения умозаключений, естественного языка" не стоят вообще нихуя, говнофилософ. Примерно как первоклассник, который не понимает, почему взрослые не могут напечатать денег, чтобы конфеты были у всех.
У них круг задач ограничивается изображениями или он шире?
Алсо, я правильно понимаю, что они очень ресурсозатратны и на некрожелезе такие сети не заработают?
>У них круг задач ограничивается изображениями или он шире?
Почти любую нейронку можно превратить в GAN, потому что по сути это ты заменяешь захардкоженный лосс на нейронку и тренируешь параллельно свою сетку и свой лосс.
Просто не всегда есть в этом смысл, есть же вещи попроще, например VAE, при этом VAE страдают от недостатка высоких частот, но зато проще тренируются и не всегда это проблема.
>Алсо, я правильно понимаю, что они очень ресурсозатратны и на некрожелезе такие сети не заработают?
Да не особо. Главная их проблема в том, что их тренировка это шаманизм
Посоветуйте, что нужно чтобы на джуна вкатиться, сейчас курс Воронцова из шада смотрю, там около 24-25 лекций, я на четвертой сейчас. Параллельно тупые задачки в sklearn делаю. Что делать дальше? И какие вообще сферы есть, я так понимаю это
1. банки, тряска экономических черных ящиков?
2. cv, все, что с изображениями и зрением связано
А что ещё?
Зачем мы берем и инициализируем output_weights и перемножаем его с выходом слоя?
>Почти любую нейронку можно превратить в GAN
Не любую, а только если у неё непрерывные выходные данные, чтобы через них градиент прокинуть можно было. Например, в задачи генерации текста их не всунуть.
Работы много. но на волне хайпа огромная куча джунов.
Тупо создать тензор и маску из единиц?
Напротив сидел что ли?
> Анон, это же дипфейк?
Везде в связи с эпидемией власти людям финансовую помощь выделяют, а у пыньки мысли только как бы ещё побольше навариться на пиздеце. Вот уж реально, "кому война, кому мать родна"...
Как ты собираешься тренировать нейронку бэкпропагейшеном, если у нее не непрерывный выход?
а которых цепочка тоже не замыкается.
Аноним 25/03/20 Срд 21:28:02 №1642792
>>1642780 →
Так я сам как-бы уже месяц как написал заявление об увольнении, но не подаю его из-за того что хикка и боюсь подойти и сообщить начальнику что хочу уволиться.
>>1642782 →
Ну, как-бы, я-то работать пошел исключительно из интереса посмотреть как он
Сегодня слышал как коллеги по офису это обсуждали. Не думаю, что дипфейк
Питон я не знаю, но программированием занимался очень долго. На руках топовый домашний комп с Windows 10. Перезагружаться в Убунту очень не хочется, но могу, если выбора не будет. Как я понимаю, часть Питоновского кода в принципе не работает под Виндой.
Первая задача
Есть один сет с изображениями. Для каждого изображения создана png-маска такого же разрешения, что изображение, там magenta-пикселями залиты нужные области с объектами (допустим, я ищу котов). То есть есть картинка 0001.png и рядом (или в другой папке, не важно) 0001.mask.png. Как мне натренировать сеть искать похожие объекты на других картинках? Допустим, дата-сет на 1000 картинок. Задача крайне тривиальная, просто скиньте любую статью, где решается эта проблема (поиск похожих паттернов / распознание объектов). Я находил на Швабре примеры, но там в какую-то ебанину всё скатывается постоянно.
Вторая задача
Есть сет с изображениями.
Для каждого изображения совершенно другая программа построила набор фич. Ну от балды скажем 20 фич, каждая в пределах от 0 до 1. Допустим, рядом с каждым файлом 0001.png лежит 0001.tsv, где фичи перечислены через табуляцию.
Каждое изображение категоризируется в три корзины: 0 (нет), 1 (да) и 2 (в зависимости от интерпретации человека либо да либо нет).
Третью корзину я, допустим, выкину из сета. (Как вариант: буду учить две сети, в одной спорный сет пойдёт в 0, в другой — в 1). Мне нужно категоризировать все изображения, но кроме самой картинки я хочу подать на вход эти 20 фичей (я осознаю, что для, допустим, нейронки нет разницы между одним числом и другим числом). Опять же, тривиальнейшая задача, но раньше я никогда не решал ML-проблемы. И снова: просто скиньте статью. Крайне желательно, чтобы там также подавались отдельные ручные фичи.
Есть третья задача, но её я опишу завтра, она сложнее
Заранее спасибо за ответы. С меня как обычно.
Да я уже понял, ток странно, что его так реализовали, а не дефолтными способами.
Алсо, есть ли какие-либо способы работы с трансформером в режиме предсказания кроме как энкодить картинку и по символу, пока трансформер не предскажет конец строки использовать декодер?
Используй фотошоп, Люк.
Немного не по теме, но на дваче вроде как нет похожего треда
КОРОЧЕ
у меня есть RGBD изображения и все заебись
Мне нужно построить по ним облако точек
ВОПРОС
нужно ли юзать для этого цветосоставляющую компоненту или хватит только глубины?
Если буду с таким вопросом послан нахуй из треда - будет справедливо
Бля, в итоге какая-то хуйня получается, генератор тупо одно значение повторяет и все.
>Первая задача
https://medium.com/@arthur_ouaknine/review-of-deep-learning-algorithms-for-image-semantic-segmentation-509a600f7b57
>Вторая задача
Почитай тупо туториалы по нейросетям и документацию используемой библиотеки. У тебя каждый объект распознавания состоит из пары: картинка + вектор признаков. Так что тебе нужно построить сеть, которая обрабатывает картинку, обрабатывает вектор, склеивает результат и дальше ещё работает с ним. Статей по этому нет - научной ценности задача не представляет по причине тривиальности.
> склеивает результат
Само собой это тривиальная вещь, только я не представляю что я подаю на вход конечного алгоритма обучения: папку с файлами или я сначала обрабатываю каждый файл с помощью той же библиотеки, получая из него вектор (набор пикселей), а потом уже получившийся промежуточный результат отправляю на конечный алгоритм. Если второе, то задача действительно привиальна. Однако если там в конце метод
learnFromImages(string[] filenames, int[] results)
то задача сразу прекращает быть такой уж тривиальной
За первую ссылку спасибо, сейчас же и почитаю
Пробежался по статье, там обзор кучи алгоритмов. Спасибо, но мне бы просто куски кода для обучения и последующего использования
>>42849
https://github.com/matterport/Mask_RCNN
https://engineering.matterport.com/splash-of-color-instance-segmentation-with-mask-r-cnn-and-tensorflow-7c761e238b46
Кажется вот то, что мне нужно
Нашёл по запросу python object detection mask
https://youtu.be/OOT3UIXZztE
Такие дела size mismatch, m1: [150 x 256], m2: [6400 x 64]
https://dumpz.org/agWBb5rrngHN
Линейный слой поменять?
>Задача крайне тривиальная
Вот на этом этапе представляется такой кабанчик из десятых, который за пару баксов хотел чтобы ему склонировали фейсбук, задача-то тривиальная. Это не тривиальная задача, особенно когда у тебя в данных есть перекос, то есть одних классов мало, других много. Ну и еще нужно отличать image segmentation (то есть классификацию отдельных пикселей) и object detection (то есть поиск прямоугольников).
Для сегментации проще всего взять unet.
>Опять же, тривиальнейшая задача
Нде.
Погоди, но там же была куча свёрточных слоёв, а потом Flatten. Получается первый полносвязный слой должен быть большим, нет?
тривиальная не потому что простая, а потому что её разбирали 50 раз на том же швабре
Может.
Но я брал с каггла другую работающую нейроку (инфа 146%), правда под мнистовские изображения 28х28, и она в данном случае подобную же ошибку выдавала (но с другими цифрами).
Хотя с мнистом она работает сразу, из коробки.
Два года назад было плохо, сейчас хорошо.
https://deepmind.com/blog/article/wavenet-generative-model-raw-audio
https://www.descript.com/lyrebird-ai?source=lyrebird
речь и пение не одно и тоже
Я как бы не нахожу тех параметров, которые нужно вводить в калькуляторе, который сюда кидали- ни в переменных, ни в коде.
Там в параметрах есть только ngf ndf по дефолту 64. Моей карточки хватает поднять значения ndf ngf до 90, если уменьшить размер обрабатываемого изображения с 512 на 256. Мне тут недавно один хороший человек подсказывал, что можно так уменьшить размер с 1024 на 512 на 512 на 512 например, но хочется также увеличить мощность сетки. Предположим, что детали изображения могут уместиться в квадрате 256 на 256.
Можно ли еще спросить про ndf и ngf параметры и про работу pix2pix- верно ли я понимаю, что в моем случае дискриминатор учится искать объект на изображении, а генератор- меняет "подсвеченные" дискриминатором пиксели на нужные, точнее активирует некоторые нейроны, которые ответственны за обработку найденных фрагментов изображения. Короче, первый вопрос такой- не стоит ли мне попытаться разделить сетку на две части- одну генерирующую маску, а вторую- разукрашивающую эту маску? Я уже писал, что так сделали авторы deep nude, но они делали это долго на unsupervised обучении. А у меня тут есть база с парными картинками как бы. Может реально бахнуть маску разницы картинок и не дурить голову, пытаясь впихнуть в одну сетку сразу две функции? И код от deepnude уже есть чтобы запускать сразу обе сетки из p2pHD в один клик, и есть опция для подключения тех размеченных областей, как советовал человек тут. По идее на такой выборке будет достаточно просто сделать маску разницы. Если очень захочу, могу разметить картинки сверху и снизу на две разные части одежды, но даже это мне кажется излишним.
Вот еще вопрос в свете всего этого:
Про ndf ngf- с увеличением этих параметров размер файла генератора и дискриминатора увеличивается в какой-то прогрессии, ну с 64 до 90 файл генератора вырос 700 мб до 1400. Это потому, что увеличилось число нейронов на первом слое? И как это влияет на receptive field, роста которого я добиваюсь? И это из-за того, что в данной нейронной сети (архитектуре) pix2pixHD увеличение количества нейронов на первом слое как-то повлияло на количество нейронов на других слоях?
Верно ли я понимаю, что слои могут взять на себя роль распознавания или генерации какой-либо одной функции. которой их обучают? Объясню -на первом слое сетка видит часть круга, потом видит колесо, потом часть капота, потом весь авто, и за каждое понятие отвечает один слой? (Возможно, что большое число нейронов на одном слое может взять много функций сразу? Это уже вопрос кривой архитектуры сети, наверное).
И чтобы изменить количество слоев в p2pHD нужно уже будет кодить? В одном из вариантов кода pix2pix hd 1024 я видел в коде явно добавленные слои, а вот в коде от nvidia не нахожу файла с явным указанием их или их параметров. Это наталкивает на мысль, что количество слоев может все же зависит от каких-то заданных в начале тренировки параметров, но я не знаю каких.
С меня как всегда. Могу расписать чего-нибудь про свои попытки и бесконечно растущий датасет.
Я как бы не нахожу тех параметров, которые нужно вводить в калькуляторе, который сюда кидали- ни в переменных, ни в коде.
Там в параметрах есть только ngf ndf по дефолту 64. Моей карточки хватает поднять значения ndf ngf до 90, если уменьшить размер обрабатываемого изображения с 512 на 256. Мне тут недавно один хороший человек подсказывал, что можно так уменьшить размер с 1024 на 512 на 512 на 512 например, но хочется также увеличить мощность сетки. Предположим, что детали изображения могут уместиться в квадрате 256 на 256.
Можно ли еще спросить про ndf и ngf параметры и про работу pix2pix- верно ли я понимаю, что в моем случае дискриминатор учится искать объект на изображении, а генератор- меняет "подсвеченные" дискриминатором пиксели на нужные, точнее активирует некоторые нейроны, которые ответственны за обработку найденных фрагментов изображения. Короче, первый вопрос такой- не стоит ли мне попытаться разделить сетку на две части- одну генерирующую маску, а вторую- разукрашивающую эту маску? Я уже писал, что так сделали авторы deep nude, но они делали это долго на unsupervised обучении. А у меня тут есть база с парными картинками как бы. Может реально бахнуть маску разницы картинок и не дурить голову, пытаясь впихнуть в одну сетку сразу две функции? И код от deepnude уже есть чтобы запускать сразу обе сетки из p2pHD в один клик, и есть опция для подключения тех размеченных областей, как советовал человек тут. По идее на такой выборке будет достаточно просто сделать маску разницы. Если очень захочу, могу разметить картинки сверху и снизу на две разные части одежды, но даже это мне кажется излишним.
Вот еще вопрос в свете всего этого:
Про ndf ngf- с увеличением этих параметров размер файла генератора и дискриминатора увеличивается в какой-то прогрессии, ну с 64 до 90 файл генератора вырос 700 мб до 1400. Это потому, что увеличилось число нейронов на первом слое? И как это влияет на receptive field, роста которого я добиваюсь? И это из-за того, что в данной нейронной сети (архитектуре) pix2pixHD увеличение количества нейронов на первом слое как-то повлияло на количество нейронов на других слоях?
Верно ли я понимаю, что слои могут взять на себя роль распознавания или генерации какой-либо одной функции. которой их обучают? Объясню -на первом слое сетка видит часть круга, потом видит колесо, потом часть капота, потом весь авто, и за каждое понятие отвечает один слой? (Возможно, что большое число нейронов на одном слое может взять много функций сразу? Это уже вопрос кривой архитектуры сети, наверное).
И чтобы изменить количество слоев в p2pHD нужно уже будет кодить? В одном из вариантов кода pix2pix hd 1024 я видел в коде явно добавленные слои, а вот в коде от nvidia не нахожу файла с явным указанием их или их параметров. Это наталкивает на мысль, что количество слоев может все же зависит от каких-то заданных в начале тренировки параметров, но я не знаю каких.
С меня как всегда. Могу расписать чего-нибудь про свои попытки и бесконечно растущий датасет.
Да дохуя, ищи любой по Image Captioning.
Во-первых, он переоценён, во-вторых, он всё равно потребность в специалистах не покрывает.
Интересующийся
pycharm
Нет, конечно, поэтому и переизбытка на рынке нет. Есть переизбыток вкатышей.
Нахуя непрограмистам иде? Для хардкода и блокнота хватит.
можешь ipython notebook использовать https://jupyter.org/try
Ну, короче, я затестил и оригинальное решение на pytorch и оно тоже не работает, возвращая одинаковые результаты, заебись.
В итоге вообще нет никаких пруфов, что трансформер тут окажется лучше LSTM
Чтобы быстро накидать код, запустить и сразу посмотреть результат (с картинками и графиками, если надо), по результатам дописать ещё код/поправить уже написанный, снова запустить...
>он всё равно потребность в специалистах не покрывает.
https://mipt.ru/education/departments/fpmi/master/methods-technologies-ai
https://data.mail.ru/pages/index/
>1,5 года 3 семестра
>15–20 часов в неделю
Работодатель тебя кормить и держать просто так не будет, в отличие от мамки.
Ну что, "круто".
Хуяришь такой 40 часов в неделю на заводе галере, потом ещё 20 часов в неделю в каком-то сраном шаде слушаешь лекции, делаешь практику, сдаёшь экзамены, в том числе вступительные и выпускные, , рвёшь жопу если материал не понял или чего-то не знаешь. И так 2 года, чтобы джуном устроиться в тот же яндекс на какие-нибудь 80к.
Какому-нибудь студенту такое может и зайдёт. А вот уже работающему - нет. И да, при наличии технического или физ-мат. образования азы машоба схватываются месяца за 4 вместе с практикой если знаешь что и как изучать и ого спросить.
Вся жопа упирается в ОПЫТ и завышенные требования работодателей.
Грубо говоря, снижаешь количество признаков до N, при это может потеряться часть информации.
Мимонуб
Так для студентов старших курсов у них есть на это время
>if n_components is not set all components are kept:
>n_components == min(n_samples, n_features)
Сука, ну ты почитай документацию-то!
Приходят два еврея к раввину. Один спрашивает:
— Скажи, ребе, белый — это цвет?
— Да, белый — это цвет.
— А черный — это цвет?
— Да, черный — это тоже цвет.
— Слышишь, Хаим? Я же говорил, что продал тебе цветной телевизор!
Хочу сказать, что вопрос чётче формулировать надо. В чём задача-то? Другая нейронка нужна? Тогда какие данные для обучения есть в наличии? Формально-то и грейскейл цветное изображение, а если тебе это не нравится - ну, покажи, как надо, а если не можешь - извиняй, ничего лучше предложить не можем. И нужно ли вообще нейронку привлекать - наверняка же есть сервисы для раскрашивания чёрно-белых изображений? Или задача какая-то другая?
>И да, при наличии технического или физ-мат. образования азы машоба схватываются месяца за 4 вместе с практикой
Когда кто-то подобное пиздит, нужно указывать свой опыт, потому что за 4 месяца ты разве что хуйцы аппроксимировать начнешь
Спасибо.
Это, конечно, круто, но вапрос в следующем: полная свёрточная сеть даёт "Calculated padded input size per channel: (1 x 1). Kernel size: (5 x 5). Kernel size can't be greater than actual input size", урезанная даёт size mismatch, m1: [150 x 256], m2: [6400 x 64]
Я правильно понимаю, что в первом случае сетка "переработала" перед полносвязным слоем, а во втором "недоработала"?
ресайзни в одно, которое будет меньше минимального, скажем 64х64 или 128х128
Я чёт гайды пока только по обучению последнего слоя вижу
keras.applications.inception_v3.InceptionV3(include_top=False, weights='imagenet')
выстави потоки -1, а если видеокарту юаешь - возьми батч максимально возможный, пока падать не будет
Хотя, очевидно, плюсом-то оно будет. Вопрос мой скорее в том, насколько это будет плюсом, может вообще хватит поверхностного понимания что такое производная фнп и как ее находить и тому подобное, любая абстракция и расширение сверху будет уже юзлесс.
Что можно почитать про word embedding?
И вообще, есть материалы, как делают векторизацию данных?
https://github.com/Kyubyong/transformer
Ну и в итоге на тесте модель выдает одинаковый результат для всех картинок.
Что я уже только не пробовал, пробовал пропускать сплющенный выход со слоя CNN через линейный слой и подавать, не помогало, пробовал и просто сплющить выходы и подать туда, опять же, не помогло.
Причем обучается все это нормально, правда долго.
Есть готовые экстракторы фичей из предложений BERT, ELMO и тд
Попробую еще взять готовую имплементацию под керас и впихнуть туда сверточную сетку, надеюсь, что хотя бы она сработает и будет выдавать адекватный результат.
Как DenseNet или ResNet применяется?
Там тоже надо слои выстраивать?
Или просто загружаешь и используешь?
берешь архитектуру, переделываешь последний слой под кол-во своих классов и трейниш, либо полнсотью, либо только классификатор последнйи
Типа softmax'a?
А что насчёт входных изображений? У них размер должен быть фиксированный? Или они принимают любой?
Сверточная часть может скушать любой размер, самое главное пиксели преобразовывать как в при обучении на ImageNet
А оно будет обучаться, если я его в другой модели буду использовать? Или мне как-то с sequential ебаться надо?
что конкретно, кроме времени доставки они прогнозируют
спрашивает экономист-червь, можно без подробностей
возможно они подсовывают тебе рестораны, в которых ты закажешь с более высокой вероятностью.
а как они принимают решения? типа ок, я заказываю чаще всего в маке, поэтому на главной будет мак? что?
Поэтому на главной будут рестораны, из которых заказывают те, кто чаще всего заказывают в Маке. Например, Бургер кинг.
Читай что такое: I-коллаборация и U-коллаборация (item/user collaboration)
ок, это было в принципе понятно, но интересно, а что более сложное они используют?
Использую torchvision.trasnform для приведения в изображеий в нужный вид, нормализую, получаю тензоры
tensor([[[-1.2617, -1.2274, -1.1932, ..., -1.5185, -1.5185, -1.5357]...
Потом применяю train_test_split и TensorDataset
Пишет: 'numpy.int32' object is not callable
Што? У меня же уже тензоры.
Есть истории успеха анонов из чата?
Таки разобрался - список тензоров надо превратить в один тензор.
ODS регулярно выкладывает презентации неплохих решений kaggle.
https://github.com/antoniosehk/keras-tensorflow-windows-installation
Дошёл до создания виртуального окружения в терминале юпитера, создал, активировал его. Но в самом ноутбуке команда tf.test.is_gpu_available показывает что нет никакой GPU. GTX 1070 если чтоу.
>>50593
>>50686
>>50912
У меня получилось. Создал виртуальное окружение, в нём захерачил отдельный юпитер ноутбук и всё заработало. Но! Теперь возникла проблема с нехваткой оперативной памяти.
Операция требует аллоцировать чуть меньше 5гб памяти и не может. В предыдущей ячейке операция требовала 13.5гб памяти, всё прошло успешно, график использования памяти в диспетчере ушёл в сотню и после вернулся обратно. Так какого хуя не может выделить 5гб, если свободно больше?
Это не то, тут все замораживают для обучения, но да я вроде разобрался и даже запустил обучение.
Надеюсь, что в этот раз все не зафейлится, как в прошлые, когда нейронка выдавала один ответ на все.
Я не планирую -- по крайней мере, сознательно -- становится хардкорным датасайнтистом. Для меня это скорее вспомогательный инструмент на будущее, который, однако, точно будет использоваться. Я дошел до момента выбора между двумя путями:
1) Интенсивный путь -- углубляться дальше внутрь методов machine learning. Вот передо мной открыта хардкорная библия "The Elements of Statistical Learning Data Mining, Inference, and Prediction"
2) Экстенсивный -- начать по-максимому использовать все, что узнал на практике, какими бы куцыми эти знания не были, с изучением всей сопутствующей экосистемы
Мб, у кого-то есть мысли на этот счет
Может стоит изучать именно те инструменты и методы, которые тебе понадобятся? Если не планируешь, что это будет основной твоей деятельностью, то зачем сильно глубоко углублятся? Важно знать какие методы есть, где они работают, где они не работают, как их можно внедрить в твоей деятельности.
Я тут немного подохуел, когда на джуна дата инженера попросили в тестовом задании запилить сравнение различных моделей для предсказания качества вина в vine dataset. Это то ладно, говно вопрос. Но затем попросили обернуть в докер и прикрутить Rest API.
В чем проблема прикрутить Rest через Flask? Это же эллементарно делается. Докер тоже эллементарно.
а зачем такой джун нужен, который декоратор из фастапи засунуть не может?
Тем более "дата инженера". Его основная работа - это докеры ворочать.
Если найдешь обертку без питона. А еще можешь взять с питоном, но отдельно её оформить в виде демона или чего там тебе хочется (посмотри bert as service)
А ещё в одс уже все скулят, что всех переувольняют. А ведь и правда переувольняют же, т.к. хайп уже всё.
На степике есть курсы от Samsung
В чем отличие Software Developer, Software Engineer, Software Designer и Programmer?
Инб4 купи новую, прикрути ещё ОЗУ
Google Colab
Не знаю. В чём?
> data analyst
Больше с аналитикой и визуализацией данных работает.
>data engineer
Работает больше с обработкой данных, очисткой и их хранением.
>machine learning engineer
Работа с моделями, машобчиком, БОЛЬШЕ СЛОЁВ.
> researcher
Преимущественно исследования в области информатики и математики, новые подходы и модели.
>data scientist,
Хуй знает. Предположу, что общее название вышеперечисленных или человек-универсал, понемногу всё вышеприведённое умеющий.
Если привяжешь номер телефона к аккаунту, то сможешь в ноутбуках использовать GPU
Но при этом затрачивать минимально ресурсов компьютера. Пока остановился на dlib с готовой натренированной моделью. Готовые решения в опенцв как я помню по фпсам не устраивали
Есть ещё какие варианты?
>data scientist
Универсал, хорошо знающий как программирование так и математику. Работает на высокооплачиваемой работе в FAANG.
>data analyst
Червь-пидор без навыков, который хотел хоть как-то вкатиться в датасаенс.
> data engineer
Кодомакака, не умеющая ничего кроме программирования. Обслуживает датасаентистов.
>machine learning engineer
То же что и data scientis, но с упором на результат и конечный продукт.
>researcher
Трясун черных ящиков, работающий за миску риса. В случае удачной встряски ящика публикует пейпер.
Картофан это вторая культура.
Первую и вторую культуру определил Тимоти Гауэрс, отнеся себя ко второй, в статье Two cultures in mathematics (найдешь сам).
Эта статья сама по себе является отсылкой к статье Ч.П. Сноу The Two Cultures (там речь шла о технарях и гуманитариях).
В статье Гауэрса четкого определения не приводится, я придумал следующее упрощение: conceptual theory building vs concerete problem solving.
Но это не совсем точно. И. М. Гельфанд говорил что надо решать задачи, а не строить теории. Серр тоже предпочитал задачи теориям, см. его переписку с Гротендиком.
Можно сказать, что в концептуальной математике принято улучшать доказательства, например доказательство Хопфа обобщенной формулы Эйлера-Пуанкаре не использовало гомологических методов и было очень громоздким, позже её передоказали.
Еще один аспект улучшение языка. Кардано решал кубические уравнения геометрическими построениями, современный символьный язык алгебры получил распространение поздеее, у коссистов (см. History of Algebra Ван-дер-Вардена).
Уравнения Максвелла на языке дифференциальных форм выглядят гораздо проще, тогда их всего два, а не 8 (см. Болибрух, Казарян).
Язык производных функторов позволяет высказывать утверждения, которые пользуясь спектральными последовательностями, записать невозможно. Вместе с тем всегда можно перейти к явным вычислениям со спектралками.
Ещё можно сказать о строгости. В комбинаторике, классическом анализе, можно получать крупные результаты пользуясь нестрогими методами, например Эйлер, Рамануджан, Пуанкаре, итальянская школа алгебраической геометрии.
Бескоординатый язык концептуальнее даже в физической ситуации, потому что не надо доказывать независимость от координат. Интеграл Лебега лучше интеграла Римана, потому что пр-во интегрируемых решений полно и значит не нужно доказывать существование решений.
Мы хотим иметь простые доказательства. Это достигается за счёт сложных определений.
Первая культура это core mathematics, вторая это периферия.
В комбинаторике можно получать результаты, будучи убощиком в MIT, как Мэтт Деймон в фильме The Talented Mr. Ripley.
Комбинаторика практически не используется в остальной математике и сама не использует ничего из других областей.
Core math можно определить как все вещи, необходимые для утверждения и доказательства важных математических результатов, например Теоремы о модулярности (Великой Теоремы Ферма), Теоремы Атьи-Зингера, Гипотез Вейля, Теоремы об изоморфизме норменного вычета, Теоремы Квиллена-Суслина и т.д.
Картофан это вторая культура.
Первую и вторую культуру определил Тимоти Гауэрс, отнеся себя ко второй, в статье Two cultures in mathematics (найдешь сам).
Эта статья сама по себе является отсылкой к статье Ч.П. Сноу The Two Cultures (там речь шла о технарях и гуманитариях).
В статье Гауэрса четкого определения не приводится, я придумал следующее упрощение: conceptual theory building vs concerete problem solving.
Но это не совсем точно. И. М. Гельфанд говорил что надо решать задачи, а не строить теории. Серр тоже предпочитал задачи теориям, см. его переписку с Гротендиком.
Можно сказать, что в концептуальной математике принято улучшать доказательства, например доказательство Хопфа обобщенной формулы Эйлера-Пуанкаре не использовало гомологических методов и было очень громоздким, позже её передоказали.
Еще один аспект улучшение языка. Кардано решал кубические уравнения геометрическими построениями, современный символьный язык алгебры получил распространение поздеее, у коссистов (см. History of Algebra Ван-дер-Вардена).
Уравнения Максвелла на языке дифференциальных форм выглядят гораздо проще, тогда их всего два, а не 8 (см. Болибрух, Казарян).
Язык производных функторов позволяет высказывать утверждения, которые пользуясь спектральными последовательностями, записать невозможно. Вместе с тем всегда можно перейти к явным вычислениям со спектралками.
Ещё можно сказать о строгости. В комбинаторике, классическом анализе, можно получать крупные результаты пользуясь нестрогими методами, например Эйлер, Рамануджан, Пуанкаре, итальянская школа алгебраической геометрии.
Бескоординатый язык концептуальнее даже в физической ситуации, потому что не надо доказывать независимость от координат. Интеграл Лебега лучше интеграла Римана, потому что пр-во интегрируемых решений полно и значит не нужно доказывать существование решений.
Мы хотим иметь простые доказательства. Это достигается за счёт сложных определений.
Первая культура это core mathematics, вторая это периферия.
В комбинаторике можно получать результаты, будучи убощиком в MIT, как Мэтт Деймон в фильме The Talented Mr. Ripley.
Комбинаторика практически не используется в остальной математике и сама не использует ничего из других областей.
Core math можно определить как все вещи, необходимые для утверждения и доказательства важных математических результатов, например Теоремы о модулярности (Великой Теоремы Ферма), Теоремы Атьи-Зингера, Гипотез Вейля, Теоремы об изоморфизме норменного вычета, Теоремы Квиллена-Суслина и т.д.
Какие языки должен знать data engineer?
Это не вещества. Пучкизм головного мозга.
> Core math можно определить как все вещи, необходимые для утверждения и доказательства важных математических результатов, например Теоремы о модулярности (Великой Теоремы Ферма
А ничего что теорема Ферма для общего случая не доказана? И три века попыток ее доказать привели только к выводу что ее вообще хуй докажешь в рамках одного театра Ходжа. А значит, без мочидзукиной теории там вообще нечего делать.
Тут же вообще картинки одни. Где можно про адаптацию bakprop'а под них почитать? Именно математику
Эта книга у меня есть. Там есть момент, который вообще непонятен: как взять производную по весу в промежуточном слое, если этот вес есть во всех нейронах этого слоя?
Ну напиши сам, хули. Что сказать то хотел?
Ну давай, расскажи, сколько там десятков слоев нужно и видеокарт, чтобы решить описанную мной задачу.
Вопрос: есть ли функции которые способны уменьшить объем выборки сохранив при этом точность? Или все нужно писать ручками самому?
p.s. мб ссылочки какие-то есть?
>Не умеет обрабатывать новые точки.
SOM тоже. То, что он тренируется мелкими порциями не значит, что он хорошо дотренировывается. Если у тебя изначально было одно распредление и ты долго на нем тренировал, а потом появился новый класс, и ты наедешься, что SOM магическим образом его распознает - не, нихуя, должно повезти.
Новые точки, не соответствующие имеющемуся распределению, все равно будут проецироваться на какой-то наиболее подходящий для них best matching unit на имеющейся карте.
Это называется активное обучение
Только если ты возьмешь все точки за всю историю, перемешаешь их и обучишь с нуля, ты получишь другой результат.
>Какой же пиздатый чел
Чтобы пройти собеседование
@
Надо ходить на собеседование
Ага, только ты со своим кагглом никому нахуй не сдался. Даже на джунов порой требуют кучу всего.
Че на машоб и датасайнс стажировки можно податься? не просто в айтишные конторы где на шарпе сайты пишут же?
В москвабаде может быть.
Это первое. Второе - будучи там 27+ тебе норм на стажёрскую стипендию?
В этом вся и проблема - будучи уже каким-никаким самодостаточным человеком с определённым доходом идти стажёром за копейки - сомнительная перспектива.
А если у тебя кредиты/семья на шее (и такие есть) - это пиздец.
В общем, горизонтальные лифты в России работают так себе.
В 27+ надо вкатываться через стартапы.
> 27+? условимся что вопрос от студента
Зумера вкатывальщики никому не нужны. Если внешка 8+/10 - вкатывайся в вебкам и всякую гей проституцию. Если ниже 8/10 - в доставку яндекс.еда.
>27+
>Зумера
/0
>вкатывальщики никому не нужны.
У тебя какое-то кастовое общество получается.
> в доставку яндекс.еда
>вкатывайся в вебкам и всякую гей проституцию
Ещё жирнее.
Я про студентов. 27+ не зумер, конечно.
> У тебя какое-то кастовое общество получается.
Бескастовых обществ никогда нигде не было и сейчас нет. Разница только в наличии социальных лифтов между кастами, где-то с этим попроще, где-то совсем пизда.
> Ещё жирнее.
Предполагается, что при наличии мозгов такой вопрос обычно не возникает.
>одно золото на каггле
Есть тут именно работающие датасатанистами?
Задачи каггла хоть как-то вашу работу напоминают?
Инб4 задачи с наградой в десятки и сотни тысяч баксов.
>Бескастовых обществ никогда нигде не было и сейчас нет.
Тем не менее, именно бескастовое (или стремление к нему) обеспечивает прогресс. Европейцы колонизировали Индию, а не наоборот.
>при наличии мозгов такой вопрос обычно не возникает.
Всё упирается в текущие возможности. Останься Ломоносов в своём захолустье, ему бы его ум не помог.
Сейчас 21 век, а не 18.
В 18 веке было как я сказал ранее. И да, в кастовом обществе этот индус был бы говночистом, если бы вообще был.
Нужно закладывать в часовую ставку стоимость того же sagemaker (кто чем пользуется?)?
Или отдельной статьей договариваться?
Так только на фарме раскачиваются?
Плюс, модель моя большая и отжирает под 3 гига видеопамяти. Есть вариант запустить все это без финансовых расходов?
джанго/фласк
Мне кажется недостаточным то, что я просто собрал данные и скормил их готовой сетке из библиотеки, покрутив некоторые параметры и потратив неделю на тренировку. Конечно, работы было много и на тех этапах, но мне хотелось бы на защите продемонстрировать работу. А ни у кого из потока нет ноута с достаточно мощной видюхой.
Диплом - это научная работа. Результатом научной работы является не код, не работающий сайт, а отчёт, в котором описана задача, решение, ход работ, проведённые исследования, результаты и выводы. Хотя, может, ты специализируешься не на ML, а на разработке ПО почему этому в вузах обучают, а не в ПТУ, не понимаю, и сетка - это побочное?
> Результатом научной работы является не код, не работающий сайт, а отчёт, в котором описана задача, решение, ход работ, проведённые исследования, результаты и выводы
С такой точки зрения, у меня все получается хорошо. Меня просто беспокоит, что мне скажут, что я взял готовенькое и скормил свои данные.
Из тех кто как я пишет нейросеть, один предсказывает исход спортивных событий, а другой с AlphaZero что-то мутит
Если у тебя цель диплома найти новую архитектуру сетки то, да скажут. Если ты использовал готовую архитектуру чутка изменил ее и обучил для своей задачи, то все нормально.
По идее,задача диплома - не в этом. Диплом - это выпускная квалификационная работы, т.е. нужно продемонстрировать свою квалификацию - умение провести исследование. Реальные научные задачи решать не нужно, это после получения ВО. Тут есть своя жопа с "диплом бакалавра - это ВКР, а у магистра диссертация, к которой уже предъявляют требования по публикациям".
Спасибо, подбодрил.
Тогда попрошу анонов помочь затестить мою сетку.
Она пишет новости.
От вас заголовок новости, а я вкину сгенерированную новость.
Типа Путин подписал указ об увеличении МРОТ до 100 тысяч рублей
И моя сетка раскроет эту тему в формате полноценной новости.
Можете и любую дичь придумать, но лучше всего отработает на адекватных заголовках
Вот тебе 3 варианта с одинаковыми параметрами:
власти румынии отказались делиться с другими странами , чтобы они уважали мир и стабильность , говорится в заявлении министерства финансов страны . " граждане румынии , проживающие в румынии , не могут знать , где они живут , и они не могут понять , кто живет , и что они живут . они не могут понять , что они живут , и они не могут знать , какие они живут " , — говорится в сообщении
премьерминистр румынии виорика данчилэ в четверг во время выступления на конференции по безопасности в румынии отказалась делиться с <unk> <unk> и обещаниями , чтобы они уважали мир и свободу страны . данчилэ выступила с речью , посвященной <unk> и <unk> , которая пройдет в пятницу в варшаве . она призвала не допустить , чтобы страна имела право знать , не допустить , чтобы эти страны не имели права знать , что они должны делать , чтобы те не <unk> , а не <unk> , и не только в других странах , но и в мире . данчилэ также заявила , что не видит , что страна не может быть вынуждена защищать свои национальные интересы , в том числе в европе . она также отметила , что страна " никогда не откажется от своих прав , а не в мире " .
румынский премьерминистр виорика данчилэ отказалась делиться с другими игроками в европе , пишет <unk> . в своем обращении в <unk> <unk> <unk> <unk> , который не знает , что происходит , пишет <unk> , как это было в последнее время .
И Виорика Данчилэ действительно была премьером Румынии, как я прогуглил
> " граждане румынии , проживающие в румынии , не могут знать , где они живут , и они не могут понять , кто живет , и что они живут . они не могут понять , что они живут , и они не могут знать , какие они живут " , — говорится в сообщении
Глубокомысленно...
На Румынию было мало новостей. Вот я попробовал это:
владимир жириновский избил геннадия зюганова
лидер лдпр владимир жириновский после встречи с президентом рф владимиром путиным ударил главу кпрф геннадия зюганова . об этом политик рассказал в интервью риа новости . по его словам , зюганов получил сотрясение мозга и перелом .
лидер лдпр владимир жириновский избил лидера кпрф геннадия зюганова , который был госпитализирован в реанимацию , сообщила риа новости депутат государственной думы , лидер партии " родина " . ранее зюганов заявлял , что жириновский госпитализирован в реанимацию с инфарктом . " в больницу поступил мэр москвы сергей александрович зюганов . он был госпитализирован . он был госпитализирован . его состояние стабильное , поэтому , к сожалению , ему не требуется " , — сказала риа новости председатель партии юлия тимошенко . по ее словам , зюганов не исключает , что он будет госпитализирован в реанимацию .
председатель лдпр владимир жириновский избил <unk> главу кпрф геннадия зюганова , который ранее выступал с инициативой о запрете на въезд в страну , сообщил риа новости в среду лидер кпрф геннадий зюганов . зюганов ранее заявил , что принял решение исключить из списка кпрф кандидатуру зюганова , который ранее был лидером кпрф . в свою очередь , зюганов заявил , что решение о запрете на въезд в страну было принято в конце декабря . " зюганов обратился за разъяснениями , и он был избит , и с его заявлением о запрете на въезд в страну он был отстранен от работы . это безобразие " , — сказал зюганов . он добавил , что " не может не сказать , что он в этот момент , не зная того , что он не работал , может быть , это это было " .
NudeNet (уже готовые детектор сисиек-писек) выдает ошибку, типа не поддерживается метод в виндоус, лол, которая требует даунгрейдить keras. Попробую последний раз сделать этот детектор в виртуалке сейчас.
Расскажи(те) нюфагу, как строится сеть из твоей статьи?
У самых простых сетей просто один слой за другим идут, а тут несколько таких конструкций параллельно запускаются?
Задачи на каггле в тысячу раз интереснее, именно на них лучше учиться млю.
На картинке вижу обычный self-attention, только с выёбистым способом вычисления k, q, v. Похоже, что они ещё решили брать внимание не по всему предложению, а только по некоторому ограниченному окну. Единственное, что мне непонятно - что такое downsampling.
Год где-то, хотя я вакансии на полный день не рассматривал (а просьба неполного сразу сильно снижает шансы).
Странно, судя по hh, в москвабаде полно вакансий, в том числе для вкатывальщиков не на полный день.
Типо чем больше совпадение, тем ближе к прямой линии должен быть результат?
Я бы так не сказал, что полно, все хотят от года работы лол, эта вакансия незакрытой уже два года висит как минимум, я к ним ходил, меня не взяли
В идеале у тебя то, что выдала модель (predictions), и то, что на самом деле (y_test), должно совпадать, т. е. лежать на прямой y = x.
Нагенерь ещё текста, назови программу Братишкой
по одному на каждый миллион человек, живущих в москве
Я прогер, но в нейроночках не силен
Хочу узнать насколько адекватна задача, степень ее сложности и куда смотреть, если все норм
Нужно оценить степень похожести двух предложений
То есть «я хочу послушать музыку» и «сейчас буду слушать музыку» или «я подвергся насилию» и «меня избили»
Нормальная задача, сложность средняя, смотреть в гугл по запросу nlp text similarity либо deep learning text similarity
Одни и те же нейроны пропускают через себя последовательность, запоминая что-то через скрытое состояние, у лстм/гру еще и с помощью ячейки долговременной памяти.
Анон, выручай. Как будет выглядеть градиент в векторном виде для логистической регрессии с классами -1 и 1? Я вывел выражение, но у меня ничего не обучается. Для классов 0 и 1 вывод в интрнете я нашёл, а для такого случая ничего найти не могу.
Сигмиоид на гиперболический тангенс надо заменить.
Господа, такой вопрос: тренирую сеть классифицировать алфавит языка жестов.
Хочу натренировать на русский алфавит. Существует много датасетов под американский алфавит. Хочу их тоже использовать, для улучшения точности на русском алфавите. Как это лучше сделать?
Допустими, я возьму какую-нибудь архитектуру, удалю последний слой, заморожу n слоев, а что дальше делать?
Нет.
Какие подходы могут быть использованы для решения это задачи?
У меня пока такие: bag of words, word2vec, fasttext, lstm.
Что ещё можно использовать?
https://colab.research.google.com/drive/1jKBWcfiwiBmlTG2k0L-3qmFfNF2VGjHN
Я просто не понимаю, в чем ошибка, оно после 2-3 эпохи перестает нормально обучаться и декодер позже выдает всегда одинаковые ответы
Может быть я неправильно CNN соединил с трансформером или маску как-то не так создаю?
Делал по аналогии с проектом https://github.com/fengxinjie/Transformer-OCR/blob/master/train.py
Сейчас бы пользоваться хуйней от пындекса. Тебе этот пынбуст Яндекс браузер и Яндекс бар в остальные браузеры не установил?
xgboost выдавал результаты хуже качеством
>Хочу их тоже использовать, для улучшения точности на русском алфавите. Как это лучше сделать?
Общие жесты если есть вырежи/переразмечь
Это то понятно. Меня интересует вопрос извлечения данных из пикч, где знаки не совпадают.
Мань, сейчас дефакто только две библиотеки для бустинга компитят: catboost и lightgbm
Дай им какой-нибудь новый класс. Типа angliysoke_s_kak_dollar, а после тренировки выкинь этот класс и дообучи на чисто русском датасете
Если шо, то tfrecord файл я создаю с помощью этого кода https://pastebin.com/rUiY2wMd
Может кто-нибудь посмотреть и сказать, почему оно не работает?
...
Я вообще думал сделать без слоя классификации. Просто из архитектуры удалить последний слой и ничего своего не добавлять. Обучить так, а потом прикрутить классификацию с русскими буквами и уже крутить на русском датасете.
принял, спасибо
То есть тематический классификатор, окей
Так вот, единственные два вопроса: как добиться того, чтобы ML (наверное это будет desicion forest) играл в долгую, а не пытался увеличить баллы целевую функцию в близкую. Вот пример. Два игрока бьют друг друга. У обоих 100 HP. У них два хода: ударить сейчас (-10 HP) и копить силу 5 шагов, чтобы ударить (-0 HP сейчас и следующие 5 шагов, а потом ударить на -100 HP и ваншотнуть). То есть если агент будет применять скилл №2, то первые 5 раз у него ничего не будет кроме какого-нибудь нарастающего баффа. И только в шестой раз нарастающий балл спадёт и произойдёт удар. Допустим, я не хочу читерить с обучением, вводить бикамералку и говорить обучающей сети, что бафф на нарастающий удар это само по себе очень хорошо. Допустим, я хочу, чтобы агент выяснил это сам.
Возможно кто-то предложит мне смотреть в сторону starcraft ai, где решали как раз задачу обучения агентов (но там не для баланса, баланс рас выяснился как следствие)
Обычно для того чтобы спровоцировать агента на "исследование" распределение на множестве стратегий делается зависимым от частоты выбора каждой стратегии в прошлом, таким образом что редковыбираемая стратегия получает некоторый бонус, но вообще с отложенными выигрышами нужно настраивать как именно этот бонус даётся и в целом то чем ты занимаешься называется reinforcement learning, а там нет решений из коробки, надо дрочиться. Почитай книгу Сарто по реинфорсмент лёрнингу, там разобраны основные рецепты.
Барто то есть блядь
Сначала твои игроки научатся рашить, потом кто-то либо случайно поймет, что долгая стратегия выгоднее, либо у тебя неправильный баланс и раш всегда лучше
А зачем? С этой задачей алгоритмы комп. зрения справляются достаточно точно. Для них, правда, нужны координаты глаз и носа на изображении. Вот эти точки ты можешь нейронкой искать.
Задача называется head pose estimation, готовых решений полно, и с нейронками, и без
> reinforcement learning
Оказывается, AlphaStar именно так и обучался.
https://habr.com/ru/post/437486/
> Поведение AlphaStar генерируется нейронной сетью глубокого обучения, которая получает через интерфейс сырые данные (список юнитов и их свойств) и дает на выходе последовательность инструкций, которые являются действиями в игре. Если говорить точнее, архитектура нейронной сети применяет подход «transformer torso to the units, combined with a deep LSTM core, an auto-regressive policy head with a pointer network, and a centralised value baseline»
>Оказывается, AlphaStar именно так и обучался.
Ты ведь даже не понимаешь, о чём говоришь, да? Reinforcement learning - класс задач, AlphaStar - один из предложенных способов решения конкретной задачи из этого класса.
> AlphaStar - один из предложенных способов решения конкретной задачи из этого класса
Альфастар это бот для игры в старкрафт 2 от компании deepmind.
Как оценить качество изображения (например томография)? Цель - отсеять томографии с плохим качеством из датасета.
Я хотел эти точки потом преобразовывать в соответствии с вектором, чтобы получить данные о лице, а не сам вектор получить. Какая же тогда точность будет? Я так не смогу сделать распознавалку лиц.
Может есть ещё какие-то способы для сравнения лиц?
Распознавание лиц это технология электронного ГУЛАГа, с такими вопросами сразу нахуй. Это даже хуже, чем в треде по химии спрашивать как бомбу сделать или дурь сварить.
Обучить на датасете с хорошим качеством.
Вручную это изи делается, просто глядя на снимки понятно.
Я думаю, как бы это автоматизировать. Да и скорей всего уже кто-то делал такое...
Помню, был сайт с игрой, где ты рисуешь предметы, а нейросеть угадывает, что это. Возможно, это близкая по смыслу задача.
Кстати да, получается почерк так тоже можно распознавать. Но у меня другая задача. Если без подробностей, то это стиль работы с интерфейсами и нет, не для слежки. Видимо, все это очень граничит друг с другом и по сути стороны одной медали.
Повторюсь, задача не в отнесения новых данных к одной из множества групп (людей в твоем примере), а в отнесении новых данных к одной заранее известной группе. Задачи похожи, но немного другие акценты в моем случае, на мой взгляд.
Собери 1000 примеров и скорми реснету
>Как так-то?
Ну так, что и то и то скорее всего просто работает хуёво. Оно и понятно, cам прикинь чего больше: уникальный фраз или уникальных слов, очевидные проблемы с резепрентативностью.
Есть и более практическое объяснение: всем на этот sent2vec плевать, а авторы не в гугле всё-таки работают, настроили трансформеры как умели, ничего и не получилось.
__call__ метод
Я бы вначале проверил сможешь ли ты индентичный кружок нарисовать спустя неделю. Потому что мне кажется, что нет.
А так надо научиться извлечкать признаки из картинки окружности, например, координаты центра, радиус, насколько это окружность, с какой точки и в какую сторону рисовалось. А там уже любую модель пытаться обучить
Смотря сколько их и насколько они разные. То есть если их немного, то есть же дохуя методов поиска выбросов, не?
Алсо помню видос от одс по соревнованию, где тоже с медицинским снимками работали. Там духота была
Спасибо за ответ. То есть, нужно получить максимум данных (скажем так, цифр) из картинки самому, а потом с этими данными уже работает нейросеть? Мне казалось, что поиск похожих изображений (например, светофоров) происходит как-то иначе.
Еще немного подробностей о задаче: изначально у меня как раз есть эти точки, их типы (например, цвета) и координаты. Я хотел их наносить на изображение (на белый фон) и отдавать машине.
Ну вообще иначе происходит, да. Можно прямо картинками обучать сверточную нейросеть. В принципе это очевидно лучше для твоей задачи.
Не знаю мне почему-то пришло в голову прям с картинки какие-то признаки получать. Например с opencv нарисовать правильный круг вокруг нарисованного https://www.pyimagesearch.com/2016/10/31/detecting-multiple-bright-spots-in-an-image-with-python-and-opencv/ посмотреть координаты центра, занимаемый объем ну и тд.
Но вообще да просто cnn заюзать и думать не надо
> Еще немного подробностей о задаче: изначально у меня как раз есть эти точки, их типы (например, цвета) и координаты. Я хотел их наносить на изображение (на белый фон) и отдавать машине.
Ну если наоборот у тебя точки есть, то необязательно тебе их рисовать и отдавать нейронке, можно сразу на их основе какие-то признаки сгенерить и запилить модель или какую-нибудь метрику придумать для сравнения. Надо просто пробовать разные способы, смотреть что лучше получается
Ты сам умеешь все это делать? Если да, оставь какой-нибудь контакт (почта, тг, дискорд), я бы взял у тебя платную консультацию, когда подойду к этой задаче.
Не, у меня нет такой квалификации, чтобы консультации давать. Просто пишу как бы я делал.
Ты в принципе можешь прямо сейчас посмотреть и позапускать нотебуки на кэгле по digit recognition https://www.kaggle.com/c/digit-recognizer/notebooks разница с твоей задачей будет, что у тебя вместо 10 два выхода - вероятность, что твой круг и что не твой
Спасибо, посмотрю.
Таки может кто-нибудь посмотрит? Я все вроде сделал правильно, взял готовую рабочую модель трансформера, прицепил CNN Может тут и есть ошибка? Плохо знаком с керасом и поэтому что-то не так сделал? и удалил эмбеддинг из энкодера.
Ставить порог в 0.975
После поддержки пихвоидов
Когда это запилят в cudnn
Прог +еще Non maximum supression
Что за херня? Из-за чего? Target вроде везде числовой.
ты вообще ничего не сказал. Ни что за язык ни что за пакет. Керас у тебя там или чистый тензорфлоу. Так мы ничего не скажем. Но я думаю, что у тебя в твои данные для обучения попала заголовочная строка таблицы, где есть строка target
Не совсем аккуратно обученный YOLO детектор, который я запускал только для теста вначале выдал 11000 результатов по среднему размеру груди (не плоски и не огромные- их я отмечал отдельно вроде как) из выборки в 33000, но если я его подтяну, он найдет чуть больше. Из этой выборки я взял 6000, которые не были совсем пустыми по разнице и не самые "зеленые", где генератору нужно было бы угадывать все изображение.
Пока что результат такой, это буквально первые 50к итераций этой ночью.
Lr дефолтный 0.0002, почитал статей, испугался кривыущих трехмерных графиков и включил дропаут (ранее не включал). Батч 1, разрешение 256. Вот параметры дефолтные p2pHD n_blocks_global: 9
n_blocks_local: 3
n_clusters: 10
n_downsample_E: 4 - это генератор
n_downsample_global: 4 - это тоже генератор?
n_layers_D: 3 - дискриминатор, ок
n_local_enhancers: 1 - что это?
ngf ndf 64.
Что можно и нужно изменить в процессе обучения и в параметрах сетки?
Что я пытался делать ранее на менее аккуратных выборках- можно увеличить количество слоев n_downsample_global до 5, если сделать ngf и ndf 32- больше памяти не хватает, но особых изменений в лучшую сторону я не видел, скорее наоборот- сгенерированная картинка становилась более размытой. Можно также увеличить n_layers_D: 3 до 5 например- возможно что дискриминатор дошел до предела своих возможностей и это поможет таки прорисовать соски на груди?
Можно при тех же дефолтных параметрах сделать ngf ndf 90, но я не знаю как это влияет на итог.
Можно уменьшить Lr до 0.00015 или 0.0001 (собственно сейчас я это сделал и жду)- ранее когда сетка начинала обучаться медленнее результаты прорисовки деталей улучшались.
Пока что обучение не схлопнулость до нулей, как оно любит делать.
(epoch: 6, iters: 4410, time: 0.691) G_GAN: 2.072 G_GAN_Feat: 11.270 G_VGG: 6.509 D_real: 0.012 D_fake: 0.011
(epoch: 6, iters: 4510, time: 0.692) G_GAN: 2.045 G_GAN_Feat: 6.935 G_VGG: 4.047 D_real: 0.023 D_fake: 0.018
(epoch: 6, iters: 4610, time: 0.692) G_GAN: 2.309 G_GAN_Feat: 9.387 G_VGG: 4.705 D_real: 0.056 D_fake: 0.017
(epoch: 6, iters: 4710, time: 0.691) G_GAN: 1.914 G_GAN_Feat: 9.022 G_VGG: 4.087 D_real: 0.005 D_fake: 0.012
(epoch: 6, iters: 4810, time: 0.693) G_GAN: 1.770 G_GAN_Feat: 10.887 G_VGG: 5.132 D_real: 0.008 D_fake: 0.020
(epoch: 6, iters: 4910, time: 0.692) G_GAN: 2.166 G_GAN_Feat: 9.647 G_VGG: 4.933 D_real: 0.007 D_fake: 0.008
(epoch: 6, iters: 5010, time: 0.691) G_GAN: 1.870 G_GAN_Feat: 8.349 G_VGG: 3.217 D_real: 0.013 D_fake: 0.018
(epoch: 6, iters: 5110, time: 0.694) G_GAN: 2.335 G_GAN_Feat: 7.818 G_VGG: 4.237 D_real: 0.010 D_fake: 0.019
(epoch: 6, iters: 5210, time: 0.689) G_GAN: 1.669 G_GAN_Feat: 7.253 G_VGG: 3.981 D_real: 0.005 D_fake: 0.040
Графики, если их сгладить, -плавные нисходящие, вроде все хорошо и продолжает обучаться.
И, может стоит, как советовал мне ранее анон, перейти с p2pHD на сетку, например, с Unet128 или 64 генераторами, или resnet9block? пробовал ранее resnet9 и на совсем маленьких примерах, где девушка стояла в полный рост на разрешении 256 на 256 детализация была очень хорошей. Я вроде как понимаю, что это зависит от поля зрения модели, но мне хочется делать все это на разрешении приемлимо- хотя бы 256 на 256 на грудь, а не на полный рост. И их архитектура вроде как заточена на "медицинскую" разметку по цветам, а не на "сложную генерацию", но я могу ошибаться.
И мне кажется, что p2pHD должен хорошо справиться и сам, ведь в примерах работы он отрисовывал у автомобилей и мелкие детали типа фар и стекол, а не рисовал весь автомобиль как кусок однородного железа, как в моих примерах. Да, там на входе были размечены границы авто и еще много разных объектов для отрисовки, именно поэтому я надеюсь, что сетка должна справиться с моей маленькой задачей.
Можно и у меня их разметить объект без излишней детализации, правда я еще так не делал и я не совсем уверен, что разбиение на карту instances с одним единственным объектом, который совпадает с зеленой маской, по которой сейчас идет обучение, чем-то поможет. Ну и время обучения там с их ресурсами было большое, побольше чем у меня- далеко не день. И аугментацию я уже прилепил к p2pHD, очень не хочется опять ее запиливать на другом коде.
В голову лезет всякий бред типа - выходную картинку с размытыми контурами еще раз загнать как A и прогнать AtoB в этой же сети.
Я также пытался изменять архитектуру сети, чтобы увеличить поле зрения сетки- ну собственно увеличивал количество слоев, но там упирался в потолок объема памяти, а изменения кода вручную выдавали совсем нерабочие результаты.
Собственно главные вопросы- куда копать, что делать разумнее всего сейчас? Менять параметры, и если да, то какие? Или просто ждать обучения? Или прыгнуть на другие архитектуры или с девятиэтажкиили запиливать свою сетку с рандомом и аугментацией?
А, и еще вопросик- почему гамма так плохо передается?- Это похоже на "болезнь" p2p алгоритма- на всех картинках всех имплементаций все детали тоже меняют цвет слегка. Не особо важно, но может что-то можно сделать.
Ну и о хорошем- я для своей выборки научился массово а автоматическом режиме выравнивать изображения с помощью фотошопа и двух скриптов на питоне, даже те что первоначально не совпадали на несколько пикселей или больше и были выбракованы.
О двач, дай советов мудрых, спасибо.
Не совсем аккуратно обученный YOLO детектор, который я запускал только для теста вначале выдал 11000 результатов по среднему размеру груди (не плоски и не огромные- их я отмечал отдельно вроде как) из выборки в 33000, но если я его подтяну, он найдет чуть больше. Из этой выборки я взял 6000, которые не были совсем пустыми по разнице и не самые "зеленые", где генератору нужно было бы угадывать все изображение.
Пока что результат такой, это буквально первые 50к итераций этой ночью.
Lr дефолтный 0.0002, почитал статей, испугался кривыущих трехмерных графиков и включил дропаут (ранее не включал). Батч 1, разрешение 256. Вот параметры дефолтные p2pHD n_blocks_global: 9
n_blocks_local: 3
n_clusters: 10
n_downsample_E: 4 - это генератор
n_downsample_global: 4 - это тоже генератор?
n_layers_D: 3 - дискриминатор, ок
n_local_enhancers: 1 - что это?
ngf ndf 64.
Что можно и нужно изменить в процессе обучения и в параметрах сетки?
Что я пытался делать ранее на менее аккуратных выборках- можно увеличить количество слоев n_downsample_global до 5, если сделать ngf и ndf 32- больше памяти не хватает, но особых изменений в лучшую сторону я не видел, скорее наоборот- сгенерированная картинка становилась более размытой. Можно также увеличить n_layers_D: 3 до 5 например- возможно что дискриминатор дошел до предела своих возможностей и это поможет таки прорисовать соски на груди?
Можно при тех же дефолтных параметрах сделать ngf ndf 90, но я не знаю как это влияет на итог.
Можно уменьшить Lr до 0.00015 или 0.0001 (собственно сейчас я это сделал и жду)- ранее когда сетка начинала обучаться медленнее результаты прорисовки деталей улучшались.
Пока что обучение не схлопнулость до нулей, как оно любит делать.
(epoch: 6, iters: 4410, time: 0.691) G_GAN: 2.072 G_GAN_Feat: 11.270 G_VGG: 6.509 D_real: 0.012 D_fake: 0.011
(epoch: 6, iters: 4510, time: 0.692) G_GAN: 2.045 G_GAN_Feat: 6.935 G_VGG: 4.047 D_real: 0.023 D_fake: 0.018
(epoch: 6, iters: 4610, time: 0.692) G_GAN: 2.309 G_GAN_Feat: 9.387 G_VGG: 4.705 D_real: 0.056 D_fake: 0.017
(epoch: 6, iters: 4710, time: 0.691) G_GAN: 1.914 G_GAN_Feat: 9.022 G_VGG: 4.087 D_real: 0.005 D_fake: 0.012
(epoch: 6, iters: 4810, time: 0.693) G_GAN: 1.770 G_GAN_Feat: 10.887 G_VGG: 5.132 D_real: 0.008 D_fake: 0.020
(epoch: 6, iters: 4910, time: 0.692) G_GAN: 2.166 G_GAN_Feat: 9.647 G_VGG: 4.933 D_real: 0.007 D_fake: 0.008
(epoch: 6, iters: 5010, time: 0.691) G_GAN: 1.870 G_GAN_Feat: 8.349 G_VGG: 3.217 D_real: 0.013 D_fake: 0.018
(epoch: 6, iters: 5110, time: 0.694) G_GAN: 2.335 G_GAN_Feat: 7.818 G_VGG: 4.237 D_real: 0.010 D_fake: 0.019
(epoch: 6, iters: 5210, time: 0.689) G_GAN: 1.669 G_GAN_Feat: 7.253 G_VGG: 3.981 D_real: 0.005 D_fake: 0.040
Графики, если их сгладить, -плавные нисходящие, вроде все хорошо и продолжает обучаться.
И, может стоит, как советовал мне ранее анон, перейти с p2pHD на сетку, например, с Unet128 или 64 генераторами, или resnet9block? пробовал ранее resnet9 и на совсем маленьких примерах, где девушка стояла в полный рост на разрешении 256 на 256 детализация была очень хорошей. Я вроде как понимаю, что это зависит от поля зрения модели, но мне хочется делать все это на разрешении приемлимо- хотя бы 256 на 256 на грудь, а не на полный рост. И их архитектура вроде как заточена на "медицинскую" разметку по цветам, а не на "сложную генерацию", но я могу ошибаться.
И мне кажется, что p2pHD должен хорошо справиться и сам, ведь в примерах работы он отрисовывал у автомобилей и мелкие детали типа фар и стекол, а не рисовал весь автомобиль как кусок однородного железа, как в моих примерах. Да, там на входе были размечены границы авто и еще много разных объектов для отрисовки, именно поэтому я надеюсь, что сетка должна справиться с моей маленькой задачей.
Можно и у меня их разметить объект без излишней детализации, правда я еще так не делал и я не совсем уверен, что разбиение на карту instances с одним единственным объектом, который совпадает с зеленой маской, по которой сейчас идет обучение, чем-то поможет. Ну и время обучения там с их ресурсами было большое, побольше чем у меня- далеко не день. И аугментацию я уже прилепил к p2pHD, очень не хочется опять ее запиливать на другом коде.
В голову лезет всякий бред типа - выходную картинку с размытыми контурами еще раз загнать как A и прогнать AtoB в этой же сети.
Я также пытался изменять архитектуру сети, чтобы увеличить поле зрения сетки- ну собственно увеличивал количество слоев, но там упирался в потолок объема памяти, а изменения кода вручную выдавали совсем нерабочие результаты.
Собственно главные вопросы- куда копать, что делать разумнее всего сейчас? Менять параметры, и если да, то какие? Или просто ждать обучения? Или прыгнуть на другие архитектуры или с девятиэтажкиили запиливать свою сетку с рандомом и аугментацией?
А, и еще вопросик- почему гамма так плохо передается?- Это похоже на "болезнь" p2p алгоритма- на всех картинках всех имплементаций все детали тоже меняют цвет слегка. Не особо важно, но может что-то можно сделать.
Ну и о хорошем- я для своей выборки научился массово а автоматическом режиме выравнивать изображения с помощью фотошопа и двух скриптов на питоне, даже те что первоначально не совпадали на несколько пикселей или больше и были выбракованы.
О двач, дай советов мудрых, спасибо.
Я не понимаю что ты залил зелёным. Там реально купальники были? Что ты требуешь от сети? Где обучающая выборка было->стало? Я так понимаю, нужно брать все известные пары с данбуру, где есть альтернативные варианты одного и того же изображения: с купальником и без. А на чем у тебя обучается?
да, всё так, пары с данбуры и еще много откуда. Я сделал между картинками разницу и залепил ее сверху как маску, чтобы сетке не нужно было сначала учиться отделять купальники от всего остального, чтобы ей было проще лол - зеленый- значит генерируем, остальное- не трогаем. Это у меня такое примитивное понимание процесса, я могу быть неправ.
Оригиналы есть тоже, и результат близок к тому, что на картинках, если использовать их как A, но время обучения дольше.
Спасибо.
Пистон 3.7, торч 1.4
Использую модель с того гайда с применением торчтекста:
https://mlexplained.com/2018/02/08/a-comprehensive-tutorial-to-torchtext/
Данные - набор текстов и столбец с метками (для обучения/валидации). Стоит задача классификации, решается через lstm.
Обучение запускается и на разных этапах выдаёт ошибку:
invalid literal for int() with base 10: 'target'
Один раз модель почти обучилась, на на 97% опять ошибка.
Алсо, данные чистятся, потом записываются в csv, потом обпыть читаются неэффективно, но альтернативу уже нашёл
> потом записываются в csv
Открой файл, посмотри первую строку. Почти уверен, что там заголовок, из-за которого происходит твоё падение
Смысл такой: твой код пытается распарсить строку в число. При этом этой строй является строка "target". Думай откуда у тебя в данных иногда берётся строка "target". Похоже на то, что ты так назвал колонку, и код после пересохранения пытается скушать файл, в котором первым значением идёт название колонки "target".
У тебя есть возможность переименовать название колонки? "Tar123" "Tartar" или как-то так. И посмотреть что получится
Всё равно такая же ошибка, даже с переименованной колонкой.
>>62259
В общем, заработало после применения вот этого костыля
https://stackoverflow.com/questions/52602071/dataframe-as-datasource-in-torchtext
https://ksopyla.com/pytorch/torchtext-pandas-dataframe-dataset/
позволяющего использовать данные напрямую их датафрейма.
>Что там по NLP русского языка? Есть нормальные опенсорс библиотеки/проекты для обработки великого и могучего?
Нет
Fasttext. Года три назад они выкладывали эмбеддинги педивикии на сотне с чем-то языков.
Эх, походу никто и не поможет.
Иван Иваныч, пользуйтесь батч-нормализацией и не выёбывайтесь.
после применения лог_софтмакса у меня на выходе идёт что-то вроде:
[-0.3487],
[ 0.1044],
[ 0.3373],
[ 0.4418],
[-0.4624],
[-0.7099],
[-1.0271],
[ 1.2117],
[-0.2048],
[ 0.5719],
[-0.2808],
[ 0.3968],
[-1.2455],
[-0.4551],
[ 0.6752],
[ 0.4323],
[ 0.1261],
[ 1.5565],
[ 0.6862],
[-0.1057],
[ 1.1326],
[ 0.9586],
[ 0.8489],
[-0.5446],
[-0.5061],
Как мне это к двум классам привести?
после применения лог_софтмакса у меня на выходе идёт что-то вроде:
[-0.3487],
[ 0.1044],
[ 0.3373],
[ 0.4418],
[-0.4624],
[-0.7099],
[-1.0271],
[ 1.2117],
[-0.2048],
[ 0.5719],
[-0.2808],
[ 0.3968],
[-1.2455],
[-0.4551],
[ 0.6752],
[ 0.4323],
[ 0.1261],
[ 1.5565],
[ 0.6862],
[-0.1057],
[ 1.1326],
[ 0.9586],
[ 0.8489],
[-0.5446],
[-0.5061],
Как мне это к двум классам привести?
Так, спасибо.
У меня обучается батчами, соответсвенно каждый батч на выход даёт тензор.
Я правильно понимаю, что для начала ти тенщоры надо обхёжинить в один, а потом как-то перейти к классам, коих 2?
Значит у тебя для каждого примера в батче работает правило "меньше 0 - один класс, больше 0 - другой"
Ладно хуйню написал релу только для хайденов, сигмоиду/софтмакс для аутпута без разницы.
Так, анон, поясни вот это https://mlexplained.com/2018/02/08/a-comprehensive-tutorial-to-torchtext/
Почему сигмоида используется после использования модели?
И почему если её использовать в модели последним слоем то получается какая-то хрень в -10 степени?
Экспонента численно крайне хуевая функция, ковид подтвердит. Чуть что и сразу взрывается, вызывая погрешности в числах с плавающей точкой. Поэтому там где возможно лучше ее не использовать. Вот они и не используют, а добавляют уже после тренировки.
Естественно при этом нужно пофиксить датасет, поменяв лейблы с вероятностных 0 и 1 на что там нужно.
Спасибо.
>Вот они и не используют, а добавляют уже после тренировки.
А какие-то есть альтернативы?
>поменяв лейблы с вероятностных 0 и 1 на что там нужно.
Там как раз и было 1 и 0.
Я так понимаю, полученный тензор/numpy массив просто условием прогнать "0 if <0.5 else 1 "?
Или есть готовые решения?
> Почему сигмоида используется после использования модели?
Потому что по ссылке мультилейбл. То есть у тебя одновременно может быть несколько лейблов. Если надо было бы выбрать только один, то нужен был бы софтмакс.
А сигмоида переводит в (0, 1) как вероятность и дальше ты можешь по какого-нибудь порогу отсечь. Хотя тут видимо такой формат у сабмита кэггла
> И почему если её использовать в модели последним слоем то получается какая-то хрень в -10 степени?
Это 0
>Это 0
При использовании F.sigmoid(x) все нули получаются.
В приниципе, задача решена.
Но я некоторые детали не до конца понял.
Если аноны будут снисходительны пояснить некоторые детали, буду признателен.
не тот кто задал вопрос мелко плаваешь, в дипломную это надо.
котаны, а если у тебя две видеокарты, то для того чтобы они работали вместе для обучения (не для игорь- там вроде нужно), их нужно еще как-то соединять между собой или можно просто воткнуть в pci?
Тензорфлоу обнаружит обе, но по умолчанию работает только на одном устройстве. Придётся либо вручную распределять модель по картам, либо использовать что-то вроде https://github.com/horovod/horovod
пока ты не убежал, а если я использую код, в котором уже поддерживается несколько гпу, например тот же нвидия pix2pixHD?
Удаление тэгов, смайлов, прочего мусора
Лемматизация/стемминг
Удаление стоп-слов
Удаления знаков препинания
Как-то так? Или что-то переставить местами?
Как думаете может ли обычны человек, с бэкграундом в IT опыт работы на питоне за год вкатиться в машинное обучение и найти работу? А сколько вы вкатывались?
Скорее нет, чем да. Если не было пятёрок по математике в универе, если нету многолетнего опыта дрочения нейроночек, то работу не найдёшь.
Зашел вспомнить молодость в /pr, наткнулся на тред и где-то в душе екнуло - начал узнавать ссылки. Пошел в архивач, доскролил до четвертого треда и узрел свои же слова. Шапка, конечно, пиздец деградировала, я ведь старался смищнее и грамотнее ее сделать, где-то целый день ее составлял. Хотя ссылки новые добавились.
Но хуле мне критиковать, я по-моему только 1 или 2 раза тред перекатил. Извините, какое-то нездоровое брюзжание.
Как вы тут, ESL все прочитали? Я из Яндекса укатил в Долину, весной вернулся к родителям в отпуск и попал под отмену рейсов, теперь, как и 10 лет назад капчую из отчего дома.
Задавайте свои ответы. Сейчас самими машинками меньше занимаюсь и больше инфраструктурой под DL и все остальное в моей компании.
> больше инфраструктурой под DL
В смысле, бегаешь сгоревшие диски и видекарты заменять в подвале?охуенно вырос.
Нет, в смысле рулю программной платформой для аналитиков и датасаентистов в нашем ДЦ.
>бегаешь сгоревшие диски и видекарты заменять в подвале
Лел, их вендор вообще обслуживает afaik.
>>65237, да ладно, может он датасеты чистит вилкой. я бы хоть куда в айти вкотился, только вот кому я нужен с дипломом экономиста без опыта, кроме кручения сисек.
Хз вообще, я не гуру, просто столкнулся с этим.
Составь список меток вручную.
Много знакомых без опыта работы и знаний математики вкатились. Пощупали пару туториалов и устроились джунами. Зависит от того, на какую зп рассчитываешь. Если до 80к, то легко.
>>65149
В Яндекс может быть действительно такие критерии. Хотя туда скорее надо диплом шада, чем пятерки по математике.
В твоем случае надо
> AutoML-Zero has already discovered neural networks, back-propagation, data-augmentation etc. from scratch within 12 hrs on a single CPU. It can adapt to lack of training data, required training speed and tasks.
https://bigthink.com/surprising-science/automl?rebelltitem=2#rebelltitem2
Ссылочка на РТ архив: https://arxiv.org/abs/2003.03384
Неа, в Google не пошел (да меня туда и не звали). Сначала в Dropbox, а сейчас в Verily (не мытьем, так катанием, лол). Котики над платформой по обработке генетических и медицинских данных колдуют, я им помогаю не отвлекаться на всякую ерунду типа как организовать поставку данных, как работать на проде и не положить весь ДЦ в полку, как лучше что-то посчитать, etc. Короче всякие штуки, специфичные именно для нашей области, все остальное досталось от Гугла, от организационных до разработческих практик и общей инфраструктуры.
На самом деле по теме треда мне особо-то и нечего рассказать, со времен первого треда я больше в дизайн систем и в коммуникацию ушел. Просто прикольно, что анон до сих пор поддерживает эту цепочку.
>Шапка, конечно, пиздец деградировала, я ведь старался смищнее и грамотнее ее сделать
Шапка с советами ESL и прочей поеботой была говном, если бы ты это понимал, занимался бы ресерчем, а не этой тухлятиной, которую ты делаешь
Обращайся
надеюсь не опоздал
Гвидо Ван Россум заявил о намерениях возродить снова Украинскую империю.
алсо, не ссы, этого более чем достаточно. я в своей шараге дс2 писал сайт на джанге на диплом бакалавриата, бывший дноклассник нейронку тоже писал на диплом, но уже в дс1 вузике. и все прокатывало у него. так что не ссы
А зачем обычному человеку с бэкграундом в IT вкатываться в нейронки? Деньги - есть пути попроще, уважение в обществе - не будет, нравятся циферки-процентики-формулки - можно пойти в датааналитеки, хочешь обучать AI- датасаенс
А кому нужны нейронки?
> домашку
Да за это нобелевку за создание сильного искусственного интеллекта надо давать. Полный анализ русского предложение это ИИ-полная задача.
Вы видите копию треда, сохраненную 18 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.