Microsoft Cognitive Toolkit 简明教程
CNTK - Creating First Neural Network
本章将详细介绍在 CNTK 中创建神经网络。
Build the network structure
为了将 CNTK 概念应用到构建我们第一个的神经网络,我们准备使用神经网络根据花萼宽度和长度以及花瓣宽度和长度的物理属性对鸢尾科花卉的种类进行分类。我们将使用的数据集是描述不同品种鸢尾科花的物理属性的鸢尾数据集 -
-
Sepal length
-
Sepal width
-
Petal length
-
Petal width
-
类别即鸢尾玫瑰或鸢尾杂色花或鸢尾维吉尼亚变种
此处,我们将构建一种称为前馈神经网络常规神经网络。让我们来看看构建神经网络结构的实现步骤 -
Step 1 - 首先,我们将从 CNTK 库导入必要组件,如层类型、激活函数和一个允许我们在神经网络中定义输入变量的函数。
from cntk import default_options, input_variable
from cntk.layers import Dense, Sequential
from cntk.ops import log_softmax, relu
Step 2 - 接下来,我们将使用顺序函数创建模型。创建后,我们将根据需要将其输入到层中。在此,我们准备在神经网络中创建两个不同层;一层有 4 个神经元,另一层有 3 个神经元。
model = Sequential([Dense(4, activation=relu), Dense(3, activation=log_sogtmax)])
Step 3 - 最后,为了编译神经网络,我们将把网络绑定到输入变量。它将有一个包含 4 个神经元的输入层和一个包含 3 个神经元的输出层。
feature= input_variable(4)
z = model(feature)
Applying an activation function
有很多激活函数可以选用,而选择正确的激活函数肯定将对我们深度学习模型的执行效果产生重要影响。
Picking a loss function
首先,我们获得了神经网络模型的结构,我们必须对其进行优化。对于优化,我们需要一个 loss function 。与 activation functions 不同,我们的选择损失函数非常少。然而,选择损失函数将取决于我们的模型解决的问题类型。
例如,在分类问题中,我们应该使用能够衡量预测类和实际类之间的差别的损失函数。
Metrics
有了我们神经网络模型的结构和要应用的损失函数,我们已经具备了制作深度学习模型优化配方所需的所有要素。但是,在深入研究之前,我们应该了解指标。
cntk.metrics
CNTK有一个名为 cntk.metrics 的包,我们可以从中导入我们准备使用的指标。当我们建立分类模型时,我们将使用 classification_error ,它将产生0到1之间的数字。0到1之间的数字表示正确预测样本的百分比−
首先,我们需要从 cntk.metrics 包中导入指标−
from cntk.metrics import classification_error
error_rate = classification_error(z, label)
以上函数实际上需要神经网络的输出和预期标签作为输入。