TensorFlow で tf.get_variable と numpy 値を使用して変数を初期化するにはどうすればよいですか? 質問する

TensorFlow で tf.get_variable と numpy 値を使用して変数を初期化するにはどうすればよいですか? 質問する

ネットワーク上のいくつかの変数を NumPy 値で初期化したいと考えました。例として以下を検討してください。

init=np.random.rand(1,2)
tf.get_variable('var_name',initializer=init)

そうするとエラーが発生します:

ValueError: Shape of a new variable (var_name) must be fully defined, but instead was <unknown>.

なぜそのエラーが発生するのでしょうか?

これを修正するために、次のことを試しました:

tf.get_variable('var_name',initializer=init, shape=[1,2])

さらに奇妙なエラーが発生しました:

TypeError: 'numpy.ndarray' object is not callable

読んでみましたドキュメントと例しかし、それは実際には役に立ちませんでした。

TensorFlow の get_variable メソッドを使用して、numpy 配列で変数を初期化することはできないのでしょうか?

ベストアンサー1

定数 NumPy 配列を定数に変換すると、次のように動作しますTensor

init = tf.constant(np.random.rand(1, 2))
tf.get_variable('var_name', initializer=init)

のドキュメントはget_variable確かに少し不足しています。参考までに、initializer引数は TensorFlowTensorオブジェクト (この場合は値を呼び出すことによって構築できます)、または と、返される値の形状とデータ型の 2 つの引数を取る「呼び出し可能」tf.constantである必要があります。この場合も、「呼び出し可能」メカニズムを使用する場合は、次のように記述できます。numpyshapedtype

init = lambda shape, dtype: np.random.rand(*shape)
tf.get_variable('var_name', initializer=init, shape=[1, 2])

おすすめ記事