ReLU 代表单调线性单元(Rectified Linear Unit)。它是输入为 x 的最值函数 (x,0),比如一个卷积图像的矩阵。ReLU 接着把矩阵 x 中的所有负值置为零,并保持所有其他值不变。ReLU 是在卷积之后计算出来的,因此会出现一个非线性的激活函数,如双曲正切或双曲函数。Geoff Hinton 在他的 nature 论文里第一次讨论这个问题。
ELUs
指数线性单元(Exponential linear units)试图使平均激活接近于零,这样就能加速学习。ELUs 也能通过正值认定避免消失梯度的出现。研究显示,ELUs 比 ReLUs 有更高的分类准确性。
在本文中,我们将要讨论 Keras 并使用两个范例来展示如何使用 Keras 进行简单的预测分析任务以及图像分析。
什么是 Keras?
Keras 网站是这么介绍的——Keras 是 Theano 和 TensorFlow 的深度学习库。
Keras API 在 Theano 和 TensorFlow 之上运行。
Keras 是高级的神经网络 API,由 Python 编写并可以在 TensorFlow 和 Theano 之上运行。其开发目的是使快速实验成为可能。
什么是 Theano 和 TensorFlow?
James Bergstra 博士等人在 Scipy 2010 发布的 Theano 是一个 CPU 和 GPU 数学表达式编译器。它是一个 Python 库,允许你有效地定义、优化和评估涉及多维数组的数学表达式。Theano 由 Yoshua Bengio 等一些高级研究员和蒙特利尔学习算法研究所(MILA)共同完成。在 Scipy 2010 上一个非常棒的 Theano 教程。下图显示了截至 2010 年,Theano 在 GPU 和 CPU 与其他工具的对比。该结果最初在《Theano: A CPU and GPU Math Compiler in Python》一文中发表。
还有一些在 Theano 之上的建立其它的库,包括 Pylearn2 和 GroundHog(同样由 MILA 开发)、Lasagne、Blocks 和 Fuel.
TensorFlow 由 Google Brain 团队的研究员与工程师开发。其被开发用于进行机器学习和深度神经网络研究,但是该系统也足以适用于其它领域。如其网站介绍的那样,TensorFlow 是一个使用数据流图的数值计算开源软件库。图中的节点表示数学运算,图的边表示在其之间传递的多维数据数组(张量)。代码的可视化如下图所示。
Vgg16 构建在 Keras 之上(我们将在短时间内学到更多内容),Keras 是一个灵活易用的深度学习库,该软件库是基于 Theano 或 Tensorflow 的一个深度学习框架。Keras 使用固定的目录结构在批量读取图像和标签组,每个类别的图像必须放在单独的文件夹中。
我们从训练文件夹中获取批量数据:
步骤 4:预测狗 vs 猫
步骤 5:总结并编码文件
总结一下这篇文章,我推荐的狗和猫分类方法为:
总结
如果读者跟着我们走到了这一步,那么其实已经实现了上一部分文章中讨论过的理论,并做了一些实际的编程工作。如果读者们按照上述说明实现了这两个案例,那么就已经完成了使用 Keras 的第一个预测模型,也初步实现了图像分析。由于代码的长度,我们不在这里讨论细节只给出了链接。如果你查看链接有任何疑问,请联系 fast.ai。