2017-02-10 6 views
1

テンソルの2進数、たとえば[0,1,0,1,1]をテンソルフローの整数に変換したいとします。私の場合、テンソルはかなり大きく、長さは約80エレメントです。これを効率的に行う方法はありますか?テンソルフローのバイナリをintに変換する

+0

どのような整数を取得したいですか? 160000ビットは、64ビット整数に収まるビット数より少し多いです。バッチ処理が行われていますか? –

+0

@AllenLavoie申し訳ありません。合計で80ビットです。 –

答えて

1

これはほぼ確実に、長さ80のバイナリテンソルとオーバーフローにつながるが、基本的な戦略は2のべき乗を持つテンソルとベクトル化された乗算を行うには、次のようになります。

import tensorflow as tf 

binary_string = tf.constant([1, 0, 0, 1, 1]) 

result = tf.reduce_sum(
    tf.cast(tf.reverse(tensor=binary_string, axis=[0]), dtype=tf.int64) 
    * 2 ** tf.range(tf.cast(tf.size(binary_string), dtype=tf.int64))) 

with tf.Session(): 
    print(result.eval()) 

プリント:

19