unpooling - tensorflow upsampling



重新使用Tensorflow中的圖層權重 (1)

有沒有人有我如何轉置這些權重的想法?

換位很簡單:

new_weights = tf.transpose(weights, perm=[0, 1, 3, 2])

將交換最後兩個軸。

不過,正如@Seven所提到的那樣,這樣做不足以解決這個錯誤,因為權重的總數發生了變化。

我正在使用tf.slim來實現一個自動編碼器。 我完全卷積與以下架構:

[conv, outputs = 1] => [conv, outputs = 15] => [conv, outputs = 25] =>
=> [conv_transpose, outputs = 25] => [conv_transpose, outputs = 15] => 
[conv_transpose, outputs = 1]

它必須是完全卷積的,我不能做匯集(更大的問題的限制)。 我想用捆綁的重量,所以

encoder_W_3 = decoder_W_1_Transposed 

(所以第一解碼器層的權重是最後一個編碼器層的權重,轉置)。

如果我重新使用權重的常規方法tfslim讓你重用它們,即重用= True,然後只提供您想要重用的圖層的作用域名稱,我得到的大小問題:

ValueError: Trying to share variable cnn_block_3/weights, but specified shape (21, 11, 25, 25) and found shape (21, 11, 15, 25).

這是有道理的,如果你不轉置以前的模型的權重。 有沒有人有我如何轉置這些權重的想法?

PS:我知道這是非常抽象和揮手的,但我正在使用自定義api,在tfslim之上,所以我不能在這裡發布代碼示例。





tf-slim