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

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

在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. web -- 前端访问后台跨区问题解决

    package com.xindatai.ibs.web.filter; import java.io.IOException; import javax.servlet.Filter; import ...

  2. 5 -- Hibernate的基本用法 --4 1 创建Configuration对象

    org.hibernate.cfg.Configuration实例代表了应用程序到SQL数据库的配置信息,Configuration对象提供了一个buildSessionFactory()方法,该方法 ...

  3. centos 上不了网了

    昨天还用的好好的,今天就上不了网了,郁闷,不过,正好是一次学习linux网络配置的好机会,这会已经把它折腾好了,此文就是在linux下面的浏览器中写的! 先检查一下虚拟机中的网络设置是否正常,由于我的 ...

  4. 如何查看MySQL的当前存储引擎?

    如何查看MySQL的当前存储引擎? 一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:   看你的mysql现在已提供什么存储引擎: mysql> show engines; ...

  5. fstream 和 iostream

    fstream 是对文件输入输出iostream是对屏幕上输入输出你想往文件里保存内容,或者从文件里读取内容就用fstream向屏幕输出或者从屏幕上输入,用iostream “>>”运算符 ...

  6. 系统日志:/var/log/messages

    /var/log/messages 存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志,在做故障诊断时可以首先查看该文件内容 [root@mirh5_center1_111.231 ...

  7. cp自动创建层级结构的例子

    一个拷贝命令的技巧,不仅拷贝文件,而且拷贝目录结构.记录下来. *拷贝的时候,自动创建参数中源文件的路径:#cp --parents parentdir1/parentdir2/sourcefile ...

  8. git怎么使用

    1_创建一个git服务器 2_开发人员小A从服务器拉取代码 3_小A提交代码 4_小c拉取代码 5_小a现在的代码 6_小c改变了小a的代码 7_小c将变更提交一下 8_小a拉取服务器的代码 9_小A ...

  9. 【大数据系列】Hadoop DataNode读写流程

    DataNode的写操作流程 DataNode的写操作流程可以分为两部分,第一部分是写操作之前的准备工作,包括与NameNode的通信等:第二部分是真正的写操作. 一.准备工作 1.首先,HDFS c ...

  10. css案例 - mask遮罩层的华丽写法

    mask遮罩蒙层使用通常的写法的bug 通常写法pug .mask 通常写法css .mask{ position: absolute; top: 0; right: 0; bottom: 0; le ...