當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.bitcast用法及代碼示例


在不複製數據的情況下,將張量從一種類型轉換為另一種類型。

用法

tf.bitcast(
    input, type, name=None
)

參數

  • input 一個Tensor。必須是以下類型之一:bfloat16 , half , float32 , float64 , int64 , int32 , uint8 , uint16 , uint32 , uint64 , int8 , int16 , complex64 , complex128 , qint8 , quint8 , qint16 , quint16 , qint32
  • type A tf.dtypes.DType從:tf.bfloat16, tf.half, tf.float32, tf.float64, tf.int64, tf.int32, tf.uint8, tf.uint16, tf.uint32, tf.uint64, tf.int8, tf.int16, tf.complex64, tf.complex128, tf.qint8, tf.quint8, tf.qint16, tf.quint16, tf.qint32.
  • name 操作的名稱(可選)。

返回

  • Tensor 類型為 type

給定一個張量 input ,此操作返回一個與 input 具有相同緩衝區數據且數據類型為 type 的張量。

如果輸入數據類型 T 大於輸出數據類型 type,則形狀從 [...] 更改為 [..., sizeof( T )/sizeof( type )]。

如果 T 小於 type ,則運算符要求最右邊的維度等於 sizeof( type )/sizeof( T )。然後形狀從 [..., sizeof( type )/sizeof( T )] 變為 [...]。

tf.bitcast() 和 tf.cast() 在將實際 dtype 轉換為複雜 dtype(例如 tf.complex64 或 tf.complex128)時的工作方式不同,因為 tf.cast() 將虛部設為 0 而 tf.bitcast() 給出模塊錯誤。例如,

示例 1:

a = [1., 2., 3.]
equality_bitcast = tf.bitcast(a, tf.complex128)
Traceback (most recent call last):

InvalidArgumentError:Cannot bitcast from 1 to 18 [Op:Bitcast]
equality_cast = tf.cast(a, tf.complex128)
print(equality_cast)
tf.Tensor([1.+0.j 2.+0.j 3.+0.j], shape=(3,), dtype=complex128)

示例 2:

tf.bitcast(tf.constant(0xffffffff, dtype=tf.uint32), tf.uint8)
<tf.Tensor:shape=(4,), dtype=uint8, numpy=array([255, 255, 255, 255], dtype=uint8)>

示例 3:

x = [1., 2., 3.]
y = [0., 2., 3.]
equality= tf.equal(x,y)
equality_cast = 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)

注意:Bitcast 被實現為低級強製轉換,因此具有不同 endian 順序的機器將給出不同的結果。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.bitcast。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。