Tensorflow卷积函数

转载 2018年04月15日 16:21:16

转载自:

https://blog.csdn.net/zSean/article/details/77837589


卷积函数是在一批图像上扫描的二维过滤器。卷积函数定义在tensorflow-1.1.0/tensorflow/python/ops下的nn_impl.py和nn_ops.py文件中。

(1)计算N维卷积的和的函数tf.nn.convolution()

[html] view plain copy
  1. tf.nn.convolution(input,filter,padding,strides=None,dilation_rate=None,name=None,data_format=None)  
(2)对一个四维的输入数据input和四维的卷积核filter进行操作,然后对输入数据进行一个二维的卷积操作,最后得到卷积之后的结果。

[html] view plain copy
  1. tf.nn.conv2d(input,filter, strides, padding, use_cudnn_on_gpu=Nonename=None)  
input:为一个Tensor,数据类型必须是float32或者float64;

filter:为一个tensor,数据类型必须是与input输入的数据类型相同;

strides:一个长度是4的一维整数类型数组,每一维度对应的是input中每一维的对应移动步数;如strides[1]对应input[1]的移动步数;

padding:一个字符串,取值为SAME或者VALID;‘SAME'适用于全尺寸操作,即输入数据维度和输出数据维度相同;'VALID'适用于部分窗口;

use_cudnn_on_gpu:一个可选布尔值,默认情况下是True;

name:为这个操作取一个名字;

[html] view plain copy
  1. import tensorflow as tf  
  2. import os  
  3. import numpy as np  
  4. input_datatf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)  
  5. filter_data=tf.Variable(np.random.rand(2,2,3,4),dtype=np.float32)  
  6. y = tf.nn.conv2d(input_data,filter_data,strides=[1,3,3,1],padding='SAME')  
  7. print('输入的结果为:', y)  
input的张量维度[batch, in_height, in_width, in_channels),若输入的图像为9*9的彩色图像(RGB),则张量为[batch,9,9,3],其中黑白图像的通道为1,彩色图像为3,batch为输入的图像数量

filter为卷积核,filter[filter_height, filter_width, in_channels, out_channels]的shape,这个是以conv2d为例;

其中对应的含义分别为:[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数]
在使用过程中,通常不对input的第一维和第四维进行卷积操作,所以通常strides一般为[1,X,X,1]

[html] view plain copy
  1. 输入的结果为: Tensor("Conv2D:0", shape=(10, 3, 3, 4), dtype=float32)  
(3)函数tf.nn.depthwise_conv2d(input, filter, strides, padding, name=None,data_format=None)

[html] view plain copy
  1. import tensorflow as tf  
  2. import os  
  3. import numpy as np  
  4. input_datatf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)  
  5. filter_data=tf.Variable(np.random.rand(2,2,3,4),dtype=np.float32)  
  6. y = tf.nn.depthwise_conv2d(input_data,filter_data,strides=[1,3,3,1],padding='SAME')  
  7. print('输入的结果为:', y)  
input的数据维度[batch,in_height,in_weight,in_channels]

filter的维度[filter_height, filter_width,in_channel, channel_multiplierl]

在通道in_channels上面的卷积深度是3,

将不同的卷积核独立地应用在in_channels的每条通道上,

然后将所有的结果进行汇总,输出通道的总数,in_channel*channel_multiplier

[html] view plain copy
  1. 输入的结果为: Tensor("depthwise:0", shape=(10, 3, 3, 12), dtype=float32)  
(4)函数tf.nn.separable_conv2d(input, depthwise_filter, pointwise_filter, strides, padding, name=None,data_format=None)

depthwise_filter:为一个张量,数据维度是四维[filter_height, filter_width, in_channels, channel_multiplier]
pointwise_filter:一个四维的张量,数据维度是四维[1,1,channel_multipliter*in_channels,out_channels]。

pointwise_filter是在depthwise_filter卷积之后的混合卷积;

strides:一个长度是4的一维整数类型数组,每一个维度对应的是input中每一维的对应移动步数

[html] view plain copy
  1. import tensorflow as tf  
  2. import os  
  3. import numpy as np  
  4. input_datatf.Variable(np.random.rand(1,9,9,3),dtype=np.float32)  
  5. depthwise_filter=tf.Variable(np.random.rand(2,2,3,4),dtype=np.float32)  
  6. pointwise_filter = tf.Variable(np.random.rand(1,1,12,20),dtype=np.float32)  
  7. y = tf.nn.separable_conv2d(input_data,depthwise_filter,pointwise_filter,strides=[1,3,3,1],padding='SAME')  
  8. print('输入的结果为:', y)  
[html] view plain copy
  1. 输入的结果为: Tensor("separable_conv2d:0", shape=(1, 3, 3, 20), dtype=float32)  

(5)函数tf.nn.atrous_conv2d(value, filters, rate, padding, name=None)计算Atrous卷积,称为扩张卷积

(6)函数tf.nn.conv2d_transpose(value, filter, output_shape,strides, padding='SAME',data_format='NHWC',name=None)为conv2d的转置。

(7)函数tf.nn.conv1d(value, filters, stride, padding , use_cudnn_on_gpu=None,data_format=None,name=None)与二维卷积类似

该函数用来计算给定三维的输入和过滤器的情况下的一维卷积。

输入为三维,[batch, in_width, in_channels]

卷积核的维度为三维,少了一维filter_heigth,如[filter_width,in_channels, out_channels].

stride是一个正整数,代表卷积核向右移动每一步的长度。

(8)函数tf.nn.conv3d(input, filter, strides, padding, name=None)与二维卷积类似。

用来计算给定五维的输入和过滤器的情况下的三维卷积

与二维卷积相对比:

input的shape中多了一维in_depth,形状为[batch, in_depth, in_height, in_width, in_channels]

filter的shape中多了一维filter_depth,[filter_depth, filter_height, in_channel,channel_multiplierl]构成卷积核大小

strides的shape中多了一维strides_depth,  [strides_batch, strides_depth, strides_height, strides_width, strides_channel]

(9)函数tf.nn.conv3d_tranpose(value, filter, output_shape, strides, padding='SAME',name=None)与二维反卷积类似。



tensorflow实现卷积神经网络

卷积神经网络的简介: 相对于传统的图像分类,卷积神经网络(Convolutional Neural Network, CNN)提取的特征能够达到很好的效果,同时不需要将特征提取和分类训练两个过程分开...
  • wyl1813240346
  • wyl1813240346
  • 2018-04-17 11:03:32
  • 71

[行为识别论文详解]TSN(Temporal Segment Networks)

摘要 本文旨在设计有效的卷积网络体系结构用于视频中的动作识别,并在有限的训练样本下进行模型学习。TSN基于two-stream方法构建。 论文主要贡献: 提出了TSN(Temporal Seg...
  • zhang_can
  • zhang_can
  • 2018-03-19 22:29:29
  • 382

Tensorflow中卷积函数汇总

卷积函数是在一批图像上扫描的二维过滤器。卷积函数定义在tensorflow-1.1.0/tensorflow/python/ops下的nn_impl.py和nn_ops.py文件中。 (1)计算N维...
  • zSean
  • zSean
  • 2017-09-04 15:00:21
  • 992

4.1 Tensorflow:卷积函数

卷积卷积神经网络的结构其中,input为输入,conv为卷积层,由卷积核构成,pool为池层,由池化函数构成最后是全连接层与输出层,其负责对卷积层提取的特征进行处理以获得我们需要的结果卷积函数卷积函数...
  • FontThrone
  • FontThrone
  • 2017-08-04 01:12:27
  • 5818

深度学习小白——Tensorflow(二)卷积

本文记录用两层卷积网络实现训练MNIST数据集 先介绍一下所用核心函数 1.tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=N...
  • MargretWG
  • MargretWG
  • 2017-04-13 20:40:21
  • 4162

Tensorflow的反卷积(上采样)

文章出处:http://blog.csdn.net/mao_xiao_feng/article/details/71713358 反卷积操作是卷积的反向 如果你随时都记住上面强调的重点,那你...
  • guvcolie
  • guvcolie
  • 2017-08-06 18:11:04
  • 4160

TensorFlow 卷积层

TensorFlow 卷积层 让我们看下如何在 TensorFlow 里面实现 CNN。 TensorFlow 提供了 tf.nn....
  • sinat_32547403
  • sinat_32547403
  • 2017-07-10 21:21:11
  • 686

tensorflow中的卷积和池化解释

首先,卷积和池化的基本概念就不用多说了,写这个东西的太多了,这里主要说说tensorflow中的相关内容。 再看看tensorflow中关于这两个函数的接口定义: tf.nn.conv2d( ...
  • sophia_xw
  • sophia_xw
  • 2017-04-19 14:09:15
  • 1327

学习Tensorflow,反卷积

在深度学习网络结构中,各个层的类别可以分为这几种:卷积层,全连接层,relu层,pool层和反卷积层等。目前,在像素级估计和端对端学习问题中,全卷积网络展现了他的优势,里面有个很重要的层,将卷积后的f...
  • helei001
  • helei001
  • 2016-06-12 16:58:54
  • 11661

TensorFlow学习---tf.nn.conv2d实现卷积操作

tf.nn.conv2d是TensorFlow里面实现卷积的函数。 tf.nn.conv2d(input, filter, strides,padding, use_cudnn_on_gpu=None...
  • huahuazhu
  • huahuazhu
  • 2017-06-21 15:09:15
  • 284
收藏助手
不良信息举报
您举报文章:Tensorflow卷积函数
举报原因:
原因补充:

(最多只允许输入30个字)