我是数据科学和 CNN 的新手。
我对CNN的理解是:
图像的像素数据使用过滤器进行卷积,过滤器提取边缘及其位置等特征。
这将创建过滤器映射。
然后我们应用最大池化,它将对数据进行下采样。
然后我们将这些数据输入一个学习分类的神经网络。
现在我知道我可以用卷积来做一些事情,比如模糊或从图像中获取边缘。
但是假设我正在尝试制作一个“热狗与否”应用程序,我该如何制作我的过滤器?矩阵会是什么?
我是数据科学和 CNN 的新手。
我对CNN的理解是:
图像的像素数据使用过滤器进行卷积,过滤器提取边缘及其位置等特征。
这将创建过滤器映射。
然后我们应用最大池化,它将对数据进行下采样。
然后我们将这些数据输入一个学习分类的神经网络。
现在我知道我可以用卷积来做一些事情,比如模糊或从图像中获取边缘。
但是假设我正在尝试制作一个“热狗与否”应用程序,我该如何制作我的过滤器?矩阵会是什么?
首先,特征图是应用激活函数(例如 ReLU 或 sigmoid)后卷积的输出,而不是图像卷积的矩阵。通常,这称为过滤器。
CNN 的神奇之处在于,对于任何给定问题,我们不知道过滤器应该是什么样子。CNN 会自动计算出每个过滤器的外观。这是通过反向传播过程完成的。在不深入研究数学的情况下,基本上每次训练示例(或一批示例)通过网络时,每个过滤器内的值都会更新一些少量。这少量是使用损失函数的导数确定的。随着训练过程的每一步完成,每个过滤器内的值(如果一切顺利!)慢慢收敛到最小化损失函数的值,从而产生最佳质量的预测。
有关数学的更多信息,我鼓励您阅读免费在线书籍《神经网络和深度学习》中关于反向传播的章节,可在此处获得。
这里也提供了更简单的解释
我们需要从超参数调整中选择过滤器大小。它总是基于您的问题,您尝试提取什么样的特征。有时 3 3,5 5 或 9*9 是合适的,它总是基于我们正在解决什么样的问题。我们可以用矩阵中的随机 1 和 0 初始化过滤器值。在训练期间(即在反向传播期间)学习过滤器值。因此,过滤器的各个值通常称为 CNN 的权重。