在这篇文章中,将探讨如何利用KNIME分析平台构建一个深度学习网络,以对手写数字进行分类。KNIME分析平台是一个开源软件,它允许用户通过拖放式的界面创建数据科学工作流,而无需编写代码。这些工作流易于理解和与其他用户共享。
在灰度数字图像格式中,图像被表示为基于光强度(0-1)的像素值数值矩阵,其中1代表照亮的像素(白色),0代表暗像素(黑色),介于两者之间的数字代表不同级别的灰色(图2)。MNIST数据集中的图像以灰度格式提供。
CNN是一个至少包含一个卷积层的网络(图3)。卷积层的任务是从图像中提取特征。在CNN中,通常会堆叠多个卷积层以提取一系列特征。第一层卷积层学习提取低级特征,如斑点和边缘。这些特征随后被下一个卷积层用来提取中级特征,例如案例中的数字部分。这些中级特征最终被用来提取高级特征,如数字本身。
卷积层的目标是学习识别图像中的特征。为此,它使用一组核心,也称为过滤器。每个核心是一个矩阵或张量,其权重针对提取特定特征的任务进行了定制。
为了应用过滤器并提取特征,核心(比图像小得多)被放置在图像块上。然后计算卷积操作,并应用非线性激活函数。如果特征在图像块中,则产生高值;如果不在图像块中,则产生小值。核心通过根据步幅长度(图4a)在图像上移动,从块到块进行平移。
卷积层通常后面跟着一个池化层。池化层对于提取主导特征的同时减少图像的空间大小至关重要。池化层还在输入矩阵的块上操作,其中它应用最大池化或平均池化操作。在最大池化的情况下(图4b),只传递块的最大值到输出;在平均池化的情况下,计算块的平均值并传递到输出。池化层需要两个参数——块/池大小和步幅。大小指的是块的大小,步幅指的是移动到下一个块时的步长。这两个参数都影响空间大小的减少。
密集层通常是最后几层,实现分类器,即它们学习根据选定的损失函数将类别(在例子中是数字)与它们的输入关联起来。
KNIME深度学习Keras集成允许在KNIME分析平台上使用Keras库训练深度学习模型。拖动任务特定的深度学习节点并将它们连接成管道,以构建解决方案工作流。
KNIME深度学习Keras集成特别强大,因为它结合了KNIME GUI的易用性和Keras深度学习库的广泛覆盖。将使用图5中显示的节点来构建CNN。
现在,让开始构建一个用于数字分类的CNN。在图6中,有一个带有神经网络架构的工作流。左下角的节点提供了训练和测试集的图像以及数字标签。工作流的上半部分显示了网络的架构:一个卷积层,一个最大池化层,一个展平层和两个用于分类的密集层。
卷积层:32个核心/过滤器,3×3核心大小,步幅=1,ReLU激活函数