Pull to refresh
55
0
Андрей Лукьяненко @Artgor

Data scientist @ Careem (Dubai)

Send message
Добрый вечер.

Для этого надо смотреть в сам код (строки 182, 183, 187, 188, 189): github.com/Erlemar/digit-draw-recognize/blob/master/functions.py#L182

cnn = CNN()
cnn.train(X, y)
		
response = self.save_weights_amazon('data-all_2_updated.chkp.meta', './tmp/data-
                                    all_2_updated.chkp')
response = self.save_weights_amazon('data-all_2_updated.chkp.index', './tmp/data-
                                    all_2_updated.chkp')
response = self.save_weights_amazon('data-all_2_updated.chkp.data-00000-of-00001', 
                                    './tmp/data-all_2_updated.chkp')


Что здесь происходит:
  1. Модель инициализируется и тренируется;
  2. В результате тренировки обновлённые веса сохраняются локально в папке tmp (на Heroku), это 3 отдельных файла (так работает tensorflow);
  3. А затем используется метод save_weights_amazon для заливки обновлённых файлов на Amazon;


Возможно есть более элегантные способы делать это, но у меня получилось вот так.
Доброе утро.

Действительно, упустил этот момент. В данном случае y — все лейблы для исходных данных. Вообще говоря, это нужно только для того, чтобы OneHotEncoder превращал вектор с 10 классами в матрицу с 10 столбцами. Можно использовать любой вектор из имеющихся (y_train, y_val или какой-то другой), главное, чтобы в нём были все 10 классов.
Эти числа я взял из оригинальной статьи ;) " The method in this paper uses 500 GPUs across 4 days resulting in 2,000 GPU-hours."
Конечно. Я имею ввиду, что использовать AutoML для подбора моделей — как в статье — пока неоправданно для большинства компаний.
Очень важный момент — в статьте сказано, что они использовали 500 GPU (NVidia P100) 4 дня, то есть 2000 GPU-часов. Я бы сказал, что это пока слишком дорого для нормального использования, если не считать Google и других огромных компаний.
Хороший вопрос, наверное, стоило его осветить. Это делается в 2 этапа с помощью библиотеки boto3: вначале с помощью функции list_objects получаем список объектов, потом в цикле их скачиваем. Важно, что Амазон ограничивает «размеры» запросов, так что взять больше 1000 объектов за раз не получился. Есть 2 варианта для скачивания больше 1000 объектов: либо указывать параметры запроса и с помощью этого выбирать объекты (не пробовал), либо после каждого скачивания перемещать/удалять объекты в корзине.

Мой код для скачивания картинок выглядит так:
s3 = boto3.client('s3', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
for obj in s3.list_objects(Bucket=BUCKET)['Contents']:
    filename = obj['Key']
    if 'digit' in filename:
        # The local directory must exist.
        localfilename = os.path.join('my_images/', filename)
        s3.download_file(BUCKET, filename, localfilename)
    else:
        pass
Если это инструмент для вхождения в область — это хорошо :)
Возможность настраивать параметры и использовать собственный код — удобная вещь. Учитывая это, действительно, хорошо для начала.

Кстати говоря, если есть желание попробовать машинное обучение на практике с использованием программирования, то Kernels на Kaggle — хорошая идея. Ничего не надо устанавливать и большое количество рабочих примеров, которые можно поизменять.
У меня опыт машинного обучения не слишком большой — начал изучать его в августе-сентябре 2016 и недавно нашёл работу (до этого программирование практически не знал). Я могу ошибаться, но считаю, что начинать знакомство с машинным обучением с готовых инструментов — не самая хорошая идея. Многие алгоритмы регрессии и классификации радикально отличаются друг от друга и стоит понимать их особенности.

Кроме того, данные обычно нужно обрабатывать.

Ну и к тому же, если нужно что-то кроме простой классификации/регрессии и нужно построить рекомендательные системы, обработку естественного языка или что-то ещё или использовать нейронные сети, то явно придётся программировать.
А мне всё же Fidget Cube нравится :) Жду доставку двух штук в марте. Кстати, доставка не дорогая, если пользоваться услугами логистических операторов.
Тоже волнует это. Маршрутки отменяют одну за другой, остаются автобусы. На остановках скапливается большое количество людей, особенно вечером в будние дни.
Замечал подобное, поэтому задаю вопросы на reddit. Там дают вполне неплохие ответы.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Data Scientist
Lead
From 500,000 ₽
Python
Machine learning
Deep Learning
Natural language processing
Neural networks