Bitcast

공개 최종 수업 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는 낮은 수준의 캐스트로 구현되므로 엔디안 순서가 다른 시스템은 다른 결과를 제공합니다. 유형의 크기가 다른 경우 LE 시스템에서와 동일한 캐스팅 결과를 얻기 위해 입력 버퍼에서 출력 버퍼로의 복사가 BE 시스템에서 수행됩니다.

공개 방법

출력 <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> 출력 ()