keras中卷积核维数与输入维数的关系
来源:互联网 发布:教育软件 编辑:程序博客网 时间:2024/06/06 01:30
里面如果有错的话,还望指正,谢谢。
在使用keras的卷积层时,需要选择卷积核的维数,对应的函数分别为Conv1D和Conv2D等,刚开始使用时一直没搞明白为啥输入图像是3维的RGB图像,但是在配置卷积层时却选择Conv2D函数,而不是Conv3D,后来看keras的源码,才知道原因(我等菜鸟还是要多看源码才能进步。。)
在keras.layers中的convolutional.py中,基类函数_Conv中卷积核的尺寸是kernel_shape,可以看到代码中:
self.kernel_size由conv_utils.normalize_tuple函数得到,该函数根据输入的参数返回一个元组,参数分别是:kernel_size, rank, 'kernel_size'。
等式的第二个部分是一个元组, (input_dim, self.filters)分别表示输入数据的维度和卷积核的个数,两个元组相加,得到最终的卷积核的shape。例如在输入为RGB图像时,input_dim=3(由输入参数input_shape得出),filters=64,则:
kernel_shape = self.kernel_size + (input_dim, self.filters)=(3,3,3,64)
因此在计算参数个数时,若输入尺寸为W*H*D,卷积核移动步长为s,同时padding,保持输入输出的W和H不变,考虑偏置项b,卷积核大小为(k,k),卷积核个数为n,则此时卷积层需要确定的参数个数为:n*(k*k*D+1),参数个数就与输入图像的大小就无关啦,少了很多参数,因此上述例子中参数个数为64*(3*3*3+1),括号中前面的27为卷积核的参数,后面的加1为偏置项b。总的连接数为:[(W-k+2*padding)/s+1]*[(H-k+2*padding)/s+1]*n*(k*k*D+1)(这里的偏置项不知道算不算是连接的一部分),(W-k+2*padding)/s+1和(H-k+2*padding)/s+1得到输出的大小
在使用keras的卷积层时,需要选择卷积核的维数,对应的函数分别为Conv1D和Conv2D等,刚开始使用时一直没搞明白为啥输入图像是3维的RGB图像,但是在配置卷积层时却选择Conv2D函数,而不是Conv3D,后来看keras的源码,才知道原因(我等菜鸟还是要多看源码才能进步。。)
在keras.layers中的convolutional.py中,基类函数_Conv中卷积核的尺寸是kernel_shape,可以看到代码中:
kernel_shape = self.kernel_size + (input_dim, self.filters)
self.kernel_size由conv_utils.normalize_tuple函数得到,该函数根据输入的参数返回一个元组,参数分别是:kernel_size, rank, 'kernel_size'。
1、kernel_size是卷基层中人为指定的,可能为元组,也可能是一个整数,用于确定返回的元组kernel_size中元素的值;
2、rank为卷积核的维数(https://www.zhihu.com/question/21605094,第一个回答把秩的概念将的非常清楚,厉害),也是一个输入时确定的参数,但是在继承类中都已经指定了。用于确定返回的元组中kernel_size的大小;3、'kernel_size'仅仅用于报错时指出错误。
等式的第二个部分是一个元组, (input_dim, self.filters)分别表示输入数据的维度和卷积核的个数,两个元组相加,得到最终的卷积核的shape。例如在输入为RGB图像时,input_dim=3(由输入参数input_shape得出),filters=64,则:
kernel_shape = self.kernel_size + (input_dim, self.filters)=(3,3,3,64)
因此在计算参数个数时,若输入尺寸为W*H*D,卷积核移动步长为s,同时padding,保持输入输出的W和H不变,考虑偏置项b,卷积核大小为(k,k),卷积核个数为n,则此时卷积层需要确定的参数个数为:n*(k*k*D+1),参数个数就与输入图像的大小就无关啦,少了很多参数,因此上述例子中参数个数为64*(3*3*3+1),括号中前面的27为卷积核的参数,后面的加1为偏置项b。总的连接数为:[(W-k+2*padding)/s+1]*[(H-k+2*padding)/s+1]*n*(k*k*D+1)(这里的偏置项不知道算不算是连接的一部分),(W-k+2*padding)/s+1和(H-k+2*padding)/s+1得到输出的大小
里面如果有错的话,还望指正,谢谢。
阅读全文
1 0
- keras中卷积核维数与输入维数的关系
- keras之一维卷积实现
- matlab验证线性卷积与圆周卷积的关系
- keras中Convolution1D的使用(CNN情感分析yoom例子四) && Keras 1D,2D,3D卷积
- 卷积网络keras实现的部分理解
- 二叉树中,节点与边数的关系
- 图像卷积与滤波器关系
- 互相关与卷积关系
- 【Keras】张量的阶数
- 连接数与端口数的关系
- 卷积网络 步长&填充 大小 与输入输出大小的关系
- 数的输入与输出
- 使用RNN模拟CNN中每个卷积层的关系
- 全连接与卷积计算的关系(全连接到全卷积)
- Keras中神经网络可视化模块keras.utils.visualize_util 的安装配置与错误解决办法
- Keras实现卷积神经网络
- 查找输入的十个数中与已知数相同的数(c语言)
- 利用tensorflow keras搭建一个简单的卷积神经网络
- 磁盘
- iOS应用内跳转到系统设置页面
- linux查看服务器端口状态,打开端口
- [leetcode]136. Single Number@Java解题报告
- 玲珑杯 1149
- keras中卷积核维数与输入维数的关系
- WPF简单教程:Application类的使用
- C++设计模式-Adapter适配器模式
- Hanoi塔问题
- BigDecimal.setScale 处理java小数点
- ResNet及其变体概述
- 人脸识别算法介绍
- C++设计模式-Decorator装饰模式
- Ambari——大数据平台的搭建利器