W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
tf.nn.atrous_conv2d(
value,
filters,
rate,
padding,
name=None
)
定義在:tensorflow/python/ops/nn_ops.py.
請(qǐng)參閱指南:神經(jīng)網(wǎng)絡(luò)>卷積運(yùn)算
Atrous卷積.
此函數(shù)是更通用的tf.nn.convolution的更簡(jiǎn)單的包裝器,僅用于向后兼容.您可以使用tf.nn.convolution來(lái)執(zhí)行1-D,2-D或3-D動(dòng)態(tài)卷積.
在給定4-D value和filters張量的情況下,計(jì)算二維動(dòng)態(tài)卷積,也稱為帶孔的卷積或擴(kuò)大的卷積.如果rate參數(shù)等于1,則執(zhí)行常規(guī)的2-D卷積.如果rate參數(shù)大于1,則執(zhí)行帶孔的卷積,對(duì)height和width維度中的每個(gè)rate像素采樣輸入值.這相當(dāng)于用一組上采樣濾波器將輸入卷積,這些濾波器是通過(guò)沿著height和width維度在濾波器的兩個(gè)連續(xù)值之間插入rate - 1零來(lái)產(chǎn)生的,因此名稱是atrous卷積或帶孔的卷積.
進(jìn)一步來(lái)說(shuō):
output[batch, height, width, out_channel] =
sum_{dheight, dwidth, in_channel} (
filters[dheight, dwidth, in_channel, out_channel] *
value[batch, height + rate*dheight, width + rate*dwidth, in_channel]
)
Atrous卷積允許我們明確地控制在完全卷積網(wǎng)絡(luò)中計(jì)算特征響應(yīng)的密集程度.與雙線性插值結(jié)合使用,它為 conv2d_transpose 在密集的預(yù)測(cè)任務(wù)(如語(yǔ)義圖像分割、光流計(jì)算或深度估計(jì)) 中提供了一種替代方案.它還允許我們有效地?cái)U(kuò)大濾波器的視野,而不增加參數(shù)的數(shù)量或計(jì)算量.
有關(guān)atrous卷積及其如何用于密集特征提取的描述,請(qǐng)參閱:使用深度卷積網(wǎng)絡(luò)和完全連接的CRF進(jìn)行語(yǔ)義圖像分割.通過(guò)擴(kuò)張卷積的多尺度上下文聚合中進(jìn)一步研究相同的操作.以前以不同方式有效使用atrous卷積,包含:OverFeat:使用卷積網(wǎng)絡(luò)進(jìn)行集成識(shí)別,定位和檢測(cè)以及使用深度最大池匯聚神經(jīng)網(wǎng)絡(luò)的快速圖像掃描.
有許多不同的方法可以實(shí)現(xiàn)atrous卷積(參見(jiàn)上面的參考文獻(xiàn)).這里的實(shí)現(xiàn)減少了:
atrous_conv2d(value, filters, rate, padding=padding)
進(jìn)行以下三項(xiàng)操作:
paddings = ...
net = space_to_batch(value, paddings, block_size=rate)
net = conv2d(net, filters, strides=[1, 1, 1, 1], padding="VALID")
crops = ...
net = batch_to_space(net, crops, block_size=rate)
高級(jí)用法.請(qǐng)注意以下優(yōu)化:具有相同rate參數(shù),'SAME' padding和具有奇數(shù)高度/寬度的過(guò)濾器的atrous_conv2d操作序列:
net = atrous_conv2d(net, filters1, rate, padding="SAME")
net = atrous_conv2d(net, filters2, rate, padding="SAME")
...
net = atrous_conv2d(net, filtersK, rate, padding="SAME")
可以在計(jì)算和內(nèi)存方面等效地執(zhí)行:
pad = ... # padding so that the input dims are multiples of rate
net = space_to_batch(net, paddings=pad, block_size=rate)
net = conv2d(net, filters1, strides=[1, 1, 1, 1], padding="SAME")
net = conv2d(net, filters2, strides=[1, 1, 1, 1], padding="SAME")
...
net = conv2d(net, filtersK, strides=[1, 1, 1, 1], padding="SAME")
net = batch_to_space(net, crops=pad, block_size=rate)
因?yàn)楫?dāng)它們各自的paddings和crops輸入相同時(shí),一對(duì)具有相同block_size的連續(xù)的space_to_batch和batch_to_space操作會(huì)抵消.
參數(shù):
返回:
與value具有相同類型的Tensor.帶有'VALID``填充的輸出形狀是:
[batch, height - 2 * (filter_width - 1),
width - 2 * (filter_height - 1), out_channels]
帶'SAME'填充的輸出形狀是:
[batch, height, width, out_channels]
可能引發(fā)的異常:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: