DecodeProto

공개 최종 클래스 DecodeProto

연산은 직렬화된 프로토콜 버퍼 메시지의 필드를 텐서로 추출합니다.

참고: 이 API는 인간 친화적이기보다는 직교성을 위해 설계되었습니다. 입력 proto를 직접 구문 분석하는 데 사용할 수 있지만 생성된 코드에서 사용하기 위한 것입니다.

`decode_proto` 작업은 직렬화된 프로토콜 버퍼 메시지의 필드를 텐서로 추출합니다. 가능하면 `field_names`의 필드가 디코딩되어 해당 `output_types`로 변환됩니다.

필드 이름에 대한 컨텍스트를 제공하려면 `message_type` 이름을 제공해야 합니다. 실제 메시지 설명자는 연결된 설명자 풀이나 'descriptor_source' 속성을 사용하여 호출자가 제공한 파일 이름에서 조회할 수 있습니다.

각 출력 텐서는 밀집 텐서입니다. 이는 입력 미니배치에서 볼 수 있는 가장 많은 수의 반복 요소를 보유하기 위해 채워졌음을 의미합니다. (크기가 0이 되는 것을 방지하기 위해 모양도 1씩 채워집니다.) 미니배치의 각 예시에 대한 실제 반복 횟수는 `sizes` 출력에서 ​​확인할 수 있습니다. 많은 경우 누락된 값이 문제가 되지 않으면 `decode_proto`의 출력이 즉시 tf.squeeze에 제공됩니다. tf.squeeze를 사용할 때 예상치 못한 상황을 피하기 위해 항상 squeeze 차원을 명시적으로 전달하세요.

대부분의 경우 Proto 필드 유형과 TensorFlow dtype 간의 매핑은 간단합니다. 그러나 몇 가지 특별한 경우가 있습니다:

- 하위 메시지나 그룹을 포함하는 proto 필드는 'DT_STRING'(직렬화된 하위 메시지)로만 변환될 수 있습니다. 이는 API의 복잡성을 줄이기 위한 것입니다. 결과 문자열은 decode_proto 작업의 다른 인스턴스에 대한 입력으로 사용될 수 있습니다.

- TensorFlow는 부호 없는 정수에 대한 지원이 부족합니다. ops는 uint64 유형을 동일한 2의 보수 비트 패턴을 갖는 `DT_INT64`로 나타냅니다(명백한 방법). 부호 없는 int32 값은 `DT_INT64` 유형을 지정하거나 호출자가 `output_types` 속성에 `DT_INT32`를 지정한 경우 2의 보수를 사용하여 정확하게 표현할 수 있습니다.

- `map` 필드는 직접 디코딩되지 않습니다. 이는 적절한 항목 유형의 `반복` 필드로 처리됩니다. 프로토 컴파일러는 각 맵 필드에 대한 항목 유형을 정의합니다. type-name은 "Entry"가 추가된 "CamelCase"로 변환된 필드 이름입니다. tf.train.Features.FeatureEntry 메시지는 이러한 암시적 'Entry' 유형 중 하나의 예입니다.

- `enum` 필드는 int32로 읽어야 합니다.

바이너리 및 텍스트 proto 직렬화가 모두 지원되며 `format` 속성을 사용하여 선택할 수 있습니다.

`descriptor_source` 속성은 `message_type`을 검색할 때 참조할 프로토콜 설명자의 소스를 선택합니다. 이는 다음과 같을 수 있습니다:

- 빈 문자열 또는 "local://". 이 경우 프로토콜 설명자는 바이너리에 연결된 C++(Python 아님) proto 정의에 대해 생성됩니다.

- 파일에서 프로토콜 설명자가 생성되는 파일로, 문자열로 직렬화된 `FileDescriptorSet`을 포함해야 합니다. 참고: 프로토콜 컴파일러 `protoc`에 `--descriptor_set_out` 및 `--include_imports` 옵션을 사용하여 `descriptor_source` 파일을 빌드할 수 있습니다.

- "바이트:// ", 프로토콜 설명자는 `에서 생성됩니다. `, 이는 문자열로 직렬화된 `FileDescriptorSet`일 것으로 예상됩니다.

중첩 클래스

수업 DecodeProto.Options DecodeProto 의 선택적 속성

공개 방법

정적 DecodeProto
생성 ( 범위 범위, 피연산자 <String> 바이트, 문자열 messageType, List<String> fieldNames, List<Class<?>> 출력 유형, 옵션... 옵션)
새로운 DecodeProto 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
정적 DecodeProto.Options
descriptorSource (문자열 설명자 소스)
정적 DecodeProto.Options
messageFormat (문자열 메시지 형식)
정적 DecodeProto.Options
위생 처리 (부울 위생 처리)
출력 <정수>
크기 ()
형태가 `[batch_shape, len(field_names)]`인 int32의 텐서.
목록< 출력 <?>>
()
해당 필드의 값을 포함하는 텐서 목록입니다.

상속된 메서드

공개 방법

공개 정적 DecodeProto 생성 ( 범위 범위, 피연산자 <String> 바이트, 문자열 messageType, List<String> fieldNames, List<Class<?>> 출력 유형, 옵션... 옵션)

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

매개변수
범위 현재 범위
바이트 `batch_shape` 형태를 갖는 직렬화된 proto의 텐서입니다.
메시지 유형 디코딩할 프로토 메시지 유형의 이름입니다.
필드 이름 proto 필드 이름이 포함된 문자열 목록입니다. 확장 필드는 전체 이름(예: EXT_PACKAGE.EXT_FIELD_NAME)을 사용하여 디코딩할 수 있습니다.
출력 유형 field_names의 해당 필드에 사용할 TF 유형 목록입니다.
옵션 선택적 속성 값을 전달합니다.
보고
  • DecodeProto의 새로운 인스턴스

공개 정적 DecodeProto.Options descriptorSource (문자열 설명자 소스)

매개변수
설명자 소스 특수 값 `local://` 또는 직렬화된 `FileDescriptorSet`을 포함하는 파일 경로입니다.

공개 정적 DecodeProto.Options messageFormat (문자열 messageFormat)

매개변수
메시지형식 `binary` 또는 text 입니다.

공개 정적 DecodeProto.Options sanitize (부울 sanitize)

매개변수
소독하다 결과를 정리할지 여부입니다.

공개 출력 <Integer> 크기 ()

형태가 `[batch_shape, len(field_names)]`인 int32의 텐서. 각 항목은 해당 필드에 대해 발견된 값의 수입니다. 선택 필드에는 0 또는 1개의 값이 있을 수 있습니다.

공개 목록< 출력 <?>> ()

해당 필드의 값을 포함하는 텐서 목록입니다. `values[i]`에는 `output_types[i]` 데이터 유형과 `[batch_shape, max(sizes[...,i])]` 형태가 있습니다.