2016-11-16 25 views
4

我想在網絡中使用conv2d_tranpose(或解卷積),而不是上採樣。 這需要將output_shape傳遞給函數調用。這不是問題,我可以計算出來。但是我想爲batch_size使用None來保持設置的靈活性。 這可能嗎?Tensorflow:在conv2D_transpose中使用output_shape中的無

下面是代碼行:

tf.nn.conv2d_transpose(hd_conv1, Wd_conv1, [batch_size, 14,14,64], strides=[1,2,2,1], padding="SAME") 

batch_size很簡單,我定在我的腳本的頂部的變量。此代碼運行正常,但如果我使用None代替batch_size

TypeError: Expected binary or unicode string, got None

如果我只是離開了第一個維度:

ValueError: output_shape must have shape (4,), got (3,)

我覺得奇怪的是,有不同的方式來處理batch_size。有些操作簡單地忽略它,比如正常的conv2d,但在這裏我需要明確地指定它。 在任何情況下,我想知道爲什麼我必須自己計算output_shape。用給定的輸入,步幅,填充,應該很容易計算。 關於output_shape的推理,有一個github issue,遺憾的是似乎沒有任何後續行動。

我在做這個嗎 - 在output_shape中傳遞一個明確的batch_size? 有沒有辦法省略顯式batch_size

+0

github問題有一些解釋。如果你沒有得到它,只需在那裏跟進。 – yuefengz

回答

2

而不是使用None,請使用像下面的符號表示。

batch_size = tf.shape(something_or_other)[0] 
deconv_shape = tf.pack([batch_size, 40, 40, 32]) 
conv2d_transpose(..., output_shape=deconv_shape, ...) 

小心不要使用tf.get_shape()tf.get_shape()tf.shape()略有不同。

另請參閱tensorflow網站關於變量批量大小的推薦。

https://www.tensorflow.org/programmers_guide/faq

相關問題