用 Kotlin 进行深度学习:KotlinDL-alpha 简介

Read this post in other languages:
English, Русский

大家好!
今天我们想和大家分享一下 KotlinDL (v.0.1.0),的第一次预览,这是一个用 Kotlin 编写的高级深度学习框架,灵感来源于 Keras
它为在 JVM 环境中构建、训练和部署深度学习模型提供了简单的 API。 高层次的 API 和许多参数的合理默认值使得 KotlinDL 很容易上手。 您只需要几行 Kotlin 代码就可以创建和训练第一个简单的神经网络:

GPU 支持

训练深度学习模型很花费资源,而您可能考虑过通过在 GPU 上运行来加速这个过程。 使用KotlinDL可以轻松实现这一点!
只需一个额外的依赖,你就可以在 NVIDIA GPU 设备上运行上述代码而无需任何修改。

丰富的 API

KotlinDL 自带所有必要的 API,用于构建和训练前馈神经网络,包括卷积神经网络。 它为大多数超参数提供了合理的默认值,并提供了广泛的优化器、weight 初始值设定项、激活函数以及其他所有必要的杠杆,供您调整模型。
通过 KotlinDL,您可以保存生成的模型,并将其导入到您的 JVM 后端应用程序中进行推理。

Keras 模型导入

开箱即用,KotlinDL 提供了 API,用于构建、训练、保存深度学习模型,并加载模型运行推理。 在导入模型进行推理时,您可以使用用 KotlinDL 训练的模型,也可以导入用 Python 和 Keras(2.* 版本)训练的模型。

对于用 KotlinDL 或 Keras 训练的模型,KotlinDL 支持转移学习方法,允许您使用现有的预训练模型,并根据您的任务对其进行微调。

临时限制

在这个第一个 alpha 版本中,只有有限的几个图层可用。分别是: Input(), Flatten(), Dense(), Dropout(), Conv2D(), MaxPool2D(), 和 AvgPool2D()。 这个限制意味着目前并不是所有的 Keras 模型都被支持。 您可以导入并微调一个预先训练好的 VGG-16 或 VGG-19 模型,但不能导入 ResNet50 模型。 我们正在努力在即将发布的版本中为您带来更多的层次。

另一个暂时的限制是关于部署。 您可以在服务器端 JVM 环境中部署模型,然而,目前还不支持在 Android 设备上进行推理,但会在以后的版本中实现。

后台有什么?

KotlinDL 构建在 TensorFlow Java API 之上,TensorFlow Java API 正在被开源社区积极开发。

试试吧!

我们已经准备了一些教程来帮助您开始使用 KotlinDL:

欢迎通过 GitHub 问题, 分享您的反馈,创建您自己的 Pull Request,并加入Kotlin slack上的 #deeplearning 社区。

Discover more