[Программирование, Kotlin] Глубокое обучение на Kotlin: альфа-версия KotlinDL (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Перевод материала подготовлен в рамках онлайн-курса "Kotlin Backend Developer".
Приглашаем также всех желающих на бесплатный демо-урок «Объектно-ориентированное программирование в Kotlin». Цели занятия:
- знать элементы объектной модели Kotlin;
- создавать различные классы и объекты;
- выполнять наследование и делегирование;
- пользоваться геттерами и сеттерами.
Привет, друзья! Сегодня мы расскажем о первой предварительной версии KotlinDL (v.0.1.0) — высокоуровневого фреймворка для глубокого обучения, похожего на Keras, но написанного на Kotlin. В нем есть простые API для создания, тренировки и развертывания моделей глубокого обучения в среде JVM. Высокоуровневые API и точно настроенные параметры позволяют быстро приступить к работе с KotlinDL. Для создания и обучения своей первой нейронной сети вам достаточно написать всего несколько строк на Kotlin:
private val model = Sequential.of(
Input(28, 28, 1),
Flatten(),
Dense(300),
Dense(100),
Dense(10)
)
fun main() {
val (train, test) = Dataset.createTrainAndTestDatasets(
trainFeaturesPath = "datasets/mnist/train-images-idx3-ubyte.gz",
trainLabelsPath = "datasets/mnist/train-labels-idx1-ubyte.gz",
testFeaturesPath = "datasets/mnist/t10k-images-idx3-ubyte.gz",
testLabelsPath = "datasets/mnist/t10k-labels-idx1-ubyte.gz",
numClasses = 10,
::extractImages,
::extractLabels
)
val (newTrain, validation) = train.split(splitRatio = 0.95)
model.use {
it.compile(
optimizer = Adam(),
loss = Losses.SOFT_MAX_CROSS_ENTROPY_WITH_LOGITS,
metric = Metrics.ACCURACY
)
it.summary()
it.fit(
dataset = newTrain,
epochs = 10,
batchSize = 100,
verbose = false
)
val accuracy = it.evaluate(
dataset = validation,
batchSize = 100
).metrics[Metrics.ACCURACY]
println("Accuracy: $accuracy")
it.save(File("src/model/my_model"))
}
}
Поддержка GPUТренировка моделей — ресурсоемкая задача. Использование GPU может значительно ускорить этот процесс. Здесь на помощь придет KotlinDL! Для запуска кода на устройстве NVIDIA нужно добавить всего одну зависимость.Широкие возможности APIВ KotlinDL есть все необходимые API для создания и тренировки нейронных сетей прямого распространения, включая сверточные сети. В нем по умолчанию установлены разумные значения для большинства гиперпараметров. Фреймворк предлагает широкий выбор оптимизаторов, инициализаторов веса, функций активации и прочих возможностей для тонкой настройки модели. Вы можете сохранить полученную модель и импортировать ее в бэкенд-приложение JVM.Импорт моделей, обученных на KerasВстроенные в KotlinDL API позволяют создавать, тренировать и сохранять модели глубокого обучения и использовать их для работы с новыми данными. Можно импортировать и использовать модель, обученную с помощью KotlinDL или Keras версии 2.* на языке Python.И для тех и для других моделей доступен метод трансферного обучения: просто загрузите уже имеющуюся обученную модель и подгоните ее под свою задачу.Временные ограниченияВ текущей альфа-версии доступно только несколько слоев: Input(), Flatten(), Dense(), Dropout(), Conv2D(), MaxPool2D() и AvgPool2D(). Это означает, что пока поддерживаются не все модели, обученные с помощью Keras. Можно импортировать и настроить обученные модели VGG-16 или VGG-19, а вот модель ResNet50, например, загрузить не получится. В следующих релизах появятся новые слои.Еще одно временное ограничение связано с развертыванием. Вы можете развернуть модель в серверной части JVM-среды, однако поддержка устройств Android появится только в следующих версиях.Что под капотом?KotlinDL использует TensorFlow Java API, который активно развивается сообществом разработчиков открытого ПО.Попробуйте сами!Мы подготовили несколько статей (на английском языке), которые помогут вам начать работу с KotlinDL:
- Краткое руководство
- Создание первой нейронной сети на KotlinDL
- Обучение модели
- Использование модели для работы с новыми данными
- Импорт модели, обученной с помощью Keras
- Трансферное обучение
Будем рады получить ваши отзывы и пул-реквесты в GitHub Issues. Присоединяйтесь к каналу #deeplearning в Slack-сообществе Kotlin.
Узнать подробнее о курсе "Kotlin Backend Developer"Смотреть вебинар «Объектно-ориентированное программирование в Kotlin»
===========
Источник:
habr.com
===========
===========
Автор оригинала: Maria Khalusova
===========Похожие новости:
- [Тестирование веб-сервисов] Хрустальный шар опытного тестировщика (перевод)
- [Тестирование IT-систем, Python, Программирование, Машинное обучение] PyTest для машинного обучения — простой учебник на основе примеров (перевод)
- [Программирование, Алгоритмы, Учебный процесс в IT, Карьера в IT-индустрии] Вебинар от Яндекс.Практикума «Открытое алгоритмическое собеседование»: 12 мая в 19.30
- [Программирование, C++, Qt, Геоинформационные сервисы] Создаём плагин Qt GeoServices на примере ОС Аврора, OpenStreetMap и Sight Safari
- [Oracle, Программирование, Совершенный код, IT-стандарты] Часть 2. Идентификация событий происходящих в Oracle PL/SQL
- [Python, Программирование, Умный дом, Интернет вещей] Простой Telegram-бот для получения информации через MQTT
- [Программирование, .NET, Visual Studio, Отладка] Почему в Visual Studio стек вызовов асинхронного кода иногда перевёрнут? (перевод)
- [Программирование, C] Почему стоит начать изучение программирования с языка C (перевод)
- [Python, Программирование, Микросервисы] Как превратить скрипт на Python в «настоящую» программу при помощи Docker (перевод)
- [JavaScript, Промышленное программирование, TypeScript] Продвинутые дженерики в TypeScript. Доклад Яндекса
Теги для поиска: #_programmirovanie (Программирование), #_kotlin, #_kotlin, #_oop (ооп), #_programmirovanie (программирование), #_blog_kompanii_otus (
Блог компании OTUS
), #_programmirovanie (
Программирование
), #_kotlin
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:28
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Перевод материала подготовлен в рамках онлайн-курса "Kotlin Backend Developer".
Приглашаем также всех желающих на бесплатный демо-урок «Объектно-ориентированное программирование в Kotlin». Цели занятия: - знать элементы объектной модели Kotlin; - создавать различные классы и объекты; - выполнять наследование и делегирование; - пользоваться геттерами и сеттерами. private val model = Sequential.of(
Input(28, 28, 1), Flatten(), Dense(300), Dense(100), Dense(10) ) fun main() { val (train, test) = Dataset.createTrainAndTestDatasets( trainFeaturesPath = "datasets/mnist/train-images-idx3-ubyte.gz", trainLabelsPath = "datasets/mnist/train-labels-idx1-ubyte.gz", testFeaturesPath = "datasets/mnist/t10k-images-idx3-ubyte.gz", testLabelsPath = "datasets/mnist/t10k-labels-idx1-ubyte.gz", numClasses = 10, ::extractImages, ::extractLabels ) val (newTrain, validation) = train.split(splitRatio = 0.95) model.use { it.compile( optimizer = Adam(), loss = Losses.SOFT_MAX_CROSS_ENTROPY_WITH_LOGITS, metric = Metrics.ACCURACY ) it.summary() it.fit( dataset = newTrain, epochs = 10, batchSize = 100, verbose = false ) val accuracy = it.evaluate( dataset = validation, batchSize = 100 ).metrics[Metrics.ACCURACY] println("Accuracy: $accuracy") it.save(File("src/model/my_model")) } }
Узнать подробнее о курсе "Kotlin Backend Developer"Смотреть вебинар «Объектно-ориентированное программирование в Kotlin»
=========== Источник: habr.com =========== =========== Автор оригинала: Maria Khalusova ===========Похожие новости:
Блог компании OTUS ), #_programmirovanie ( Программирование ), #_kotlin |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:28
Часовой пояс: UTC + 5