ANNdotNET v1.0 已发布






4.94/5 (10投票s)
ANNdotNET v1.0 已发布
半年前,这篇文章宣布了新的开源项目 ANNdotNET,它是 GPdotNET v4 - 人工智能工具中的 ANN 部分。那天,我完成了关于机器学习和遗传编程的新书,同时也发布了新的 GPdotNET V5.0 遗传编程工具版本,移除了 ANN 和其他非 GP 相关模块。现在,我的第二个大型开源项目已实现了第一个稳定发布。
ANNdotNET(http://github.com/bhrnjica/anndotnet)是一个基于 .NET 平台的深度学习工具,它与 GPdotNET 的工作流程相似。这两个项目共享了几个模块,主要是数据准备和模型评估,因为所有这些工作都是相同的。
ANNdotNET 不仅仅是一个 GUI 工具,它还包含一个 CMD 工具,可以作为更大云解决方案的一部分。该项目中有几个值得在此提及的关键概念。
1. 机器学习配置 mlconfig 文件
ANNdotNET 基于所谓的机器学习配置文件,其中所有关于数据、训练和学习参数以及神经网络层的信息都存储在名为 mlconfig 的文件中。除了 mlconfig 文件,在开发 ml 解决方案的过程中还会生成几种其他文件类型。mlconfig 文件可以在云服务之间共享,以便准备和转换数据、训练、评估或导出 ml 模型。如果您想了解更多关于 ANNdotNET 中文件的信息,可以查看该项目的 wiki 页面。由于 mlconfig 文件独立于工具,因此可以使用 GUI 或 CMD 工具,或任何基于 anndotnet API 实现的自定义工具来执行它。
2. 机器学习项目浏览器
要开始使用 ANNdotNET 开发 ml 解决方案,您首先需要创建一个 annproject 文件,方法是选择应用程序命令中的“新建”选项。在 annproject 下,用户可以创建任意数量的 mlconfig 文件。annproject 和相关的 mlconfig 文件会显示在 ML 项目浏览器中,用户可以像管理普通列表项一样管理它们。
3. ANNdotNET MLEngine – 机器学习引擎
ANNdotNET 引入了 ANNdotNET 机器学习引擎 (MLEngine),它负责训练和评估 mlconfig 文件中定义的模型。ML 引擎依赖于 Microsoft Cognitive Toolkit (CNTK) 这个开源库,该库被证明是最好的深度学习开源库之一。通过应用程序的所有组件,ML 引擎暴露了 CNTK 的所有出色功能,例如,用于训练和评估的 GPU 支持,不同类型的学习器,并且还通过更多的评估函数(RMSE、MSE、分类准确率、决定系数等)、扩展的迷你批次源、训练器和评估模型来扩展 CNTK 的功能。
MLEngine 构建在 CNTK 和 .NET 之上,能够为任何云/本地 ML 解决方案提供后端组件。
4. 可视化神经网络设计器
ML 引擎还包含神经网络层的实现,这些层应该是一个非常类似于 Keras 和其他 Python 基于深度学习 API 中的层实现的、高级的 CNTK API。通过这个实现,ANNdotNET 实现了称为 ANNdotNET NNDesigner 的可视化神经网络设计器,它允许用户设计任何大小、任何类型层的神经网络配置。在第一个版本中,实现了以下层:
- 归一化层 – 在数值特征进入网络之前,对它们的数值进行归一化。更多信息可在此处找到。
- 全连接层 – 带有激活函数的经典神经网络层
- LSTM – 带前馈连接和自稳定选项的 LSTM 层
- 嵌入层 – 嵌入层
- Dropout 层 – Dropout 层
未来版本将添加更多层类型。有关可视化网络设计器的更多信息,请参阅之前的博客文章。
5. 数据转换
除了 ml 相关的内容,ANNdotNET 还实现了一组用于将原始数据集转换为 ml 就绪数据集的数据转换组件。用户无需担心复杂的 CNTK 文件格式、独热编码以及其他数据和变量转换,例如,处理缺失值、数据归一化等。数据转换从将原始数据文件加载到 ANNdotNET 开始,然后通过一组 GUI 相关选项,数据可以完全准备好作为 ml 就绪数据集。有一些简短的视频演示了如何快速将原始数据集转换为 ml 就绪数据集。
5. 模型评估、保存优秀模型和重新训练已训练模型
模型训练完成后,ANNdotNET 提供了一个基本的评估工具来评估已训练模型。MLEvaluator 包含一组基本选项,用于评估回归、二元或多类别分类模型。用户无需离开 ANNdotNET,即可通过针对模型和相关数据集(训练、验证和测试)执行一组统计测量来决定模型是否优秀。除了评估,ANNdotNET 还会在训练阶段提供即时评估,通过提供在训练阶段保存优秀模型的选项。这样,ANNdotNET 能够选择训练最佳的模型,无论迭代次数多少。未来将实现一套选择已保存模型集中最佳模型的不同策略。此外,任何先前训练过的模型都可以从最后一个检查点重新训练。这在各种场景下是一个重要的选项。例如,更改某些参数并继续训练。此外,此选项还允许在一个机器或环境中开始训练模型,然后在不同的机器或环境中继续训练。
摘要
ANNdotNET - 是一个用于 .NET 平台深度学习的开源项目。这是一个完整的数据准备、训练、评估和部署 ml 模型的 GUI 解决方案。ANNdotNET 引入了 ANNdotNET 机器学习引擎 (MLEngine
),它负责训练和评估 mlconfig 文件中定义的模型。MLEngine
依赖于 Microsoft Cognitive Toolkit (CNTK) 开源库,该库被证明是最好的深度学习开源库之一。通过应用程序的所有组件,MLEngine
暴露了 CNTK 的所有出色功能,例如,用于训练和评估的 GPU 支持,不同类型的学习器。MLEngine
还通过更多的评估函数(RMSE、MSE、分类准确率、决定系数等)、扩展的迷你批次源、训练器和评估模型来扩展 CNTK 的功能。
从 GUI 应用程序即可完成模型的创建、训练、评估和导出过程,无需了解支持的编程语言。
ANNdotNET 在几种场景下是理想的选择:
- 更多地关注使用经典的桌面方法进行网络开发和训练过程,而不是专注于编码
- 减少调试源代码的时间,更多地关注不同的配置和参数变体
- 对于不熟悉编程语言的工程师/用户来说是理想的选择
- 如果问题需要编码自定义模型或训练过程,ANNdotNET CMD 提供了高级 API 来实现此目的
- 使用 GUI 工具开发的所有 ml 配置都可以通过 CMD 工具处理,反之亦然
如果您喜欢这个项目,请在 GitHub 上给它点星:http://github.com/bhrnjica/anndotnet。如果您想在学术论文中使用它,请按照此链接中的说明进行引用:https://doi.org/10.5281/zenodo.1461722