TF中用于2D卷积操作的api是tf.nn.conv_2d,源码位置位于tensorflow/python/ops/gen_nn_ops.py

接口定义为:

  conv2d(input, filter, strides,padding, use_cudnn_on_gpu=True, data_format=‘NHWC’,name='None')

其中

  input的shape是[batch, in_height, in_width, in_channels]  

  filter的shape是[filter_height, filter_width, in_channels, out_channels]

  strides在的通常要写成[1, stride, stride, 1],也就是说第0个参数和第三个参数都是固定1,中间分别是x方向和y方向的步长,通常是一样的。

  padding是一个字符串类型,有SAME和VALID两个取值。

返回的同样是一个tensor。

再说一下tf.nn.bias.add这个api

接口定义是:

bias_add(value, bias, data_format=None, name = None)

value是一个tensor,可以是float的,double,int32等等类型的,value可以是任意维度的tensor,但是value的最后一维的size要和bias相同,类型可以不一样,可以转化就可以例如int转double等。

例如在下面的代码中经过卷积操作之后,输入是28*28*1的单通道图像,输出编程了24*24*32的特征图,偏置也是32维的tensor,特征图i对应+bias[i],输出还是24*24*32。同一个特征图共享了卷积核的5*5个参数和1个bias参数,也就是说这里一共有(5*5+1)*32个参数。

#从mnist数据集中读数据,定义一个占位符先
x = tf.placeholder(tf.float32, [None, 28*28])
#将x reshape成一个4D的tensor, 分别是batch size, height, width,channel
x = x.reshape(x, shape=[-1, 28,28,1])
#这个变量是卷积核,卷积核大小是5*5,通道数1,卷积核格式32个
weight = tf.Variable(tf.random_normal([5,5,1,32]))
bias = tf.Variable(tf.random_normal([32]))
stride = 1
x = tf.nn.conv2d(x, weight, strides = [1, stride, stride, 1], padding= 'SAME')
#再加上偏置量
x = tf.nn.bias_add(x, bias)

 通过上面的代码应该就可以很清楚的明白tensorflow中是如何做2维卷积的了。

另外一个用于实现2D卷积的API是tf.layers.conv2d,实际上和上面的这个API并没有太大区别,只是参数更多一些,使用的时候二者都可以。

后续再说一说CNN中的转置卷积(deconvolutional network)在tf中的api的使用,以及计算方式。

转载于:https://www.cnblogs.com/hellozlh/p/8251850.html

Tensorflow中2D卷积API使用相关推荐

  1. 【Tensorflow】Tensorflow中的卷积函数(conv2d、slim.conv2d、depthwise_conv2d、conv2d_transpose)

    [fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处] 前言   卷积是卷积神经网络中最主要.最重要的运算.想必大家最早接触卷积的概念就是在初高中 ...

  2. 如何使用TensorFlow中的Dataset API

    翻译 | AI科技大本营 参与 | zzq 审校 | reason_W 本文已更新至TensorFlow1.5版本 我们知道,在TensorFlow中可以使用feed-dict的方式输入数据信息,但是 ...

  3. TensorFlow中padding卷积的两种方式“SAME”和“VALID”

    最近在用tensorflow搭建卷积神经网络,遇到了一个比较棘手的问题,我一直理解的padding有两个值,一个是SAME,一个是VALID,如果padding设置为SAME,则说明输入图片大小和输出 ...

  4. 通过图+代码来理解tensorflow中反卷积

    反卷积这个东西老是容易忘,而且很多文章理论讲的很详细,但反卷积实际怎么操作的却没有概念,因此想以自己喜欢的方式(直接上图和代码)写一篇,以便随时翻阅. 卷积 tf中的padding方式有两种,SAME ...

  5. tensorflow中转置卷积运算例子

    import tensorflow as tf import numpy as np import tensorflow as keras from tensorflow.keras import l ...

  6. TensorFlow 中的 Conv2DOp

    TensorFlow 中的2D 卷积主要依赖外部库,如 cuDNN.cuBLAS.ROCm 和 hfp/libxsmm,仅 DeepConv2D<CPUDevice, T> 为源码实现. ...

  7. Tensorflow中部分API弃用(tf.sub/tf.mul/tf.neg)

    Tensorflow中废弃的API及替代 tf.mul  , tf.sub  ,  tf.neg 已经废弃  分别可用tf.multiply ,  tf.subtract ,  tf.negative ...

  8. CNN中的卷积核及TensorFlow中卷积的各种实现

    声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...

  9. Tensorflow中卷积的padding操作

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共975字,2张图,预计阅读时间3分钟. 之前一直对tensorflow的pad ...

最新文章

  1. redis java切片_jedis 单点配置
  2. Bootstrap 基本模板
  3. 【经典书】图论,322页pdf
  4. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心
  5. Spring IOC之依赖
  6. c语言cin改scanf,我的代码用scanf输入wa了,改成cin就ac了 ?
  7. C++与QML信号交互(非Q_PROPERTY法)
  8. MUI组件:弹出层组件 - 案例篇
  9. java长时间_什么导致Java中长时间的旋转和同步时间?
  10. 两个一样的图像相除会怎么样_【壮凌自动化分析】一种动力电池生产中基于图像运动模糊的速度检测方法...
  11. 前端 CSS 变量简介及基本使用方法
  12. 微分比例控制与测速反馈控制
  13. 【Android安全】ActivityManager.isUserAMonkey API
  14. [转载] 之前碰过的木马分析
  15. html中搜索框提示语,请输入您要搜索的内容(自定义Win10搜索框提示语的技巧)...
  16. 2021中国医疗机器人产业创新大会参会指南
  17. 微信朋友圈内测版-无视权限
  18. 智学.com查成绩 html,智学.com查分数
  19. 为泰泽铺路, Intel宣布32nm Atom正式出货 规格详解
  20. 2021404209陈聪blog

热门文章

  1. centos非root用户创建用户_CentOS中用户和用户组管理
  2. ECharts的点击事件
  3. oracle书写高质量sql,干货!SQL性能优化,书写高质量SQL语句
  4. asp.net javascrip获取session的值_一篇文章搞定 Django Cookie 与 Session
  5. java框架ssm整合_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
  6. linux哪个命令可以切换工作目录?如何显示当前所在的目录,Linux cd命令:切换目录...
  7. python虚拟环境中文件分部_Python之虚拟环境管理
  8. win8.1 php mysql,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
  9. golang中文文档_Golang开发环境搭建
  10. ppp chap 加密摘要_“网络工程师培训”基础教程:一文读懂PPP协议