65.9K
CodeProject 正在变化。 阅读更多。
Home

ANNdotNET v1.0 已发布

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (10投票s)

2018年10月15日

CPOL

6分钟阅读

viewsIcon

12795

ANNdotNET v1.0 已发布

半年前,这篇文章宣布了新的开源项目 ANNdotNET,它是 GPdotNET v4 - 人工智能工具中的 ANN 部分。那天,我完成了关于机器学习和遗传编程的新书,同时也发布了新的 GPdotNET V5.0 遗传编程工具版本,移除了 ANN 和其他非 GP 相关模块。现在,我的第二个大型开源项目已实现了第一个稳定发布。

ANNdotNET(http://github.com/bhrnjica/anndotnet)是一个基于 .NET 平台的深度学习工具,它与 GPdotNET 的工作流程相似。这两个项目共享了几个模块,主要是数据准备和模型评估,因为所有这些工作都是相同的。

1263512/anndotnet_gpdotnet.png

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 项目浏览器中,用户可以像管理普通列表项一样管理它们。

1263512/mlproject_explorer.png

3. ANNdotNET MLEngine – 机器学习引擎

ANNdotNET 引入了 ANNdotNET 机器学习引擎 (MLEngine),它负责训练和评估 mlconfig 文件中定义的模型。ML 引擎依赖于 Microsoft Cognitive Toolkit (CNTK) 这个开源库,该库被证明是最好的深度学习开源库之一。通过应用程序的所有组件,ML 引擎暴露了 CNTK 的所有出色功能,例如,用于训练和评估的 GPU 支持,不同类型的学习器,并且还通过更多的评估函数(RMSE、MSE、分类准确率、决定系数等)、扩展的迷你批次源、训练器和评估模型来扩展 CNTK 的功能。

anndotnet_mlengine

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

© . All rights reserved.