2017-02-21 6 views
13

私はtensorflow 0.12で作業しており、キャストに問題があります。 次のコードスニペットは、奇妙なことが行われます。テンソルフロー - intからfloatへの不規則な振る舞い

sess = tf.InteractiveSession() 
a = tf.constant(1) 
b = tf.cast(a, tf.float32) 
print b.eval() 

を私は値を取得: 6.86574233e-36

私もtf.to_float()tf.saturate_castを使用してみました。どちらも同じ結果をもたらしました。

助けてください。

+0

私はTF 1.0であなたの問題を再現できません。 – MikiBear

+0

gpuでTensorflowを実行しますか?はいの場合、どのgpuカードを使用しますか?どのCudaバージョンでTensorflowをコンパイルしたのですか?ときには、cudaバージョンでサポートされていないGPUを使用すると、エラーメッセージが表示されずに奇妙なことが起こることがあります。 – BlueSun

+0

こんにちは、私はCPU上で動作しています:Intel Xeon E5-2680 – aarbelle

答えて

1
sess = tf.InteractiveSession() 
a = tf.constant(1, tf.int64) <-------- 
b = tf.cast(a, tf.float32) 
print b.eval() # 1.0 

はあなたのtf.constantためdtypeを宣言する必要がありますだけでなく、コードは両方のケースのように正常に動作しているようだ、私は同じtensorflowバージョンのためのpython3とpython2でコードを確認

+0

これで問題は解決しません。私はそれを行うとき、私はb型= 0と考えているが、それはどのようなタイプの私はuint8、uint16、int 32、int64を使用しているようだキャスト後に異なる結果を与える – aarbelle

+0

私のコードは 'b.eval()'に '0'を与える? – wong2

+0

はい、問題はそれより深いです。実際の問題は、uint8として保存されているPNG画像を読み込むことです。 tf.image.decode_png(path、dtype = tf.uint8)の後に良い値が得られます。しかし、私がフロートにキャストしようとすると、私はごみを得る – aarbelle

0

プログラムにエラーはありません。

import tensorflow as tf 
sess = tf.InteractiveSession() 
a = tf.constant(1) 
b = tf.cast(a, tf.float32) 
print b.eval() 

これは、TF https://codeenv.com/env/run/gXGpnR/
左側CLIでコード

  • を追加test_tf.py
    • クリックを使用し、実行するためにそこにあなたのコードをテストするためのオンライン環境ですタイプipython test_tf.py
  • 関連する問題