Size: a a a

Data Science Kazakhstan (DS/ML kz)

2020 April 26

D

Darkhan in Data Science Kazakhstan (DS/ML kz)
А в плот аргумент scientific=F можно передать?
источник

RU

Rustam Uzb in Data Science Kazakhstan (DS/ML kz)
Stepan
Всем привет! Подскажите, пожалуйста. Вопрос про использование предобученных сетей, заморозку слоев и про обучение только части сети.

В задаче нужно находить точки на изображении. Использую resnet50 предобученную на ImageNet. Заменяю выход последнего слоя с 1000 классов на количество точек*2 (х и у координата)

import torchvision.models as models
...
model = models.resnet50(pretrained=True, )
model.fc = nn.Linear(model.fc.in_features, 2 * NUM_PTS, bias=True)

Для начала хотел попробовать обучить только последний fc слой

# freeze all layers
for param in model.parameters():
param.requires_grad = False

# train only head
model.fc.weight.requires_grad = True
model.fc.bias.requires_grad = True

Я рассчитывал, что обучение у такой сети будет гораздо быстрей, чем когда все слои разморожены. Но на мое удивление скорость осталась практически той же самой на эпоху 20 мин vs 17 минут

Вопрос. Правильно ли я заморозил слои? Разве сеть не должна обучаться быстрей, чем если бы все слои были разморожены?
грубо говоря, резнет_50 (или другая обученная умными людьми с большими компьютерами модель) состоит из 2 частей: 1. конволюшнл 2. классификатор.  конволюшнл часть этой модели уже натренирована определять разные фичерсы на картинке ( углы, линии, и.т.д) , а классификатор уже по этим фичерсам уже находит объекты.  учитывая что, любой объект который можно нарисовать на картинке состоит из углов, линий и прочих фичерсов, и смысла тренировать конволюшнл часть нет ( темболее это вычислительно дорого) так как всеравно мы получим эти фичерсы снова, достачно просто сделать  собсввенный классификатор и добавить его к выходу conv  части предварительно натренированной модели.   Что я так понимаю и нужно сделать в Вашем случае. я хз, что за точка , допустим нужно найти на картинках шар для боулинга, делайте собственный датасет из картинок шаров и тренируйте только "последний слой" как Вы его называете.    ...... насчет постепенного обучение методом поочередного подключения слоев, мне кажется так работать не будет потому что это математический не правильно.  Обудение у сетей ведется за счет вычесления (частная производная) вклада в ошибку каждого нейрона в сети,  тоесть, если опять грубо, один нейрон это одна фукнция, то сеть это матрешка этих функций. таким образом ( на основании правила дифиренцировании сложной функции)  предыдущий слой модели оказывает влияние на велечину производной (влияние на ошибку) следующих слоев. таким образом каждый раз когда Вы активируете новый слой вы просто говорите вот вам еще один слой начинайте (еще более сложный) бакпроб занова
источник

D

Duman in Data Science Kazakhstan (DS/ML kz)
Darkhan
А в плот аргумент scientific=F можно передать?
ни plot, ни text не принимает их, выдает WarningMessage
источник

D

Darkhan in Data Science Kazakhstan (DS/ML kz)
Duman
ни plot, ни text не принимает их, выдает WarningMessage
A plot digits принимает?
источник

D

Duman in Data Science Kazakhstan (DS/ML kz)
plot тоже не принимает digits.

Я сейчас попробовал options(digits=8), и у меня числа под каждым variable показывает нормально, но верхние значения decision split-a так и остались в scientific notation
источник

D

Darkhan in Data Science Kazakhstan (DS/ML kz)
Duman
plot тоже не принимает digits.

Я сейчас попробовал options(digits=8), и у меня числа под каждым variable показывает нормально, но верхние значения decision split-a так и остались в scientific notation
Если это не rpart.plot, то мб стоит его попробовать
Попробовать диджитс отрицательный
А так хз что-то
источник

D

Duman in Data Science Kazakhstan (DS/ML kz)
о, сработало! Все это время использовал просто plot вместо rpart.plot🤦‍♂️

Рахмет!
источник

MA

Miras Amir in Data Science Kazakhstan (DS/ML kz)
Rustam Uzb
грубо говоря, резнет_50 (или другая обученная умными людьми с большими компьютерами модель) состоит из 2 частей: 1. конволюшнл 2. классификатор.  конволюшнл часть этой модели уже натренирована определять разные фичерсы на картинке ( углы, линии, и.т.д) , а классификатор уже по этим фичерсам уже находит объекты.  учитывая что, любой объект который можно нарисовать на картинке состоит из углов, линий и прочих фичерсов, и смысла тренировать конволюшнл часть нет ( темболее это вычислительно дорого) так как всеравно мы получим эти фичерсы снова, достачно просто сделать  собсввенный классификатор и добавить его к выходу conv  части предварительно натренированной модели.   Что я так понимаю и нужно сделать в Вашем случае. я хз, что за точка , допустим нужно найти на картинках шар для боулинга, делайте собственный датасет из картинок шаров и тренируйте только "последний слой" как Вы его называете.    ...... насчет постепенного обучение методом поочередного подключения слоев, мне кажется так работать не будет потому что это математический не правильно.  Обудение у сетей ведется за счет вычесления (частная производная) вклада в ошибку каждого нейрона в сети,  тоесть, если опять грубо, один нейрон это одна фукнция, то сеть это матрешка этих функций. таким образом ( на основании правила дифиренцировании сложной функции)  предыдущий слой модели оказывает влияние на велечину производной (влияние на ошибку) следующих слоев. таким образом каждый раз когда Вы активируете новый слой вы просто говорите вот вам еще один слой начинайте (еще более сложный) бакпроб занова
Обучение всех слоев на практике почти всегда лучше чем обучение последнего fc слоя (может быть хуже, например, если очень мало данных).
Поэтому смысл есть всегда.
источник

RU

Rustam Uzb in Data Science Kazakhstan (DS/ML kz)
Miras Amir
Обучение всех слоев на практике почти всегда лучше чем обучение последнего fc слоя (может быть хуже, например, если очень мало данных).
Поэтому смысл есть всегда.
Да но, всех сразу а не по кусочкам
источник

MA

Miras Amir in Data Science Kazakhstan (DS/ML kz)
Rustam Uzb
Да но, всех сразу а не по кусочкам
По кусочкам тоже учат, например  ulmfit так учили https://arxiv.org/abs/1801.06146.
источник

S

Sneddy in Data Science Kazakhstan (DS/ML kz)
источник

RA

Renat Alimbekov in Data Science Kazakhstan (DS/ML kz)
Не по теме чата
источник

Е

Елес in Data Science Kazakhstan (DS/ML kz)
да
источник

IS

Iska Shaikh in Data Science Kazakhstan (DS/ML kz)
Всем добрый вечер, как вычислить метрики, например у меня есть модель которая распознает кошек и собак, и в одной картинке может быть собака и кот
источник

Y

Yerassyl in Data Science Kazakhstan (DS/ML kz)
Iska Shaikh
Всем добрый вечер, как вычислить метрики, например у меня есть модель которая распознает кошек и собак, и в одной картинке может быть собака и кот
Multi label classification
источник

IS

Iska Shaikh in Data Science Kazakhstan (DS/ML kz)
😊спасибо
источник

Y

Yerassyl in Data Science Kazakhstan (DS/ML kz)
Iska Shaikh
😊спасибо
источник

IS

Iska Shaikh in Data Science Kazakhstan (DS/ML kz)
оказывается не под мою проблему
источник

S

Sunbeam✨ in Data Science Kazakhstan (DS/ML kz)
всем привет, вы не знаете, может где-то сохраняли или читали, есть ли опен-сорсный алгоритм, который определяет присутствует ли буллинг в тексте или нет? нужен именно готовый код с параметрами)
источник

Z

Z in Data Science Kazakhstan (DS/ML kz)
Sunbeam✨
всем привет, вы не знаете, может где-то сохраняли или читали, есть ли опен-сорсный алгоритм, который определяет присутствует ли буллинг в тексте или нет? нужен именно готовый код с параметрами)
источник