深度二维卷积。
用法
tf.nn.depthwise_conv2d(
input, filter, strides, padding, data_format=None, dilations=None, name=None
)
参数
-
input
4-D,形状根据data_format
。 -
filter
4-D 形状[filter_height, filter_width, in_channels, channel_multiplier]
. -
strides
大小为 4 的一维。input
的每个维度的滑动窗口的步幅。 -
padding
控制在应用卷积之前如何填充图像。可以是字符串"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
输入的数据格式。 "NHWC"(默认)或"NCHW"。 -
dilations
大小为 2 的 1-D。我们在空洞卷积中跨height
和width
维度对输入值进行采样的膨胀率。如果大于 1,则所有步幅值都必须为 1。 -
name
此操作的名称(可选)。
返回
-
一个 4-D
Tensor
形状根据data_format
。例如,对于"NHWC" 格式,形状为[batch, out_height, out_width, in_channels * channel_multiplier].
给定一个 4D 输入张量('NHWC' 或 'NCHW' 数据格式)和形状为 [filter_height, filter_width, in_channels, channel_multiplier]
的滤波器张量,其中包含深度为 1 的 in_channels
卷积滤波器,depthwise_conv2d
对每个输入通道应用不同的滤波器(从 1通道到每个通道的channel_multiplier
通道),然后将结果连接在一起。输出具有in_channels * channel_multiplier
通道。
详细地说,使用默认的 NHWC 格式,
output[b, i, j, k * channel_multiplier + q] = sum_{di, dj}
filter[di, dj, k, q] * input[b, strides[1] * i + rate[0] * di,
strides[2] * j + rate[1] * dj, k]
必须有 strides[0] = strides[3] = 1
。对于相同水平和垂直步幅的最常见情况,strides = [1, stride, stride, 1]
。如果 rate
中的任何值大于 1,我们将执行深度深度卷积,在这种情况下,strides
张量中的所有值都必须等于 1。
使用示例:
x = np.array([
[1., 2.],
[3., 4.],
[5., 6.]
], dtype=np.float32).reshape((1, 3, 2, 1))
kernel = np.array([
[1., 2.],
[3., 4]
], dtype=np.float32).reshape((2, 1, 1, 2))
tf.nn.depthwise_conv2d(x, kernel, strides=[1, 1, 1, 1],
padding='VALID').numpy()
array([[[[10., 14.],
[14., 20.]],
[[18., 26.],
[22., 32.]]]], dtype=float32)
tf.nn.depthwise_conv2d(x, kernel, strides=[1, 1, 1, 1],
padding=[[0, 0], [1, 0], [1, 0], [0, 0]]).numpy()
array([[[[ 0., 0.],
[ 3., 4.],
[ 6., 8.]],
[[ 0., 0.],
[10., 14.],
[14., 20.]],
[[ 0., 0.],
[18., 26.],
[22., 32.]]]], dtype=float32)
相关用法
- Python tf.nn.depth_to_space用法及代码示例
- Python tf.nn.dropout用法及代码示例
- Python tf.nn.dilation2d用法及代码示例
- Python tf.nn.embedding_lookup_sparse用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代码示例
- 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.ctc_greedy_decoder用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.get_weights用法及代码示例
- Python tf.nn.compute_average_loss用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.depthwise_conv2d。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。