2017-10-12 4 views
0

TensorFlowで変数を作成する際に、データ型を指定することができます。しかし、この議論はちょうど無視されています。例えば:私はPythonのリストから値を初期化するのであればTensorFlowのValue関数でデータ型引数はどのように使用されますか?

In [26]: b = tf.Variable([3.0, 4.0, 5.0], tf.float64) 

In [27]: b.dtype 
Out[27]: tf.float32_ref 

In [28]: b = tf.Variable(np.array([3.0, 4.0, 5.0]), tf.float64) 

In [29]: b.dtype 
Out[29]: tf.float64_ref 

In [30]: b = tf.Variable(np.array([3.0, 4.0, 5.0]), tf.float32) 

In [31]: b.dtype 
Out[31]: tf.float64_ref 

、私は(私はValue関数の第二引数としてtf.float64与えるにもかかわらず)タイプとしてtf.float32_refを取得します。値の初期化にnumpy配列を使用すると、状況は逆です(をValue関数の第2引数として指定しても、データ型としてtf.float64_refが返されます)。

データ型は、値の初期化に使用されるオブジェクトのデータ型から取得されていると思います。どのような意味があるのですが、Value関数でdtype引数が必要なのはなぜですか?

答えて

1

私はこの問題は、変数のコンストラクタの第二引数がDTYPEされていないだけということだと思います:第二引数は、「トレーニング可能」である:

>>>b = tf.Variable(np.array([3.0, 4.0, 5.0]), tf.float32) 
>>>b.dtype 
tf.float64_ref 
>>>b = tf.Variable(np.array([3.0, 4.0, 5.0]), dtype=tf.float32) 
>>>b.dtype 
tf.float32_ref 

あなたは、doc hereを確認することができます。

補足:より新しいバージョンのTensorflowでは、tf.Variable()の代わりにtf.get_variableを使用して変数を作成するのはadvisedです。

+0

第2引数は、訓練可能なパラメータではなく、変数の名前です。 – user1190882

+0

私は理解していない...は、docの '__init __()'関数では、私は '__init __( initial_value =なし、=なし トレーニング可能=真、 コレクション=なし、 validate_shape =真、 caching_deviceを見ません、 =なし 名=なし、 variable_def =なし、 DTYPE =なし、 expected_shape =なし、 import_scope) ' – gdelab

+0

とにかくconsclusionは同じである:一つは名前付きパラメータを使用する必要があります – gdelab

関連する問題