1.调用tf.nn.conv2d()实现卷积

首先是调用卷积函数实现卷积操作:
这里说明一下conv2d的定义及参数含义: 参考
【定义:】

tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

【参数:】
input : 输入的要做卷积的图片,要求为一个张量,shape为 [ batch, in_height, in_weight, in_channel ],其中batch为图片的数量,in_height 为图片高度,in_weight 为图片宽度,in_channel 为图片的通道数,灰度图该值为1,彩色图为3。(也可以用其它值,但是具体含义不是很理解)
filter: 卷积核,要求也是一个张量,shape为 [ filter_height, filter_weight, in_channel, out_channels ],其中 filter_height 为卷积核高度,filter_weight 为卷积核宽度,in_channel 是图像通道数 ,和 input 的 in_channel 要保持一致,out_channel 是卷积核数量。
strides: 卷积时在图像每一维的步长,这是一个一维的向量,[ 1, strides, strides, 1],第一位和最后一位固定必须是1
padding: string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。"SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑
use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true

2.TensorFlow tf.nn.max_pool实现池化操作方式

max pooling是CNN当中的最大值池化操作,其实用法和卷积很类似

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
import numpy as np
input = np.array([[12,21,1,1],[11,10,10,2],[1,10,10,23],[45,31,11,32]],dtype='float32')
input = input.reshape([1,4,4,1]) #因为conv2d的参数都是四维的,因此要reshape成四维
kernel = np.array([[2,-1],[-1,0]])
kernel = kernel.reshape([2,2,1,1]) #kernel也要reshape
print(input.shape,kernel.shape) #(1, 4, 4, 1) (2, 2, 1, 1)x = tf.placeholder(tf.float32,[1,4,4,1])
k = tf.placeholder(tf.float32,[2,2,1,1])
conv_result = tf.nn.conv2d(x,k,strides=[1,1,1,1],padding='SAME')
max_pooling=tf.nn.max_pool(input,[1,2,2,1],[1,1,1,1],padding='VALID')
ave_polling = tf.nn.avg_pool(input,[1,2,2,1],[1,1,1,1],padding='VALID')with tf.Session() as sess:y = sess.run(conv_result,feed_dict={x:input,k:kernel})max_polling=sess.run(max_pooling)ave_polling=sess.run(ave_polling)y=y.reshape([4,4])max_polling = max_polling.reshape([3,3])ave_polling = ave_polling.reshape([3,3])print(y.shape) #(1,3,3,1)print(max_polling.shape)print(ave_polling.shape)print(y) #因为y有四维,输出太长了,我就只写一下中间两维的结果(3*3部分):[[4,3,4],[2,4,3],[2,3,4]]print(max_polling)print(ave_polling)

reference:https://blog.csdn.net/aaon22357/article/details/85283502

https://www.jb51.net/article/177799.htm

TensorFlow实现卷积、池化操作相关推荐

  1. 卷积池化操作输出的尺寸大小

    代码演示 # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np """ Created o ...

  2. tensorflow之卷积池化和全连接

    卷积: 当从一个大尺寸图像中随机选取一小块,比如说 8x8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个 8x8 样本中学习到的特征作为探测器,应用到这个图像的任意地方中去.特 ...

  3. 【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )

    文章目录 I . 池化 II . 丢弃操作 III . 批量规范化 IV . 卷积神经网络 完整流程示例 ( 1 ) : 原始输入图 V . 卷积神经网络 完整流程示例 ( 2 ) : 卷积层 C1C ...

  4. 卷积神经网络中的各种池化操作

    参考:https://www.cnblogs.com/pprp/p/12456403.html 池化操作(Pooling)是CNN中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维 ...

  5. 【Pytorch神经网络理论篇】 13 深层卷积神经网络介绍+池化操作+深层卷积神经网络实战

    1 深层卷积神经网络概述 1.1 深层卷积神经网络模型结构图 1.1.1 深层卷积神经网络的正向结构构成剖析 输入层,将每个像素作为一个特征节点输入网络. 卷积层:由多个滤波器组合而成. 池化层:将卷 ...

  6. 【综述】盘点卷积神经网络中的池化操作

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 池化操作(Pooling)是CNN中非常常见的一种操作,池化操作通 ...

  7. 双线性池化_卷积神经网络中的各种池化操作

    池化操作(Pooling)是CNN中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建 ...

  8. 卷积神经网络系列之卷积/池化后特征图大小怎么计算??

    1.卷积后的大小: W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长 width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高 w ...

  9. 卷积池化与LeNet5网络模型

    1 前言 经过前面三篇文章的介绍,我们已经知道了卷积的原理.卷积的计算过程以及池化的原理和过程等.在接下来的这篇文章中,笔者将开始介绍如何通过Pytorch这一深度学习框架来实现卷积和池化的操作,以及 ...

最新文章

  1. OpenCV Mat数据类型及位数总结
  2. wince6.0编译命令分析
  3. Python + GitHub Actions 实现 CSDN 自动签到与抽奖(非 selenium 版本)
  4. MUI框架 · 异步请求:mui.get()、mui.ajax()、mui.post() 技术罗列
  5. 动机的寓言:孩子为谁在玩
  6. 如何用U盘安装Ubuntu操作系统
  7. 如何写软件设计文档?
  8. 刚学的一招呵呵,愚人节到了,教个大家最强的整人方法
  9. python无限循环一段句子,python无限循环语句如何实现
  10. 灰色线性回归组合预测模型及R语言实现
  11. 蓝桥杯第十届c语言试题答案,[蓝桥杯][2019年第十届真题]空间跳跃 - C语言网
  12. python修改图片类型
  13. 黑群晖vmm专业版_折腾群晖笔记:利用VMM虚拟机 安装LEDE旁路由 实现软路由超强功能...
  14. excel-柱状图不同柱子不同颜色设置
  15. 音乐推荐-3张新碟《雪狼》+《馨馨醉》+《光》
  16. 探讨!自媒体的推荐机制提高百家号阅读收益方法!
  17. Java服务端和客户端开发辅助工具Utils
  18. PDF怎么修改,如何删除PDF水印
  19. idea修改代码提示时间
  20. 米聊显示服务器开小差请稍候再试,系统开小差请稍后再试什么意思啊

热门文章

  1. 深入掌握JMS(三):MessageListener
  2. 一个SQL更新多条字段
  3. 在MAC Xcode下安装OpenCV
  4. 制作Ubuntu16.04系统盘
  5. 转:word2vec 中的数学原理详解
  6. 批量网站DNS区域传送漏洞检测——bash shell实现
  7. kubernets kube-proxy原理分析
  8. Apache和Nginx下禁止访问特定的目录或文件
  9. 页面用ajax实现简单的连接数据库
  10. 408业务课·计算机网络——【考研随笔】之一