正文
与神经网络模拟器玩一两个小时,你就可以获得对其的直观感受。
我们将从实现一个简单的神经网络开始,以了解TFlearn中的语法。从经典的101问题开始,也就是OR运算符。虽然神经网络更适合于其他类型的数据,但这是了解其工作原理的一个很好的问题。
所有的深度学习程序都遵循同样的核心逻辑:
-
首先加载库,然后加载数据并清洗。不管是照片,音频还是知觉数据,所有的输入都会被转化为数字。这些很长的数字列表就是我们神经网络的输入。
-
现在开始设计神经网络。选择你的神经网络层的类型和数量。
-
然后它会进入学习过程。
-
神经网络知晓输入和输出,然后自行寻找二者之间的关系。
最后会用训练好的模型中给到你一个预测值。
下面是这个神经网络的程序:
输出:
第一行
以“#”开头的行表示备注,一般用来解释代码
第二行
加载TFlearn库 通过这个语句我们可以使用谷歌Tensorflow的深度学习函数
第五行和第六行
将上述表中的数据存储在列表中
每个数字末尾的点会将整数映射到浮点数。它存储具有十进制值的数字,使计算更加精确。
第七行
初始化神经网络,并指定输入数据的维度或者说尺寸
所有的OR运算都是在一对数据中进行的,所以维度是2.
空值是默认值,表示批量的大小
第八行
输出层
激活函数将过程中的结果映射到输出层
在这个例子中,我们使用Sigmoid函数将其映射到(0,1)区间范围内
第十一行
应用回归
使用优化器选择合适的算法来最小化成本函数
学习率决定了神经网络的调整速度,而损失变量决定了如何计算误差。
第十二行
选择使用哪个神经网络
一般情况下也可以用来指定存储训练日志的位置
第十三行
训练你的神经网络和模型
选择你的输入数据(OR)以及实际的标签(Y_truth)
Epochs决定了你的神经网络运行数据的循环次数
如果你设置 snapshot=True,那么每次循环后都会进行模型验证
第十四到十八行
使用训练好的模型进行预测
在这个例子中,返回的是结果是1/True的概率
输出层:
第一个结果表示[0.]&[0.]组合为真的可能性为4%,以此类推。“Training step”显示了你训练了多少批。
在每一批中所有数据都将训练一次,类似于Epoch。如果数据相对内存较大,你需要停止分段训练。损失函数会计算每一次迭代的错误数量。
SGD指随机梯度下降法及最小化代价函数方法。
Iter指当前数据索引以及输入项的总和。
你可以在大多数TFlearn神经网络中找到上述逻辑和语法。学习这段代码最好的方法就是修改代码并产生一些错误。
损失曲线显示了每一次训练的错误量。
你可以通过Tensorboard来可视化每一次实验,并了解每一个参数是如何影响训练的。
这里有一些你可以运行的例子的建议。我推荐你花费几小时练习这些例子,以更好地适应运行环境以及TFlearn中的参数。
-
增加训练与迭代次数
-
尝试添加或改变文档中提到的每一个函数的参数