最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的

 更新時(shí)間:2020年04月20日 11:51:40   作者:xf__mao  
這篇文章主要介紹了Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

實(shí)驗(yàn)環(huán)境:tensorflow版本1.2.0,python2.7

介紹

關(guān)于空洞卷積的理論可以查看以下鏈接,這里我們不詳細(xì)講理論:

1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional networks for semantic segmentation[C]. Computer Vision and Pattern Recognition, 2015.

2.Yu, Fisher, and Vladlen Koltun. “Multi-scale context aggregation by dilated convolutions.” arXiv preprint arXiv:1511.07122 (2015).

3.如何理解空洞卷積(dilated convolution)?

其實(shí)用一句話概括就是,在不用pooling的情況下擴(kuò)大感受野(pooling層會(huì)導(dǎo)致信息損失)

為了閱讀方便再貼一些相關(guān)鏈接:

【TensorFlow】tf.nn.conv2d是怎樣實(shí)現(xiàn)卷積的?

【TensorFlow】tf.nn.conv2d_transpose是怎樣實(shí)現(xiàn)反卷積的?

慣例先展示函數(shù):

tf.nn.atrous_conv2d(value,filters,rate,padding,name=None)

除去name參數(shù)用以指定該操作的name,與方法有關(guān)的一共四個(gè)參數(shù):

value:
指需要做卷積的輸入圖像,要求是一個(gè)4維Tensor,具有[batch, height, width, channels]這樣的shape,具體含義是[訓(xùn)練時(shí)一個(gè)batch的圖片數(shù)量, 圖片高度, 圖片寬度, 圖像通道數(shù)]

filters:
相當(dāng)于CNN中的卷積核,要求是一個(gè)4維Tensor,具有[filter_height, filter_width, channels, out_channels]這樣的shape,具體含義是[卷積核的高度,卷積核的寬度,圖像通道數(shù),卷積核個(gè)數(shù)],同理這里第三維channels,就是參數(shù)value的第四維

rate:
要求是一個(gè)int型的正數(shù),正常的卷積操作應(yīng)該會(huì)有stride(即卷積核的滑動(dòng)步長(zhǎng)),但是空洞卷積是沒有stride參數(shù)的,這一點(diǎn)尤其要注意。取而代之,它使用了新的rate參數(shù),那么rate參數(shù)有什么用呢?它定義為我們?cè)谳斎雸D像上卷積時(shí)的采樣間隔,你可以理解為卷積核當(dāng)中穿插了(rate-1)數(shù)量的“0”,把原來(lái)的卷積核插出了很多“洞洞”,這樣做卷積時(shí)就相當(dāng)于對(duì)原圖像的采樣間隔變大了。具體怎么插得,可以看后面更加詳細(xì)的描述。此時(shí)我們很容易得出rate=1時(shí),就沒有0插入,此時(shí)這個(gè)函數(shù)就變成了普通卷積。

padding:
string類型的量,只能是”SAME”,”VALID”其中之一,這個(gè)值決定了不同邊緣填充方式。

ok,完了,到這就沒有參數(shù)了,或許有的小伙伴會(huì)問那“stride”參數(shù)呢。其實(shí)這個(gè)函數(shù)已經(jīng)默認(rèn)了stride=1,也就是滑動(dòng)步長(zhǎng)無(wú)法改變,固定為1。

結(jié)果返回一個(gè)Tensor,填充方式為“VALID”時(shí),返回[batch,height-2*(filter_width-1),width-2*(filter_height-1),out_channels]的Tensor,填充方式為“SAME”時(shí),返回[batch, height, width, out_channels]的Tensor,這個(gè)結(jié)果怎么得出來(lái)的?先不急,我們通過一段程序形象的演示一下空洞卷積。

實(shí)驗(yàn)

首先創(chuàng)建一張2通道圖

img = tf.constant(value=[[[[1],[2],[3],[4]],[[1],[2],[3],[4]],[[1],[2],[3],[4]],[[1],[2],[3],[4]]]],dtype=tf.float32)
img = tf.concat(values=[img,img],axis=3)

然后用一個(gè)3*3卷積核去做卷積

filter = tf.constant(value=1, shape=[3,3,2,5], dtype=tf.float32)
out_img = tf.nn.atrous_conv2d(value=img, filters=filter, rate=1)

建立好了img和filter,就可以做卷積了

out_img = tf.nn.conv2d(input=img, filter=filter, strides=[1,1,1,1], padding='VALID')

輸出5個(gè)channel,我們?cè)O(shè)置rate=1,此時(shí)空洞卷積可以看做普通的卷積,分別在SAME和VALID模式下輸出如下:

ok,調(diào)整rate=2,繼續(xù)運(yùn)行程序

out_img = tf.nn.atrous_conv2d(value=img, filters=filter, rate=2, padding='SAME')

查看輸出結(jié)果

[[[[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]
[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]]

[[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]
[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]]

[[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]
[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]]

[[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]
[ 16. 16. 16. 16. 16.]
[ 24. 24. 24. 24. 24.]]]]

這個(gè)結(jié)果怎么出來(lái)的呢?再用一張圖

這里我們看到rate=2時(shí),通過穿插“0”,卷積核由3*3膨脹到了5*5。再看看“VALID”模式下,會(huì)發(fā)生什么?

直接報(bào)錯(cuò)了。因?yàn)榫矸e核的大小已經(jīng)超過了原圖大小

好了,看到這里相信大家對(duì)于空洞卷積有了基本的了解了。那么,填充方式為“VALID”時(shí),返回[batch,height-2*(filter_width-1),width-2*(filter_height-1),out_channels]的Tensor,這個(gè)結(jié)果,相信大家就可以證明了。

代碼清單

import tensorflow as tf


img = tf.constant(value=[[[[1],[2],[3],[4]],[[1],[2],[3],[4]],[[1],[2],[3],[4]],[[1],[2],[3],[4]]]],dtype=tf.float32)
img = tf.concat(values=[img,img],axis=3)
filter = tf.constant(value=1, shape=[3,3,2,5], dtype=tf.float32)
out_img1 = tf.nn.atrous_conv2d(value=img, filters=filter, rate=1, padding='SAME')
out_img2 = tf.nn.atrous_conv2d(value=img, filters=filter, rate=1, padding='VALID')
out_img3 = tf.nn.atrous_conv2d(value=img, filters=filter, rate=2, padding='SAME')

#error
#out_img4 = tf.nn.atrous_conv2d(value=img, filters=filter, rate=2, padding='VALID')

with tf.Session() as sess:
  print 'rate=1, SAME mode result:'
  print(sess.run(out_img1))

  print 'rate=1, VALID mode result:'
  print(sess.run(out_img2))

  print 'rate=2, SAME mode result:'
  print(sess.run(out_img3))

  # error
  #print 'rate=2, VALID mode result:'
  #print(sess.run(out_img4))

到此這篇關(guān)于Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的的文章就介紹到這了,更多相關(guān)Tensorflow tf.nn.atrous_conv2d空洞卷積內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python字典生成式、集合生成式、生成器用法實(shí)例分析

    Python字典生成式、集合生成式、生成器用法實(shí)例分析

    這篇文章主要介紹了Python字典生成式、集合生成式、生成器用法,結(jié)合實(shí)例形式分析了Python字典生成式、集合生成式、生成器相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • python爬蟲scrapy框架之增量式爬蟲的示例代碼

    python爬蟲scrapy框架之增量式爬蟲的示例代碼

    這篇文章主要介紹了python爬蟲scrapy框架之增量式爬蟲的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python openpyxl模塊的使用詳解

    python openpyxl模塊的使用詳解

    這篇文章主要介紹了python openpyxl模塊的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python自動(dòng)生成代碼 使用tkinter圖形化操作并生成代碼框架

    Python自動(dòng)生成代碼 使用tkinter圖形化操作并生成代碼框架

    這篇文章主要為大家詳細(xì)介紹了Python自動(dòng)生成代碼,使用tkinter圖形化操作并生成代碼框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Linux中Python 環(huán)境軟件包安裝步驟

    Linux中Python 環(huán)境軟件包安裝步驟

    本文給大家分享的是在Linux系統(tǒng)中Python環(huán)境的安裝步驟,以及常用的軟件的安裝升級(jí),非常的實(shí)用,有需要的小伙伴可以參考下
    2016-03-03
  • 十一個(gè)案例帶你吃透Python函數(shù)參數(shù)

    十一個(gè)案例帶你吃透Python函數(shù)參數(shù)

    這篇文章主要通過十一個(gè)案例帶大家一起了解一下Python中的函數(shù)參數(shù),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Python中的省略號(hào)(Ellipsis)賦值方式詳解

    Python中的省略號(hào)(Ellipsis)賦值方式詳解

    在Python編程中,省略號(hào)(...)是一種特殊對(duì)象,主要用作函數(shù)占位、未實(shí)現(xiàn)的方法示例和NumPy數(shù)組處理,本文通過示例詳細(xì)解釋了省略號(hào)的賦值方式及其在不同編程場(chǎng)景下的應(yīng)用,幫助提升Python編程技巧
    2024-10-10
  • PyTorch?Autograd的核心原理和功能深入探究

    PyTorch?Autograd的核心原理和功能深入探究

    本文深入探討了PyTorch中Autograd的核心原理和功能,從基本概念、Tensor與Autograd的交互,到計(jì)算圖的構(gòu)建和管理,再到反向傳播和梯度計(jì)算的細(xì)節(jié),最后涵蓋了Autograd的高級(jí)特性
    2024-01-01
  • Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)

    Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)

    這篇文章主要介紹了Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python如何正確的操作字符串

    python如何正確的操作字符串

    Python是一種知道如何不妨礙你編寫程序的編程語(yǔ)言。它易于學(xué)習(xí),功能強(qiáng)大,足以構(gòu)建Web應(yīng)用程序并自動(dòng)化無(wú)聊的東西。本文是對(duì)常用字符串操作進(jìn)行了詳細(xì)的總結(jié)分析,希望對(duì)您有所幫助。
    2021-06-06

最新評(píng)論

化州市| 霍林郭勒市| 永新县| 西丰县| 清水县| 宝坻区| 休宁县| 晴隆县| 芷江| 松桃| 托里县| 仁化县| 莱西市| 富源县| 错那县| 报价| 惠州市| 区。| 阳高县| 基隆市| 上饶市| 桦甸市| 德令哈市| 仲巴县| 山东省| 三河市| 灵丘县| 通河县| 田东县| 阳高县| 通河县| 诏安县| 志丹县| 酒泉市| 临夏市| 山西省| 泾阳县| 简阳市| 蓝田县| 万年县| 句容市|