在给定 input
和 4-D filters
张量的情况下计算二维卷积。
用法
tf.nn.conv2d(
input, filters, strides, padding, data_format='NHWC', dilations=None,
name=None
)
参数
-
input
一个Tensor
。必须是以下类型之一:half
,bfloat16
,float32
,float64
。秩至少为 4 的张量。维度顺序根据data_format
的值进行解释;将 all-but-inner-3 尺寸用作批次尺寸。详情见下文。 -
filters
一个Tensor
。必须与input
具有相同的类型。形状为[filter_height, filter_width, in_channels, out_channels]
的 4-D 张量 -
strides
长度为1
,2
或4
的ints
的 int 或列表。input
的每个维度的滑动窗口的步幅。如果给定单个值,则会在H
和W
维度中复制它。默认情况下,N
和C
维度设置为 1。维度顺序由data_format
的值确定,详情请参见下文。 -
padding
无论是string
"SAME"
或者"VALID"
指示要使用的填充算法的类型,或指示每个维度开始和结束处的显式填充的列表。看这里了解更多信息。当使用显式填充并且data_format 是"NHWC"
, 这应该是形式[[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]]
.当使用显式填充并且 data_format 是"NCHW"
, 这应该是形式[[0, 0], [0, 0], [pad_top, pad_bottom], [pad_left, pad_right]]
. -
data_format
一个可选的string
来自:"NHWC", "NCHW"
。默认为"NHWC"
。指定输入和输出数据的数据格式。使用默认格式"NHWC",数据按以下顺序存储:batch_shape + [height, width, channels]
。或者,格式可以是"NCHW",数据存储顺序为:batch_shape + [channels, height, width]
。 -
dilations
长度为1
,2
或4
的ints
的 int 或列表,默认为 1。input
的每个维度的膨胀因子。如果给定单个值,则会在H
和W
维度中复制它。默认情况下,N
和C
维度设置为 1。如果设置为 k > 1,则该维度上的每个过滤器元素之间将有 k-1 个跳过的单元格。维度顺序由data_format
的值决定,详见上文。如果 4-d 张量必须为 1,则批量和深度维度的膨胀。 -
name
操作的名称(可选)。
返回
-
一个
Tensor
。具有与input
相同的类型和相同的外部批次形状。
input
张量的秩可能为 4
或更高,其中形状尺寸 [:-3]
被认为是批量尺寸( batch_shape
)。
给定一个形状的输入张量batch_shape + [in_height, in_width, in_channels]
和形状的过滤器/内核张量[filter_height, filter_width, in_channels, out_channels]
,此操作执行以下操作:
- 将过滤器展平为具有形状的二维矩阵
[filter_height * filter_width * in_channels, output_channels]
. - 从输入张量中提取图像块以形成形状的虚拟张量
[batch, out_height, out_width, filter_height * filter_width * in_channels]
. - 对于每个补丁,right-multiplies 过滤器矩阵和图像补丁向量。
详细地说,使用默认的 NHWC 格式,
output[b, i, j, k] =
sum_{di, dj, q} input[b, strides[1] * i + di, strides[2] * j + dj, q] *
filter[di, dj, q, k]
必须有 strides[0] = strides[3] = 1
。对于相同水平和垂直步幅的最常见情况,strides = [1, stride, stride, 1]
。
使用示例:
x_in = np.array([[
[[2], [1], [2], [0], [1]],
[[1], [3], [2], [2], [3]],
[[1], [1], [3], [3], [0]],
[[2], [2], [0], [1], [1]],
[[0], [0], [3], [1], [2]], ]])
kernel_in = np.array([
[ [[2, 0.1]], [[3, 0.2]] ],
[ [[0, 0.3]],[[1, 0.4]] ], ])
x = tf.constant(x_in, dtype=tf.float32)
kernel = tf.constant(kernel_in, dtype=tf.float32)
tf.nn.conv2d(x, kernel, strides=[1, 1, 1, 1], padding='VALID')
<tf.Tensor:shape=(1, 4, 4, 2), dtype=float32, numpy=..., dtype=float32)>
相关用法
- Python tf.nn.convolution用法及代码示例
- Python tf.nn.compute_average_loss用法及代码示例
- Python tf.nn.ctc_greedy_decoder用法及代码示例
- Python tf.nn.embedding_lookup_sparse用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代码示例
- Python tf.nn.dropout用法及代码示例
- Python tf.nn.gelu用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代码示例
- Python tf.nn.embedding_lookup用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代码示例
- Python tf.nn.local_response_normalization用法及代码示例
- Python tf.nn.scale_regularization_loss用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代码示例
- Python tf.nn.max_pool用法及代码示例
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代码示例
- Python tf.nn.l2_loss用法及代码示例
- Python tf.nn.log_softmax用法及代码示例
- Python tf.nn.weighted_cross_entropy_with_logits用法及代码示例
- Python tf.nn.dilation2d用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.get_weights用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.conv2d。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。