비트캐스트

공개 최종 수업 Bitcast

데이터를 복사하지 않고 한 유형에서 다른 유형으로 텐서를 비트캐스트합니다.

'input' 텐서가 주어지면 이 작업은 'type' 데이터 유형을 갖는 'input'과 동일한 버퍼 데이터를 가진 텐서를 반환합니다.

입력 데이터 유형 `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) 역추적(가장 최근 호출 마지막): ... 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=복합128)

예시 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.], 모양=(3,), dtype=float32) >>> print(equality_bitcast) tf.Tensor( [[ 0 0 0 0] [ 0 0 128 63] [ 0 0 128 63]], 모양=(3, 4), dtype=uint8)

참고 : Bitcast는 낮은 수준의 캐스트로 구현되므로 엔디안 순서가 다른 시스템은 다른 결과를 제공합니다.

공개 방법

출력 <U>
출력 ()
텐서의 기호 핸들을 반환합니다.
정적 <U, T> 비트캐스트 <U>
생성 ( Scope 범위, 피연산자 <T> 입력, Class<U> 유형)
새로운 Bitcast 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <U>
출력 ()

상속된 메서드

공개 방법

공개 출력 <U> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

public static Bitcast <U> create ( 스코프 범위, 피연산자 <T> 입력, Class<U> 유형)

새로운 Bitcast 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
보고
  • Bitcast의 새로운 인스턴스

공개 출력 <U> 출력 ()