首页 > 编程知识 正文

conv2d函数,Conv2d

时间:2023-05-04 17:23:27 阅读:24417 作者:3494

卷积函数tf.nn.conv2d

1. tf.nn.conv2d

在TensorFlow的程序中加入卷积层非常简单。 最常用的方法是tf.nn.conv2D方法,用于向计算图中添加2d卷积运算符。 简单的使用方法如下

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

2 .参数

除了在name参数中指定操作的name以外,与方法相关的五个参数:

第一个参数input :需要卷积的输入图像。 要求是具有形状的Tensor,如[batch,in_height,in_width,in_channels]。 具体含义是[训练时1个batch的图像数、图像的高度

第二个参数filter :卷积核大小。 要求是Tensor,有[filter_height,filter_width,in_channels,out_channels]这样的shape,具体意思是[卷积] 第三维in_channels是参数input的第四维

第三个参数strides :表示图像中每个维的卷积步骤。 这是一维向量,长度为4,strides[0]=strides[3]=1

第四个参数填充:演示如何处理边界。 字符串类型的量只能是“SAME”或“VALID”。 此值不同,卷积方法、有效填充和边缘填充也不同

第五个参数: use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认值为true

data_format: string类型的量NHWC、NCHW,默认值为NHWC。 指定输入输出数据格式。 默认格式为“NHWC”。 数据按以下顺序存储: [batch,in_height,in_width,in_channels]。 也可以按[batch]的顺序保存数据。

结果返回Tensor。 此输出是常见的功能图。 类型与输入相同

3 .边界填充padding

卷积内核与图像重叠时,必须位于图像边界内。 在某些情况下,两者的大小不一致。 一个合适的修复方法是填充图像中缺少的区域。 也就是说,填充边界。

如果TensorFlow用0填充边界,或者卷积内核与图像大小不匹配,但不能超出图像边界,则会发生错误。

tf.nn.conv2d的零填充数或错误状态由参数填充控制,其值可以是SAME或VALID。

SAME :卷积输出与输入的大小相同。 在此,计算如何跨越图像时不考虑滤镜的大小。 如果选中此选项,则缺少的像素将由0填充,而卷积内核扫描的像素数将超过图像的实际像素数。

VALID :计算卷积内核在图像上的跨越方式时,必须考虑过滤器的大小。 这将确保卷积核尽可能不越过图像边界。 在某些情况下,边界可能会被填满。

计算卷积时,建议考虑图像的大小。 如果需要边界填充,则TensorFlow有几个内置选项。 在大多数简单的情况下,SAME是个好选择。 如果在指定跨距参数后输入和卷积内核工作正常,建议使用VALID。 有关这两个参数的详细信息,请参见

4 .数据格式data_format

tf.nn.conv2d文档详细介绍了如何更改数据格式(data_format ),使input、kernel和strides遵循与以前使用的格式不同的格式

如果勇敢输入的羊不符合[batch_size、height、width、channel]标准,更改此格式会很有用。 除了修改输入的格式以匹配标准外,还可以修改data_format参数以使用不同的布局。

data_format :此参数可以是" NHWC "或" NCHW "。 默认值为" NHWC ",用于指定输入输出数据的格式。

对于默认格式" NHWC ",数据存储顺序为[batch,in_height,in_width,in_channels]。

如果此参数为“NCHW”,则数据的存储顺序为[batch,in_channels,in_height,in_width]。

数据格式定义:

n批次数据中勇敢的羊的数量.也就是batch_size

h每批数据中勇敢的羊的高度

w每批数据中勇敢的羊的宽度

每c批勇敢的羊频道数

技术交流学习,QQ微信:请添加631531977

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。