卷积操作是使用一个二维卷积核在在批处理的图片中进行扫描,具体的操作是在每一张图片上采用合适的窗口大小在图片的每一个通道上进行扫描。

权衡因素:在不同的通道和不同的卷积核之间进行权衡

在tensorflow中的函数为例:

  • conv2d: 任意的卷积核,能同时在不同的通道上面进行卷积操作。
  卷积核的卷积过程是按照 strides 参数来确定的,比如 strides = [1, 1, 1, 1] 表示卷积核对每个像素点进行卷积,即在二维屏幕上面,两个轴方向的步长都是1。strides = [1, 2, 2, 1] 表示卷积核对每隔一个像素点进行卷积,即在二维屏幕上面,两个轴方向的步长都是2

  卷积操作的空间含义定义如下:如果输入数据是一个四维的 input ,数据维度是 [batch, in_height, in_width, ...],卷积核也是一个四维的卷积核,数据维度是 [filter_height, filter_width, ...]

  函数:tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
  这个函数的作用是对一个四维的输入数据 input 和四维的卷积核 filter 进行操作,然后对输入数据进行一个二维的卷积操作,最后得到卷积之后的结果。
  给定的输入张量的维度是 [batch, in_height, in_width, in_channels] ,卷积核张量的维度是 [filter_height, filter_width, in_channels, out_channels]
  注意,必须有 strides[0] = strides[3] = 1。在大部分处理过程中,卷积核的水平移动步数和垂直移动步数是相同的,即 strides = [1, stride, stride, 1]
 
实例代码:
 input_data = tf.Variable(np.random.rand(10, 6, 6, 3), dtype= np.float32)
filter_data = tf.Variable(np.random.rand(2, 2, 3, 1), dtype= np.float32)
y = tf.nn.conv2d(input_data, filter_data, strides =[1,1,1,1], padding='VALID')
with tf.Session() as sess:
init = tf.initialize_all_variables()
sess.run(init)
a = sess.run(y)
print (a)
print (tf.shape(a))
输出:padding='VALID'
维度是(10,5,5,1),计算方法:6-2+1=5

[ 2.3715086 ]
[ 3.50508738]
[ 3.82352686]
[ 3.2169013 ]
[ 2.59157968]]]]

。。。

Tensor("Shape_14:0", shape=(4,), dtype=int32)
 
 input_data = tf.Variable(np.random.rand(10, 6, 6, 3), dtype= np.float32)
filter_data = tf.Variable(np.random.rand(2, 2, 3, 1), dtype= np.float32)
y = tf.nn.conv2d(input_data, filter_data, strides =[1,1,1,1], padding='SAME')
with tf.Session() as sess:
init = tf.initialize_all_variables()
sess.run(init)
a = sess.run(y)
print (a)
print (tf.shape(a))

输出:padding='SAME'

维度是(10,6,6,1)

[ 1.61058581]
[ 1.08910465]
[ 1.18494463]
[ 1.89793181]
[ 1.41800678]
[ 0.32431859]]]]

。。。

Tensor("Shape_15:0", shape=(4,), dtype=int32)

 
摘自:http://www.jianshu.com/p/e3a79eac554f

CNN中的卷积理解和实例的更多相关文章

  1. (原)CNN中的卷积、1x1卷积及在pytorch中的验证

    转载请注明处处: http://www.cnblogs.com/darkknightzh/p/9017854.html 参考网址: https://pytorch.org/docs/stable/nn ...

  2. CNN中各类卷积总结:残差、shuffle、空洞卷积、变形卷积核、可分离卷积等

    CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中 ...

  3. [转]CNN 中千奇百怪的卷积方式大汇总

    https://www.leiphone.com/news/201709/AzBc9Sg44fs57hyY.html 推荐另一篇很好的总结:变形卷积核.可分离卷积?卷积神经网络中十大拍案叫绝的操作. ...

  4. CNN中千奇百怪的卷积方式大汇总

    1.原始版本 最早的卷积方式还没有任何骚套路,那就也没什么好说的了. 见下图,原始的conv操作可以看做一个2D版本的无隐层神经网络. 附上一个卷积详细流程: [TensorFlow]tf.nn.co ...

  5. CNN中的卷积操作的参数数计算

    之前一直以为卷积是二维的操作,而到今天才发现卷积其实是在volume上的卷积.比如输入的数据是channels*height*width(3*10*10),我们定义一个核函数大小为3*3,则输出是8* ...

  6. CNN中感受野的理解

    本文摘自看完还不懂卷积神经网络“感受野”?那你来找我 作者:程序_小白链接:https://www.jianshu.com/p/9305d31962d8 一.到底什么是“感受野”(接受野Recepti ...

  7. java中快速排序的理解以及实例

    所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换 ...

  8. (转)关于CNN中平移不变性的理解

    https://www.quora.com/Why-and-how-are-convolutional-neural-networks-translation-invariant https://st ...

  9. CNN中1x1 卷积的处理过程及作用

    参看:https://blog.csdn.net/ybdesire/article/details/80314925

随机推荐

  1. AngularJS------使用VSCode创建的Angular项目部署IIS

    转载: http://www.cnblogs.com/kingkangstudy/p/7699710.html 1.进入项目src,执行命令行:ng build 2.步骤1后会生成dist文件 3.打 ...

  2. NetBpm 配置篇(2)

    转载注明出处:http://www.cnblogs.com/anbylau2130/p/3877353.html 上一篇中介绍了Netbpm在IIS和CassiniWebServer服务器的安装 通过 ...

  3. MongoDB副本集的工作原理

    在MongoDB副本集中,主节点负责处理客户端的读写请求,备份节点则负责映射主节点的数据. 备份节点的工作原理过程可以大致描述为,备份节点定期轮询主节点上的数据操作,然后对自己的数据副本进行这些操作, ...

  4. [XPath] XPath 与 lxml (四)XPath 运算符

    XPath 中支持的运算符 # | 或: 返回所有 price 和 title 节点集合 >>> root.xpath('//price|//title') [<Element ...

  5. N76E003之WDT(看门狗定时器)

    N76E003提供一个看门狗定时器(WDT),它可以配置成一个超时复位定时器用于复位整个设备.一旦由于外界干扰设备进入非正常状态或挂起,看门狗可以复位恢复系统.这有用于监测系统运行以提高系统可靠性.对 ...

  6. Hadoop计算平均值【转】

    file1.txt a 1b 2a 3b 3a 5b 7c 3c 5 file2.txt a 1b 7c 5a 1c 3 结果: a 2.2b 4.75c 4.0 代码: package org.ap ...

  7. codeforces水题100道 第二十题 Codeforces Round #191 (Div. 2) A. Flipping Game (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/327/A题意:你现在有n张牌,这些派一面是0,另一面是1.编号从1到n,你需要翻转[i,j]区间的 ...

  8. iOS - keychain 详解及变化

    keychain介绍 iOS keychain 是一个相对独立的空间,保存到keychain钥匙串中的信息不会因为卸载/重装app而丢失, .相对于NSUserDefaults.plist文件保存等一 ...

  9. Android开发训练之第五章第三节——Transferring Data Without Draining the Battery

    Transferring Data Without Draining the Battery GET STARTED DEPENDENCIES AND PREREQUISITES Android 2. ...

  10. 【MySQL8】 安装后的简单配置(主要解决navicat等客户端登陆报错问题)

    一.navicat等客户端登陆报错的原因 使用mysql,多数我们还是喜欢用可视化的客户端登陆管理的,个人比较喜欢用navicat.一般装好服务器以后,习惯建一个远程的登陆帐号,在mysql8服务器上 ...