KotlinDL 项目介绍
KotlinDL 是一个用 Kotlin 编写的高级深度学习 API,受到 Keras 的启发。它的底层使用了 TensorFlow Java API 和 ONNX Runtime API,提供了简单的接口来进行深度学习模型的训练、现有 Keras 和 ONNX 模型的推理,以及利用迁移学习来调整预训练模型以适应特定任务。
这个项目的目标是让 JVM 和 Android 开发者更容易地进行深度学习的研究与应用,并简化模型在生产环境中的部署。
核心功能
KotlinDL 提供了一组模块化的组件,可以帮助开发者从头开始构建神经网络模型,或是导入已有的模型进行推理。一个典型的卷积神经网络模型 LeNet 可以在 KotlinDL 中这样定义:
private val lenet5Classic = Sequential.of(
...
// 网络定义代码
...
)
fun main() {
val (train, test) = mnist()
lenet5Classic.use {
...
// 模型训练与评估代码
...
}
}
库结构
KotlinDL 包含多个模块,每个模块承担特定的功能:
kotlin-deeplearning-api
提供 API 接口和类kotlin-deeplearning-impl
提供类实现和实用工具kotlin-deeplearning-onnx
支持 ONNX Runtime 推理kotlin-deeplearning-tensorflow
支持 TensorFlow 学习和推理kotlin-deeplearning-visualization
提供视觉化功能kotlin-deeplearning-dataset
提供数据集类
值得注意的是,kotlin-deeplearning-tensorflow
和 kotlin-deeplearning-dataset
模块仅适用于桌面 JVM,而其他模块也可用于 Android。
如何在项目中配置 KotlinDL
要在项目中使用 KotlinDL,首先需要确保在 repositories
中添加 mavenCentral
:
repositories {
mavenCentral()
}
接着在 build.gradle
文件中添加必要的依赖,例如:
dependencies {
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]'
}
对于 ONNX 模型的推理,可以加入:
dependencies {
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]'
}
完整的版本信息可以参考项目文档。
在 Jupyter Notebook 和 Android 上的使用
在 Jupyter Notebook 中,可以通过 Kotlin kernel 使用 KotlinDL,只需在笔记本中添加依赖:
@file:DependsOn("org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]")
在 Android 项目中,KotlinDL 支持 ONNX 模型推理。需要在 build.gradle
文件中添加:
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]'
版本兼容性
项目文档中提供了一张详细的兼容性表格,列出了 KotlinDL 版本、最低支持的 Java 版本、ONNX 运行时版本、TensorFlow 版本,以及 Android 的编译 SDK 版本之间的对应关系。
示例与教程
KotlinDL 提供了一系列的教程和示例,帮助开发者快速上手。这些教程涵盖了从创建第一个神经网络到迁移学习等多个主题。
支持 GPU
KotlinDL 支持在 GPU 上进行训练和推理。需要安装 CUDA 框架,并在项目中添加合适的依赖。
贡献与支持
任何对 KotlinDL 有兴趣的开发者都可以通过 GitHub 提交问题或请求新功能。此外,也可以加入 Kotlin Slack 的 #kotlindl
频道获取支持。
KotlinDL 是一个由 JetBrains 社区开展的开源项目,遵循 Apache 2.0 许可证。