3

我想實現具有不固定輸入大小的生成對抗網絡(GAN),如4-D Tensor (Batch_size, None, None, 3)Tensorflow conv2d_transpose output_shape

但是當我使用conv2d_transpose時,有一個參數output_shape,這個參數必須在去卷積操作後通過true size

例如,如果the size of batch_img is (64, 32, 32, 128), w is weight with (3, 3, 64, 128)

deconv = tf.nn.conv2d_transpose(batch_img, w, output_shape=[64, 64, 64, 64],stride=[1,2,2,1], padding='SAME')

所以,我得到deconvsize (64, 64, 64, 64),它如果我通過了true size of output_shape沒關係。

但是,我想使用不固定的輸入大小(64, None, None, 128),並得到deconv(64, None, None, 64)

但是,它會產生如下錯誤。

TypeError: Failed to convert object of type <type'list'> to Tensor...

所以,我能做些什麼,以避免在deconv這個參數?還是有另一種方法來實現未固定的GAN?

回答

0
  • 輸出形狀列表不接受具有在列表中,因爲沒有對象不能被轉換成張量對象
  • 僅在tf.placeholder
  • 形狀允許不同的尺寸output_shape而不是嘗試-1例如,你想要的大小(64, None, None, 128)所以試試[64, -1, -1, 128] ......我不完全確定這是否會工作......它適用於m E對於那的batch_size是我的第一個參數是不是,所以我用-1
  • 有過怎麼也轉置卷積一個高層API的固定大小tf.layers.conv2d_transpose()
  • 我相信高層API tf.layers.conv2d_transpose()會爲工作你,因爲它需要的不同輸入張量
  • 你甚至不需要指定output-shape你只需要指定output_channelkernel使用
  • 有關詳細信息:https://www.tensorflow.org/api_docs/python/tf/layers/conv2d_transpose ...我希望這有助於