2017-10-05 111 views
0

我試圖使用tf.nn.conv3d_transpose,但是,我收到一個錯誤,指出我的過濾器和輸出形狀不兼容。與張量流的解卷積/ Transpose_Convolutions

  • 我有大小的張量[1,16,16,4,192]
  • 我試圖使用[1,1,1,192,192]
  • 過濾我相信輸出形狀會[1,16,16,4,192]
  • 我使用「相同」的填充和1.

最後,我希望有的輸出形狀[1,32,32,7一個步幅, 「無所謂」],但我試圖讓一個簡單的案例先行工作。由於這些張量在常規卷積中是相容的,所以我相信相反的解卷積也是可能的。

爲什麼不可能對這些張量執行解卷積。我可以得到一個有效的濾波器大小和輸出形狀的例子,用於形狀張量上的解卷積[1,16,16,4,192]

謝謝。

回答

1
  • 我有大小的張量[1,16,16,4,192]
  • 我試圖使用[1,1,1,192,192]
  • 濾波器相信輸出形狀將[1,16,16,4,192]
  • 我使用 「相同」 的填充和1.

步幅是輸出形狀將是[1,16,16,4,192]

這裏是顯示尺寸是兼容的一個簡單的例子:

import tensorflow as tf 

i = tf.Variable(tf.constant(1., shape=[1, 16, 16, 4, 192])) 

w = tf.Variable(tf.constant(1., shape=[1, 1, 1, 192, 192])) 

o = tf.nn.conv3d_transpose(i, w, [1, 16, 16, 4, 192], strides=[1, 1, 1, 1, 1]) 

print(o.get_shape()) 

必須有您的實現比尺寸其他一些問題。

+1

謝謝你的幫助。這些信息幫助我幾乎立即解決了我的問題。我的問題是我正在像這樣調用conv3d_transpose:o = tf.nn.conv3d_transpose(i,[1,1,1,192,192],[1,16,16,4,192],strides = [1 ,1,1,1,1])。非常愚蠢的問題,但我對tensorflow並不陌生,從來不會意識到這個問題。我不能夠感謝你。 –

+1

使用你在這裏提供的實現,我遇到了一些問題。有時候我有一個過濾器大小有很多通道。例如[16,16,7,3298],也在這裏描述:https://stackoverflow.com/questions/46955515/initializing-a-large-tf-variable-produces-an-error。有些人建議我將濾波器大小(在實現中使用「w」)分成更小的張量。這樣做有意義嗎,或者首先有3298頻道的過濾器沒有意義嗎?你是否曾經僱傭家教/幫助? –

+2

@DevinHaslam我絕對不會首先使用3298頻道。你爲什麼要用這麼多?我從來沒有聘請過輔導,我真的沒有時間,對不起。 – BlueSun