当前位置: 首页 > 知识库问答 >
问题:

卷积核需要在CNN(卷积神经网络)中设计吗?

顾跃
2023-03-14

我是卷积神经网络的新手。我正在阅读一些教程,并使用Keras测试一些示例代码。要添加卷积层,基本上我只需要指定内核的数量和大小。

我的问题是每个内核是什么样子的?它们是所有计算机视觉应用程序的通用工具吗?

共有2个答案

宇文鸿畴
2023-03-14

实际的内核值是在学习过程中学习的,这就是为什么只需要设置内核的数量和大小。

可能令人困惑的是,学习到的内核值实际上模仿了Gabor和边缘检测过滤器等东西。这些对于许多计算机视觉应用程序来说都是通用的,但它们不是手动设计的,而是从大型分类数据集(如ImageNet)学习的。

此外,内核值是特征层次结构的一部分,可直接用作各种计算机视觉问题的特征。在这方面,它们也是通用的。

邹山
2023-03-14

我的问题是每个内核看起来像什么?

这取决于您为卷积层选择的参数:

>

  • 它确实取决于您提到的kernel_size参数,因为它将决定内核的形状和大小。假设您将此参数传递为(3,3)(自然在Conv2D层上),然后您将获得一个3x3内核矩阵。
  • 它将取决于您的kernel_initializer参数,该参数决定了MxN Kernel Matrix的填充方式。它的默认值是"glorot_uniform",在其文档页面中有解释:

    Glorot均匀初始化器,也称为Xavier均匀初始化器。它从[-极限,极限]内的均匀分布中抽取样本,其中极限为sqrt(6/(fan_infan_out)),其中fan_in是权重张量中的审进量单位,fan_out是权重张量中的输出单位数。

    这告诉我们它填充内核矩阵的具体方式。您可以根据需要选择任何其他内核初始值设定项。您甚至可以构建自定义初始值设定项,也可以在文档页面中进行示例:

    from keras import backend as K
    
    def my_init(shape, dtype=None):
        #or whatever you want to customize
        return K.random_normal(shape, dtype=dtype)
    
    model.add(Dense(64, kernel_initializer=my_init))
    

    此外,它将取决于您的kernel\u正则化器参数,该参数定义了应用于内核权重的正则化函数。默认值为“无”,但您可以从可用值中选择其他值。您可以以类似的方式再次定义自己的自定义初始值设定项:

    def l1_reg(weight_matrix):
        #same here, fit your own needs
        return 0.01 * K.sum(K.abs(weight_matrix))
    
    model.add(Dense(64, input_dim=64,
            kernel_regularizer=l1_reg)
    

    它们是所有计算机视觉应用程序的通用工具吗?

    我认为这可能有点宽泛,但我冒昧地说是的。Keras提供了许多旨在专门适应深度学习应用程序的内核;它包括那些在文献和知名应用程序中最常用的内核。

    好的是,如前所述,如果这些内核中的任何一个不符合您的需要,您可以很好地定义自己的自定义初始值设定项,或者通过使用正则化来增强它。这使您能够解决您可能遇到的那些真正特定的CV问题。

  •  类似资料:
    • 下午好在第一阶段,在卷积神经网络(输入层)的输入上,我们接收一个源图像(因此是手写英文字母的图像)。首先,我们使用一个从左到右的nxn窗口来扫描图像并在内核(卷积矩阵)上乘法来构建特征映射?但没有人写过内核应该具有什么样的精确值(换句话说,我应该将从n*n窗口检索到的数据相乘到什么样的内核值)。是否适合在这个用于边缘检测的卷积核上乘以数据?有许多卷积核(浮雕、高斯滤波器、边缘检测、角度检测等)?但

    • 最后,我开始学习神经网络,我想知道卷积深度信念网络和卷积网络之间的区别。在这里,有一个类似的问题,但没有确切的答案。我们知道卷积深度信念网络是CNN DBN。所以,我要做一个物体识别。我想知道哪一个比另一个好得多或者它们的复杂性。我搜索了一下,但找不到任何东西,可能是做错了什么。

    • 注意: 本教程适用于对Tensorflow有丰富经验的用户,并假定用户有机器学习相关领域的专业知识和经验。 概述 对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,其任务是对一组大小为32x32的RGB图像进行分类,这些图像涵盖了10个类别: 飞机, 汽车, 鸟, 猫, 鹿, 狗, 青蛙, 马, 船以及卡车。 想了解更多信息请参考CIFAR-10 page,以及Alex Kriz

    • 卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络

    • 本文向大家介绍TensorFlow实现卷积神经网络CNN,包括了TensorFlow实现卷积神经网络CNN的使用技巧和注意事项,需要的朋友参考一下 一、卷积神经网络CNN简介 卷积神经网络(ConvolutionalNeuralNetwork,CNN)最初是为解决图像识别等问题设计的,CNN现在的应用已经不限于图像和视频,也可用于时间序列信号,比如音频信号和文本数据等。CNN作为一个深度学习架构被

    • 首先我们来看看CNN的基本结构。一个常见的CNN例子如下图: 图中是一个图形识别的CNN模型。可以看出最左边的船的图像就是我们的输入层,计算机理解为输入若干个矩阵,这点和DNN基本相同。 接着是卷积层(Convolution Layer),这个是CNN特有的,我们后面专门来讲。卷积层的激活函数使用的是ReLU。我们在DNN中介绍过ReLU的激活函数,它其实很简单,就是$$ReLU(x) = max