Tensorflow的反卷積(上採樣)

來源:互聯網
上載者:User

關於反卷積的簡單例子,可以參照我的另外一篇文章:

http://blog.csdn.net/guvcolie/article/details/77529683


文章出處:http://blog.csdn.net/mao_xiao_feng/article/details/71713358


反卷積操作是卷積的反向

如果你隨時都記住上面強調的重點,那你基本就理解一大半了,接下來通過一些函數的介紹為大家強化這個觀念

conv2d_transpose(value, filter, output_shape, strides, padding="SAME", data_format="NHWC", name=None)
 
除去name參數用以指定該操作的name,與方法有關的一共六個參數:第一個參數value:指需要做反卷積的輸入映像,它要求是一個Tensor第二個參數filter:卷積核,它要求是一個Tensor,具有[filter_height, filter_width, out_channels, in_channels]這樣的shape,具體含義是[卷積核的高度,卷積核的寬度,卷積核個數,映像通道數]第三個參數output_shape:反卷積操作輸出的shape,細心的同學會發現卷積操作是沒有這個參數的,那這個參數在這裡有什麼用呢。下面會解釋這個問題第四個參數strides:反卷積時在映像每一維的步長,這是一個一維的向量,長度4第五個參數padding:string類型的量,只能是"SAME","VALID"其中之一,這個值決定了不同的卷積方式第六個參數data_format:string類型的量,'NHWC'和'NCHW'其中之一,這是tensorflow新版本中新加的參數,它說明了value參數的資料格式。'NHWC'指tensorflow標準的資料格式[batch, height, width, in_channels],'NCHW'指Theano的資料格式,[batch, in_channels,height, width],當然預設值是'NHWC'開始之前務必瞭解卷積的過程,參考我的另一篇文章:http://blog.csdn.net/mao_xiao_feng/article/details/53444333首先定義一個單通道圖和3個卷積核
 
[python] view plain copy x1 = tf.constant(1.0, shape=[1,3,3,1])   kernel = tf.constant(1.0, shape=[3,3,3,1])   先別著急。我們不直接用反卷積函數,而是再定義一些圖 
 
[python] view plain copy x2 = tf.constant(1.0, shape=[1,6,6,3])   x3 = tf.constant(1.0, shape=[1,5,5,3])   x2是6×6的3通道圖,x3是5×5的3通道圖 好了,接下來對x3做一次卷積操作 
 
[python] view plain copy y2 = tf.nn.conv2d(x3, kernel, strides=[1,2,2,1], padding="SAME")   所以返回的y2是一個單通道的圖,如果你瞭解卷積過程,很容易看出來y2是[1,3,3,1]的Tensor,y2的結果如下: 
 
[python] view plain copy [[[[ 12.]      [ 18.]      [ 12.]]        [[ 18.]      [ 27.]      [ 18.]]        [[ 12.]      [ 18.]      [ 12.]]]]   
 
又一個很重要的部分。tf.nn.conv2d中的filter參數,是[filter_height, filter_width, in_channels, out_channels]的形式,而tf.nn.conv2d_transpose中的filter參數,是[filter_height, filter_width, out_channels,in_channels]的形式,注意in_channels和out_channels反過來了。因為兩者互為反向,所以輸入輸出要調換位置
既然y2是卷積操作的傳回值,那我們當然可以對它做反卷積,反卷積操作返回的Tensor,應該和x3的shape是一樣的(不難理解,因為是卷積的反過程)
 
[python] view plain copy y3 = tf.nn.conv2d_transpose(y2,kernel,output_shape=[1,5,5,3], strides=[1,2,2,1],padding="SAME")   好,現在返回的y3果然是[1,5,5,3]的Tensor,結果如下: 
 
[python] view plain copy [[[[ 12.  12.  12.]      [ 30.  30.  30.]      [ 18.  18.  18.]      [ 30.  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.