私は初期化しようとしていますtf.Variable()
でtf.InteractiveSession()
。個別のnumpy
ファイルである事前トレーニング済みの重みがすでにいくつかあります。これらのnumpy
値で変数を効果的に初期化するにはどうすればよいですか?
私は次のオプションを実行しました:
tf.assign()
sess.run()
時に直接使用するtf.Variable()
値が正しく初期化されていないようです。以下は私が試したいくつかのコードです。どちらが正しいか教えてください。
def read_numpy(file):
return np.fromfile(file,dtype='f')
def build_network():
with tf.get_default_graph().as_default():
x = tf.Variable(tf.constant(read_numpy('foo.npy')),name='var1')
sess = tf.get_default_session()
with sess.as_default():
sess.run(tf.global_variables_initializer())
sess = tf.InteractiveSession()
with sess.as_default():
build_network()
これは正しい方法ですか?session
オブジェクトを印刷しましたが、これは全体で使用されているのと同じセッションです。
編集:現在、使用sess.run(tf.global_variables_initializer())
はランダム初期化操作を呼び出しているようです
tf.Variable()
numpy配列を初期値として受け入れます。
import tensorflow as tf
import numpy as np
init = np.ones((2, 2))
x = tf.Variable(init) # <-- set initial value to assign to a variable
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) # <-- this will assign the init value
print(x.eval())
# [[1. 1.]
# [1. 1.]]
したがって、numpy配列を使用して初期化するだけで、最初にテンソルに変換する必要はありません。
または、tf.Variable.load()
セッションコンテキスト内でnumpy配列から変数に値を割り当てるために使用することもできます。
import tensorflow as tf
import numpy as np
x = tf.Variable(tf.zeros((2, 2)))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
init = np.ones((2, 2))
x.load(init)
print(x.eval())
# [[1. 1.]
# [1. 1.]]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加