Bitcast

パブリック最終クラスビットキャスト

データをコピーせずに、ある型から別の型にテンソルをビットキャストします。

テンソル `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)

: ビットキャストは低レベルのキャストとして実装されているため、エンディアン順序が異なるマシンでは異なる結果が得られます。 BE マシンでは、型のサイズが異なる場合、LE マシンと同じキャスト結果を得るために、入力バッファから出力バッファへのコピーが作成されます。

パブリックメソッド

出力<U>
asOutput ()
テンソルのシンボリック ハンドルを返します。
静的 <U, T>ビットキャスト<U>
create (スコープscope、オペランド<T>入力、クラス<U>タイプ)
新しいビットキャスト操作をラップするクラスを作成するファクトリ メソッド。
出力<U>

継承されたメソッド

パブリックメソッド

public Output <U> asOutput ()

テンソルのシンボリック ハンドルを返します。

TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。

public static Bitcast <U> create (スコープscope、オペランド<T>入力、Class<U>タイプ)

新しいビットキャスト操作をラップするクラスを作成するファクトリ メソッド。

パラメーター
範囲現在のスコープ
戻り値
  • ビットキャストの新しいインスタンス

public出力<U>出力()