2016-05-17 9 views
2

Ich möchte eine Variable mit tf.get_variable erstellen und es sollte mit einem Array numpy initialisiert werden.So übergeben Sie effizient den Anfangswert an get_variable

Soweit ich weiß, gibt es zwei Möglichkeiten, eine Variable zu erstellen, tf.Variable und tf.get_variable. Wir können problemlos Anfangswerte an Variablen übergeben, die von tf.Variable erstellt wurden. Aber es scheint keine direkte Möglichkeit zu geben, dasselbe mit denen zu tun, die von tf.get_variable erstellt wurden.

Was ich jetzt gemacht habe, ist zunächst einen Tensor mit numpy Array zu erstellen, indem Sie tf.convert_to_tensor verwenden und dann diesen Tensor als initializer zu tf.get_variable übergeben. Aber das scheint mir nicht effizient zu sein, da ich ein sehr großes Array als Anfangswert habe, dann muss ich dieses große Array zweimal in meinem Graph speichern.

Daher frage ich mich, ob es einige effizientere Möglichkeiten gibt, das zu tun? Verwenden Sie Variable die einzige Möglichkeit, das oben erwähnte Effizienzproblem zu vermeiden?

+1

Haben Sie versucht, 'tf.constant_initializer()' zu verwenden? ([doc] (https://www.tensorflow.org/versions/r0.8/api_docs/python/state_ops.html#constant_initializer)) Mit ihm können Sie einfach das numpy Array als Argument mit dem Kopieren zu einem Tensor übergeben . –

+0

Ich wusste es nicht, danke. Aber das ist seltsam, Im Dokument von "tf.constant_initializer" heißt es das Argument "value: Ein Python-Skalar. Alle Elemente der initialisierten Variable werden auf diesen Wert gesetzt". Aber es funktioniert wirklich, wenn Sie statt eines Skalars ein numpiges Array übergeben. Kennst du den Grund? –

+0

Nein, ich denke, es ist ein Tippfehler in der Dokumentation. –

Antwort

2

Die Antwort ist die Verwendung der Funktion tf.constant_initializer(value) von TensorFlow (vgl. doc).

Obwohl in der Dokumentation angegeben ist, nur skalare Werte zu verwenden, können Sie ein numpliges Array beliebiger Dimension übergeben.

Verwandte Themen