max pooling是CNN当中的最大值池化操作,其实用法和卷积很类似
有些地方可以从卷积去参考【TensorFlow】 tf.nn.conv2d实现卷积的方式
tf.nn.max_pool(value, ksize, strides, padding, name=None)
参数是四个,和卷积很类似:
第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape
第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
第四个参数padding:和卷积类似,可以取'VALID' 或者'SAME'
返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式
假设有这样一张图,双通道
第一个通道:
第二个通道:
用程序去做最大值池化:
import tensorflow as tf a=tf.constant([ [[1.0,2.0,3.0,4.0], [5.0,6.0,7.0,8.0], [8.0,7.0,6.0,5.0], [4.0,3.0,2.0,1.0]], [[4.0,3.0,2.0,1.0], [8.0,7.0,6.0,5.0], [1.0,2.0,3.0,4.0], [5.0,6.0,7.0,8.0]] ]) a=tf.reshape(a,[1,4,4,2]) pooling=tf.nn.max_pool(a,[1,2,2,1],[1,1,1,1],padding='VALID') with tf.Session() as sess: print("image:") image=sess.run(a) print (image) print("reslut:") result=sess.run(pooling) print (result)
这里步长为1,窗口大小2×2,输出结果:
image: [[[[ 1. 2.] [ 3. 4.] [ 5. 6.] [ 7. 8.]] [[ 8. 7.] [ 6. 5.] [ 4. 3.] [ 2. 1.]] [[ 4. 3.] [ 2. 1.] [ 8. 7.] [ 6. 5.]] [[ 1. 2.] [ 3. 4.] [ 5. 6.] [ 7. 8.]]]] reslut: [[[[ 8. 7.] [ 6. 6.] [ 7. 8.]] [[ 8. 7.] [ 8. 7.] [ 8. 7.]] [[ 4. 4.] [ 8. 7.] [ 8. 8.]]]]
池化后的图就是:
证明了程序的结果是正确的。
我们还可以改变步长
pooling=tf.nn.max_pool(a,[1,2,2,1],[1,2,2,1],padding='VALID')
最后的result就变成:
reslut: [[[[ 8. 7.] [ 7. 8.]] [[ 4. 4.] [ 8. 8.]]]]
以上这篇TensorFlow tf.nn.max_pool实现池化操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
我已经实现了一个线程池。现在,它的基本操作如下: 空初始化(布尔detached_threads); bool调度(ulux(*dispatch_fn)(ulux), ulux arg, boolfree_arg); void shut\u down(); 静态无效*execute_task(无效*arg); 现在我想添加等待()操作,它将由主线程调用,并等待线程池中的所有线程完成它们正在执行的任
本文向大家介绍C#线程池操作方法,包括了C#线程池操作方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#线程池操作方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍MySQL横纵表相互转化操作实现方法,包括了MySQL横纵表相互转化操作实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MySQL横纵表相互转化操作实现方法。分享给大家供大家参考,具体如下: 先创建一个成绩表(纵表) 再创建一个成绩表(横表) 纵表转横表 纵表转横表 更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作
本文向大家介绍Python操作MySQL简单实现方法,包括了Python操作MySQL简单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python操作MySQL简单实现方法。分享给大家供大家参考。具体分析如下: 一、安装: 安装MySQL 安装MySQL不用多说了,下载下来安装就是,没有特别需要注意的地方。 一个下载地址:点击打开链接 二、示例: 希望本文所述对大家的Pytho
本文向大家介绍springboot实现热部署操作方法,包括了springboot实现热部署操作方法的使用技巧和注意事项,需要的朋友参考一下 1.在 Spring Boot 开发环境下禁用模板缓存 2.引入依赖 3.Intellij IEDA 和 Eclipse 不同,Intellij IDEA 必须做一些小调整 在 Eclipse 中,修改文件后要手动进行保存,它就会自动编译,就触发热部署现象,而
本文向大家介绍Python利用splinter实现浏览器自动化操作方法,包括了Python利用splinter实现浏览器自动化操作方法的使用技巧和注意事项,需要的朋友参考一下 利用Splinter开发浏览器自动化操作,编写代码比较简单。 案例一: 第1行 是导入Browser。 Browser是整个测试的基础,你可以把它理解为一个浏览器。 第3行 初始化一个Browser,不加参数的话默认是fir