2016-02-09 11 views
8

Es gibt viele Methoden in TensorFlow konvertieren, die eine Form, zum Beispiel truncated_normal erfordern die Angabe:kann nicht teilweise umgewandelten Tensor in TensorFlow

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 

Ich habe einen Platzhalter für den Eingang der Form [None, 784], wobei Die erste Dimension ist Keine, da die Stapelgröße variieren kann. Ich könnte eine feste Stapelgröße verwenden, aber sie würde sich immer noch von der Größe des Test-/Validierungssets unterscheiden.

Ich kann diesen Platzhalter nicht an tf.truncated_normal übergeben, da hierfür eine vollständig spezifizierte Tensorform erforderlich ist. Was ist eine einfache Möglichkeit, tf.truncated_normal verschiedene Tensorformen annehmen zu lassen?

Antwort

12

Sie müssen es nur als einzelnes Beispiel, aber in der Batch-Form einspeisen. Das bedeutet, dass der Form eine zusätzliche Dimension hinzugefügt werden muss, z.

batch_size = 32 # set this to the actual size of your batch 
tf.truncated_normal((batch_size, 784), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 

Auf diese Weise wird es in den Platzhalter "passen".

Wenn Sie batch_size erwarten Sie auch ändern können:

tf.truncated_normal(tf.shape(input_tensor), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 

Wo input_tensor ein Platzhalter sein könnte oder einfach nur, was Tensor dieses Rauschen haben wird hinzugefügt.

+0

Das Problem mit dieser Lösung ist, dass es das gleiche Rauschen zu jeder Zeile der Tensor –

+0

hinzufügen wird. Fairer Punkt Ich werde einige Variationen geben, die das beheben und klarer machen –

+0

Ich bin sehr an einer hypothetischen Lösung interessiert, weil ich seit einiger Zeit nach einem gesucht habe. –

Verwandte Themen