Tensorflow的卷积操作

Tendorflow中提供了对一维数据、二维数据、三维数据的卷积操作,分别是tf.nn.conv1d()、tf.nn.conv2d()、tf.nn.conv3d().

以tf.nn.conv2d()函数做操作说明:

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

input:  输入数据。这是一个4维张量,每一维的含义是:[batch的大小, 图片的高度, 图片的宽度,图片的通道数]。 第一个batch大小的意思是:我们做训练时,通常不会一个一个样本去训练,二是会好多个样本一块输入,目的是为了让学习过程不要抖动太剧烈,收敛方向更加一致。batch的大小通常会对收敛速度和最后效果有一定影响。第二个和第三个值表示图片的高和宽的像素值。第四个值表示图片的通道数。比如,输入的图片可能是RGB这个3颜色通道的,在经过多个卷积核之后,也会变成和卷积核个数对应的通道数。

filter:卷积核的参数。这也是一个4维张量,每一维的含义是:[卷积核的高,卷积核的宽,输入的通道数,输出的通道数]。前面两个值分别是两个卷积核的高和宽,第三个值表示进行卷积操作时输入的数据有多少个通道,第四个值是输出的通道数,相当于这一层的卷积运算有多少个卷积核。

strides:步长。这是一个长度为4 的向量。第一个值表示batch的大小,第二个值表示在卷积核进行移动时垂直方向上每次移动的距离,第三个值表示在卷积进行移动时水平方向上每次移动的距离,第四个值表示通道数。

padding:表示在进行卷积操作时,是否进行边缘填充。取值类型是字符串,可选取的值有SAME(补零)和VALID

VALID模式下:输出结果的大小为:

out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))  #strides[1]垂直方向上移动的步长

out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))      #strides[3水平方向上移动的步长

SAME模式下,输出结果的大小:

out_height = ceil(float(in_height) / float(strides[1]))  #strides[1]垂直方向上移动的步长

out_width = ceil(float(in_width) / float(strides[2]))      #strides[3水平方向上移动的步长

 

use_cudnn_on_gpu:  bool类型,是否使用cuDNN加速,默认为true。

data_format: 字符串类型,可选值为“NHWC”和“NCHW”。默认值为“NHWC”,表示输入数据的格式是[batch,height,width,channels],其中字母N、H、W和C分别代表batch个数、height(高度)、width(宽度)和channels(通道个数)。

name名字,操作的自定义名字,为字符串类型。

 

TensoerFlow的池化操作:

最大池化和平均池化,对应tensorflow中的函数是tf.nn.max_pool和tf.nn.avg_pool。

tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

tf.nn.avg_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

 

value:输入数据,和前面的卷积的输入数据的含义一样,是一个4维张量,每一维的值的含义是:[batch大小,图片高度,图片宽度,图片的通道数]。

ksize: 池化窗口的大小,是一个具有4个长度大小的向量[batch, height, width, channels],其中第一个值是batch的大小。第二个值是池化窗口的高度,第三个值是池化窗口的宽度,第四个值是图片的通道数。

strides: 步长。其含义和卷积操作的步长参数一样,

padding:填充参数,其含义和卷积操作的padding参数一样。

data_format: 输入数据的格式,它为字符串类型,可选的值有NHWC和NCHW,其含义和卷积函数中的data_format 一样。

name:操作的名字,为字符串类型。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值