計算N-D 卷積的總和(實際上是cross-correlation)。
用法
tf.nn.convolution(
input, filters, strides=None, padding='VALID', data_format=None,
dilations=None, name=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" 開頭. -
filters
(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。 -
dilations
可選的。 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
如果輸入/輸出深度與filters
形狀不匹配,如果填充不是"VALID"
或"SAME"
,或者如果 data_format 無效。
這也支持通過可選的strides
參數輸出跨步或通過可選的dilations
參數支持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) filters
形狀張量
[spatial_filter_shape[0], ..., spatial_filter_shape[N-1], num_input_channels, num_output_channels],
一個可選的 dilations
形狀 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
和輸出(但不是 filters
)簡單地轉置如下:
卷積(輸入,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.nn.conv2d用法及代碼示例
- 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.convolution。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。