2017-02-09 47 views
1

Keras中,與tf.nn.conv2d_transpose對應的圖層(函數)在Tensorflow中有哪些?我曾看到評論說我們可以Just use combinations of UpSampling2D and Convolution2D as appropriate。是對的嗎?與tf.nn.conv2d_transpose對應的Keras圖層(函數)

在以下兩個示例中,它們都使用這種組合。

1)在Building Autoencoders in Keras中,作者按如下構建解碼器。

enter image description here

2)在一個u-uet implementation,作者建立去卷積如下

up6 = merge([UpSampling2D(size=(2, 2))(conv5), conv4], mode='concat', concat_axis=1) 
conv6 = Convolution2D(256, 3, 3, activation='relu', border_mode='same')(up6) 
conv6 = Convolution2D(256, 3, 3, activation='relu', border_mode='same')(conv6) 

回答

1

Keras相應層是Deconvolution2D層。

值得一提的是,你應該非常小心他們,因爲他們有時可能會以意想不到的方式行事。我強烈建議您閱讀this Stack Overflow問題(及其答案),然後再開始使用此圖層。

UPDATE:

  1. 卷積是被添加相對最近的一層 - 也許這就是爲什麼人們建議您使用Convolution2D * UpSampling2D的原因。
  2. 因爲它比較新 - 在某些情況下可能無法正常工作。它也需要一些經驗才能正確使用它們。
  3. 實際上 - 從數學的角度來看 - 每個解卷積都可以作爲Convolution2DUpSampling2D的組合來呈現 - 所以也許這就是它在您提供的文本中被提及的原因。

更新2:

確定。我想我找到了一個簡單的解釋,爲什麼Deconvolution2D可能以Convolution2DUpSampling2D的組合形式呈現。我們將使用定義Deconvolution2D是一些卷積層的漸變。讓我們考慮三種最常見的情況:

  1. 最簡單的是沒有任何池的Convolutional2D。在這種情況下 - 因爲它是線性運算 - 它的梯度是一個函數本身 - 所以Convolution2D
  2. 更棘手的是梯度Convolution2DAveragePooling。所以:(AveragePooling2D * Convolution2D)' = AveragePooling2D' * Convolution2D'。但是AveragePooling2D = UpSample2D * constant的梯度 - 所以在介詞爲真的情況下也是如此。
  3. 最棘手的是與MaxPooling2D。在這種情況下仍然(MaxPooling2D * Convolution2D)' = MaxPooling2D' * Convolution2D'MaxPooling2D' != UpSample2D。但在這種情況下,可以很容易地找到一個簡單Convolution2D這使得MaxPooling2D' = Convolution2D * UpSample2D(直觀地 - 的MaxPooling2D梯度是零矩陣只有一個1在其對角線作爲Convolution2D可能表達的矩陣運算 - 它也可以由身份表示注射矩陣到MaxPooling2D梯度)。所以: (MaxPooling2D * Convolution2D)' = UpSampling2D * Convolution2D * Convolution2D = UpSampling2D * Convolution2D'

的最後應注意的證明的所有部分已表明Deconvolution2DUpSampling2D的組合物和Convolution2D代替相反。人們可以很容易地證明,組成UpSampling2DConvolution2D的形式的每個功能可以容易地以UpSampling2DConvolution2D的組成的形式呈現。所以基本上 - 證明完成:)

+0

嗨馬爾欽,感謝您的答覆。令我困惑的是,在其他一些情況下,基於「upsampling」和「convolution2D」的組合實現了類似的目標。Deconvolution2D和這個組合的區別是什麼?我更新了原始文章,包括 – user297850

+0

我更新了我的評論 –

+0

謝謝,我可以安全地假設他們在數學上是等價的嗎?是否有任何數學派生詞?謝謝。 – user297850