2016-11-16 6 views
4

Ich würde gerne eine (oder Dekonvolution) anstelle von Upsampling in meinem Netzwerk verwenden. Dies erfordert die Übergabe eines output_shape an den Funktionsaufruf. Das ist kein Problem, ich kann es berechnen. Aber ich möchte None für die Batch-Größe verwenden, um das Setup flexibel zu halten. Ist das möglich? HierTensorflow: verwende keine in output_shape in conv2D_transpose

ist die Codezeile:

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

batch_size ist einfach eine Variable, die ich an der Spitze von meinem Skript festgelegt. Dieser Code läuft gut, aber wenn ich None anstelle von batch_size:

TypeError: Expected binary or unicode string, got None

Wenn ich nur die erste Dimension auslassen:

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

Ich denke, es ist seltsam, dass es verschiedene Möglichkeiten gibt, zu beschäftigen die Stapelgröße. Einige Operationen ignorieren es einfach, wie das normale conv2d, aber hier muss ich es explizit angeben. In jedem Fall fragte ich mich, warum ich die output_shape überhaupt berechnen müsste. Mit gegebener Eingabe, Schritten, Padding, das sollte einfach zu berechnen sein. Es gibt einen GitHub issue in Bezug auf output_shape, leider scheint es keine Follow-up zu sein.

Mache ich das richtig - eine explizite batch_size in der output_shape übergeben? Gibt es eine Möglichkeit, die explizite batch_size wegzulassen?

+0

Das GitHub-Problem hat einige Erklärungen. Wenn du es nicht bekommst, folge einfach dort drüben. – yuefengz

Antwort

2

Anstatt None zu verwenden, verwenden Sie bitte die symbolische Darstellung wie unten.

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

Achten Sie darauf, nicht tf.get_shape() zu verwenden. tf.get_shape() und tf.shape() sind etwas anders.

Siehe auch Empfehlungen in Tensorflow-Website über variable Batch-Größe.

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

Verwandte Themen