深度二維卷積。
用法
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。