データをコピーせずに、ある型から別の型にテンソルをビットキャストします。
テンソル `input` を指定すると、この演算はデータ型 `type` を持つ `input` と同じバッファー データを持つテンソルを返します。
入力データ型 `T` が出力データ型 `type` より大きい場合、形状は [...] から [..., sizeof(`T`)/sizeof(`type`)] に変わります。
`T` が `type` より小さい場合、演算子は右端の次元が sizeof(`type`)/sizeof(`T`) に等しいことを要求します。次に、形状は [..., sizeof(`type`)/sizeof(`T`)] から [...] になります。
実数 dtype が複素数 dtype (例: tf.complex64 または tf.complex128) としてキャストされる場合、tf.bitcast() と tf.cast() の動作は異なります。これは、 tf.cast() が虚数部 0 を作成する一方で、 tf.bitcast() がモジュールを与えるためです。エラー。例えば、
例 1:
>>> a = [1., 2., 3.] >>> equality_bitcast = tf.bitcast(a, tf.complex128) トレースバック (最新の呼び出し最後): ... InvalidArgumentError: 1 から 18 までビットキャストできません [ Op:Bitcast] >>> equality_cast = tf.cast(a, tf.complex128) >>> print(equality_cast) tf.Tensor([1.+0.j 2.+0.j 3.+0.j] 、形状=(3,)、dtype=complex128)
例 2:
>>> tf.bitcast(tf.constant(0xffffffff, dtype=tf.uint32), tf.uint8) 例 3: >>> x = [1., 2., 3.] >>> y = [0., 2., 3.] >>> 等価= tf.equal(x,y) >>> 等価キャスト = tf. Cast(equality,tf.float32) >>> equality_bitcast = tf.bitcast(equality_cast,tf.uint8) >>> print(equality) tf.Tensor([False True True]、shape=(3,)、dtype=bool ) >>> print(equality_cast) tf.Tensor([0. 1. 1.],shape=(3,), dtype=float32) >>> print(equality_bitcast) tf.Tensor( [[ 0 0 0 0] [ 0 0 128 63] [ 0 0 128 63]]、shape=(3, 4)、dtype=uint8) 注: ビットキャストは低レベルのキャストとして実装されているため、エンディアン順序が異なるマシンでは異なる結果が得られます。
パブリックメソッド
public Output <U> asOutput ()
テンソルのシンボリック ハンドルを返します。
TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。
public static Bitcast <U> create (スコープscope、オペランド<T>入力、Class<U>タイプ)
新しいビットキャスト操作をラップするクラスを作成するファクトリ メソッド。
パラメーター
範囲 | 現在のスコープ |
---|
戻り値
- ビットキャストの新しいインスタンス