Tensorflow中卷积函数汇总
来源:互联网 发布:淘宝商家物流信息 编辑:程序博客网 时间:2024/05/17 04:14
卷积函数是在一批图像上扫描的二维过滤器。卷积函数定义在tensorflow-1.1.0/tensorflow/python/ops下的nn_impl.py和nn_ops.py文件中。
(1)计算N维卷积的和的函数tf.nn.convolution()
tf.nn.convolution(input,filter,padding,strides=None,dilation_rate=None,name=None,data_format=None)(2)对一个四维的输入数据input和四维的卷积核filter进行操作,然后对输入数据进行一个二维的卷积操作,最后得到卷积之后的结果。
tf.nn.conv2d(input,filter, strides, padding, use_cudnn_on_gpu=None, name=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:为这个操作取一个名字;
import tensorflow as tfimport osimport numpy as npinput_data= tf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)filter_data=tf.Variable(np.random.rand(2,2,3,4),dtype=np.float32)y = tf.nn.conv2d(input_data,filter_data,strides=[1,3,3,1],padding='SAME')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]
输入的结果为: Tensor("Conv2D:0", shape=(10, 3, 3, 4), dtype=float32)(3)函数tf.nn.depthwise_conv2d(input, filter, strides, padding, name=None,data_format=None)
import tensorflow as tfimport osimport numpy as npinput_data= tf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)filter_data=tf.Variable(np.random.rand(2,2,3,4),dtype=np.float32)y = tf.nn.depthwise_conv2d(input_data,filter_data,strides=[1,3,3,1],padding='SAME')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
输入的结果为: 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中每一维的对应移动步数
import tensorflow as tfimport osimport numpy as npinput_data= tf.Variable(np.random.rand(1,9,9,3),dtype=np.float32)depthwise_filter=tf.Variable(np.random.rand(2,2,3,4),dtype=np.float32)pointwise_filter = tf.Variable(np.random.rand(1,1,12,20),dtype=np.float32)y = tf.nn.separable_conv2d(input_data,depthwise_filter,pointwise_filter,strides=[1,3,3,1],padding='SAME')print('输入的结果为:', y)
输入的结果为: 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中卷积函数汇总
- 4.1 Tensorflow:卷积函数
- tensorflow学习: 卷积函数
- Tensorflow中卷积神经网络之卷积层
- tensorflow中conv2d卷积测试
- tensorflow:卷积函数----tf.nn.conv2d
- Tensorflow 卷积
- opencv中卷积函数cvFilter2D
- [TensorFlow 学习笔记-04]卷积函数之tf.nn.conv2d
- Tensorflow之池化函数汇总
- TensorFlow中CNN/卷积神经网络算法的理解
- TensorFlow在MNIST的卷积神经网络中例子
- 在TensorFlow中实现文本分类的卷积神经网络
- tensorflow学习笔记一之tensorflow实现卷积部分常用函数
- tensorflow中遇到的问题汇总
- 4用于cifar10的卷积神经网络-4.7TensorFlow的汇总类Summary和FileWriter用法
- 学习Tensorflow,反卷积
- TensorFlow实现卷积神经网络
- 网络编程(UDP传输并将使用多线程进行优化)
- Git分支
- Struts2 Part5
- spring
- 深入浅出数据结构C语言版(14)——散列表
- Tensorflow中卷积函数汇总
- 去去去
- 通信协议一(HTTP)
- 一步步带你做vue后台管理框架(一)——介绍框架
- RDD论文翻译 --弹性分布式数据集:一种基于内存的集群计算的容错性抽象方法
- 有感受到环保风暴带来的影响吗?
- 微信小程序 自定义消息提示框
- pipline
- Android的内存泄漏分析