是否可以访问在 Azure 机器学习服务或 Azure 机器学习工作室中训练的神经网络的内部表示形式?



我正在与数据科学家合作,他们希望深入了解和理解他们使用 Azure 机器学习工作室/服务中的可视化界面训练的神经网络模型。是否可以转储并检查神经网络模型的内部表示?有没有办法编写代码来访问经过训练的神经网络的节点和权重,以便将网络可视化为图结构?或者,如果 Azure 机器学习工作室/服务不支持此功能,我将不胜感激有关可能更适合此类分析的其他机器学习框架的建议。

我尝试过的事情:

  • 训练模型输出ILearnerDotNet (AML Studio)或模型(AML Service)。我寻找要拖到工作区中的项目,在那里我可以编写自定义代码,例如执行 Python 脚本。他们似乎接受数据集,但不接受ILearnerDotNet/Model作为输入。
  • 我无法找到有关ILearnerDotNet/Model接口的文档。
  • 选择"训练模型">
  • 输出可提供"另存为训练模型"选项。这将创建一个经过训练的模型对象,这将有助于我在其他地方引用训练的模型,但我没有找到使用它来获取其内部的方法。

我是 Azure 机器学习领域的新手,可以使用一些帮助来了解如何开始访问此数据。

引自 Azure ML 考试参考:

默认情况下,神经网络的架构仅限于单个 以 sigmoid 作为激活函数和 softmax 的隐藏层 最后一层。您可以在模型的属性中更改此设置, 打开隐藏层规范下拉列表,然后选择 自定义定义脚本。将出现一个文本框,您将在其中 能够插入 Net# 脚本。此脚本语言允许您 定义神经网络架构。

例如,如果要创建两层网络,则可以输入以下代码。

input Picture [28, 28];
hidden H1 [200] from Picture all;
hidden H2 [200] from H1 all;
output Result [10] softmax from H2 all;

但是,使用 Net# 您将面临某些限制,因为它不接受正则化(既不接受 L2 也不接受 dropout)。此外,没有 ReLU 激活 通常用于深度学习,因为它们在反向传播方面具有优势。您无法修改随机梯度下降 (SGD) 的批大小。除此之外,您不能使用其他优化算法。您可以将 SGD 与动量一起使用,但不能使用像 Adam 或 RMSprop 这样的其他人。不能定义递归或递归神经网络。

另一个很棒的工具是CNTK(认知工具包),它允许你定义计算图并创建完全可自定义的模型。 引用自文档

它是一个Microsoft开源深度学习工具包。像其他深 学习工具,CNTK是基于计算的构建 图形及其使用自动微分的优化。这 工具包经过高度优化并可高效扩展(从 CPU 到 GPU、 到多台计算机)。CNTK 也非常便携和灵活;你 可以将其与 Python、C# 或 C++ 等编程语言一起使用,但您 也可以使用称为BrainScript的模型描述语言。

最新更新