计算N-D 卷积的总和(实际上是cross-correlation)。
用法
tf.compat.v1.nn.convolution(
input, filter, padding, strides=None, dilation_rate=None, name=None,
data_format=None, filters=None, dilations=None
)
参数
-
input
一个 (N+2)-DTensor
类型为T
,形状[batch_size] + input_spatial_shape + [in_channels]
如果 data_format 不以 "NC" 开头(默认),或者[batch_size, in_channels] + input_spatial_shape
如果 data_format 以 "NC" 开头. -
filter
(N+2)-DTensor
与input
具有相同类型和形状spatial_filter_shape + [in_channels, out_channels]
。 -
padding
一个字符串,或者"VALID"
或者"SAME"
.填充算法。"valid"
表示没有填充。"same"
导致在输入的左/右或上/下均匀填充,以便在步幅为 1 时输出具有与输入相同的高度/宽度尺寸。请参阅这里了解更多信息。 -
strides
可选的。 N 个整数的序列 >= 1。指定输出步幅。默认为 [1]*N。如果任何 strides 值 > 1,则 dilation_rate 的所有值都必须为 1。 -
dilation_rate
可选的。 N 个整数的序列 >= 1。指定滤波器上采样/输入下采样率。在文献中,有时将相同的参数称为input stride
或dilation
。用于卷积的有效滤波器大小将为spatial_filter_shape + (spatial_filter_shape - 1) * (rate - 1)
,通过在每个空间维度 i 中原始滤波器的连续元素之间插入 (dilation_rate[i]-1) 零来获得。如果 dilation_rate 的任何值 > 1,则所有步幅值都必须为 1。 -
name
返回张量的可选名称。 -
data_format
一个字符串或无。指定input
和输出的通道维度是最后一个维度(默认,或者如果data_format
不以"NC" 开头),还是第二个维度(如果data_format
以"NC" 开头)。对于 N=1,有效值为 "NWC"(默认)和 "NCW"。对于 N=2,有效值为 "NHWC"(默认)和 "NCHW"。对于 N=3,有效值为 "NDHWC"(默认)和 "NCDHW"。
返回
-
A
Tensor
与相同类型input
形状的`[batch_size] + output_spatial_shape + [out_channels]`
如果 data_format 为 None 或不以 "NC" 开头,或
`[batch_size, out_channels] + output_spatial_shape`
如果 data_format 以 "NC" 开头,其中
output_spatial_shape
取决于padding
的值。如果填充 == "SAME":output_spatial_shape[i] = ceil(input_spatial_shape[i] /strides[i])
如果填充 == "VALID":output_spatial_shape[i] = ceil((input_spatial_shape[i] - (spatial_filter_shape[i]-1) * dilation_rate[i]) /strides[i])。
抛出
-
ValueError
如果输入/输出深度与filter
形状不匹配,如果填充不是"VALID"
或"SAME"
,或者如果 data_format 无效。
这也支持通过可选的strides
参数输出跨步或通过可选的dilation_rate
参数支持atrous 卷积(也称为带孔的卷积或扩张卷积,基于法语单词"trous" 表示英语中的孔)。然而,目前,atrous 卷积不支持输出跨步。
具体来说,在data_format
不以"NC"开头的情况下,给定一个秩为(N+2)的input
形状的张量
[num_batches, input_spatial_shape[0], ..., input_spatial_shape[N-1], num_input_channels],
a rank (N+2) filter
形状张量
[spatial_filter_shape[0], ..., spatial_filter_shape[N-1], num_input_channels, num_output_channels],
一个可选的 dilation_rate
形状 N 的张量(默认为 [1]N),指定滤波器上采样/输入下采样率,以及一个可选的 N 步长列表(默认为 [1]N),这将为每个 N-D 空间输出计算位置(x[0],...,x[N-1]):
output[b, x[0], ..., x[N-1], k] =
sum_{z[0], ..., z[N-1], q}
filter[z[0], ..., z[N-1], q, k] *
padded_input[b,
x[0]*strides[0] + dilation_rate[0]*z[0],
...,
x[N-1]*strides[N-1] + dilation_rate[N-1]*z[N-1],
q]
其中 b 是批次的索引,k 是输出通道号,q 是输入通道号,z 是过滤器内的N-D 空间偏移量。在这里,padded_input
是通过使用 (spatial_filter_shape-1) * dilation_rate + 1
的有效空间滤波器形状和输出跨步 strides
对输入进行零填充来获得的。
如果 data_format
确实以 "NC"
开头,则 input
和输出(但不是 filter
)简单地转置如下:
卷积(输入,data_format,**kwargs)= tf.transpose(卷积(tf.transpose(输入,[0] + range(2,N+2)+ [1]),**kwargs),[0 , N+1] + 范围(1, N+1))
要求 1 <= N <= 3。
相关用法
- Python tf.compat.v1.nn.conv2d用法及代码示例
- Python tf.compat.v1.nn.ctc_loss用法及代码示例
- Python tf.compat.v1.nn.static_rnn用法及代码示例
- Python tf.compat.v1.nn.sufficient_statistics用法及代码示例
- Python tf.compat.v1.nn.dynamic_rnn用法及代码示例
- Python tf.compat.v1.nn.embedding_lookup_sparse用法及代码示例
- Python tf.compat.v1.nn.separable_conv2d用法及代码示例
- Python tf.compat.v1.nn.depthwise_conv2d_native用法及代码示例
- Python tf.compat.v1.nn.weighted_cross_entropy_with_logits用法及代码示例
- Python tf.compat.v1.nn.depthwise_conv2d用法及代码示例
- Python tf.compat.v1.nn.safe_embedding_lookup_sparse用法及代码示例
- Python tf.compat.v1.nn.nce_loss用法及代码示例
- Python tf.compat.v1.nn.sampled_softmax_loss用法及代码示例
- Python tf.compat.v1.nn.pool用法及代码示例
- Python tf.compat.v1.nn.sigmoid_cross_entropy_with_logits用法及代码示例
- Python tf.compat.v1.nn.rnn_cell.MultiRNNCell用法及代码示例
- Python tf.compat.v1.nn.erosion2d用法及代码示例
- Python tf.compat.v1.nn.raw_rnn用法及代码示例
- Python tf.compat.v1.nn.dilation2d用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.nn.convolution。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。