텐서플로우:: ops:: FixedUnigramCandidateSampler

#include <candidate_sampling_ops.h>

학습된 단어 분포를 사용하여 후보 샘플링을 위한 레이블을 생성합니다.

요약

단어 단위 샘플러는 실시간으로 데이터로부터 분포를 구축하는 대신, 파일에서 읽어오거나 메모리 배열로 전달받은 고정된 단어 단위 분포를 사용할 수 있습니다. 또한 가중치에 왜곡 지수를 적용하여 분포를 왜곡하는 옵션도 있습니다.

어휘 파일은 CSV 형식과 유사해야 하며, 마지막 필드는 단어에 할당된 가중치여야 합니다.

이 연산은 각 배치에 대해 샘플링된 후보 레이블 세트 하나를 선택합니다.

배치 단위로 후보를 샘플링하는 방식의 장점은 단순성과 효율적인 밀집 행렬 곱셈이 가능하다는 점입니다. 단점은 샘플링된 후보를 컨텍스트 및 실제 레이블과 독립적으로 선택해야 한다는 것입니다.

논거:

  • 범위: Scope 객체
  • true_classes: batch_size * num_true 크기의 행렬로, 각 행에는 해당 원본 레이블에 있는 num_true개의 target_classes의 ID가 포함됩니다.
  • num_true: 컨텍스트별 참 레이블의 개수입니다.
  • num_sampled: 무작위로 샘플링할 후보의 수입니다.
  • 고유성: 고유성이 참인 경우, 모든 샘플링된 후보가 배치에서 고유하도록 거부 샘플링을 수행합니다. 이를 위해서는 거부 후 샘플링 확률을 추정하기 위한 근사치가 필요합니다.
  • range_max: 샘플러는 [0, range_max) 범위의 정수를 샘플링합니다.

선택적 속성( Attrs 참조):

  • vocab_file: 이 파일(CSV 형식이어야 함)의 각 유효한 행은 유효한 단어 ID에 해당합니다. ID는 num_reserved_ids부터 순차적으로 정렬됩니다. 각 행의 마지막 항목은 개수 또는 상대 확률에 해당하는 값이어야 합니다. 이 연산에는 vocab_file과 unigrams 중 하나만 전달해야 합니다.
  • 왜곡: 왜곡은 단어 확률 분포를 왜곡하는 데 사용됩니다. 각 가중치는 내부 단어 분포에 더해지기 전에 먼저 왜곡 지수만큼 제곱됩니다. 결과적으로 왜곡 = 1.0은 규칙적인 단어 샘플링(어휘 파일에 정의된 대로)을 제공하고, 왜곡 = 0.0은 균일 분포를 제공합니다.
  • num_reserved_ids: 선택적으로 사용자는 [0, ..., num_reserved_ids) 범위 내에 예약된 ID를 추가할 수 있습니다. 예를 들어, 알 수 없는 특수 단어 토큰을 ID 0으로 사용할 수 있습니다. 이러한 ID는 샘플링 확률이 0입니다.
  • num_shards: 샘플러는 병렬 처리를 통해 전체 계산 속도를 높이기 위해 원래 범위의 부분 집합에서 샘플링하는 데 사용할 수 있습니다. 이 매개변수는 ('shard'와 함께) 전체 계산에 사용되는 파티션 수를 나타냅니다.
  • 샤드(shard): 샘플러는 병렬 처리를 통해 전체 계산 속도를 높이기 위해 원래 범위의 하위 집합에서 샘플링하는 데 사용할 수 있습니다. 이 매개변수는 ('num_shards'와 함께) 파티셔닝을 사용하는 경우 샘플러 연산의 특정 파티션 번호를 나타냅니다.
  • unigrams: 각 ID별로 순차적으로 나열된 unigram 개수 또는 확률 목록입니다. vocab_file과 unigrams 중 정확히 하나만 이 연산에 전달해야 합니다.
  • seed: seed 또는 seed2 중 하나라도 0이 아닌 값으로 설정되면, 지정된 시드를 사용하여 난수 생성기를 초기화합니다. 그렇지 않으면 임의의 시드를 사용합니다.
  • seed2: 시드 충돌을 방지하기 위한 두 번째 시드입니다.

보고:

  • Output sampled_candidates: num_sampled 길이의 벡터이며, 각 요소는 샘플링된 후보의 ID입니다.
  • Output true_expected_count: batch_size * num_true 행렬로, 샘플링된 후보들의 배치에서 각 후보가 나타날 것으로 예상되는 횟수를 나타냅니다. unique=true인 경우, 이는 확률입니다.
  • Output sampled_expected_count: 샘플링된 각 후보에 대해 해당 후보가 샘플링된 후보 배치에서 나타날 것으로 예상되는 횟수를 나타내는 num_sampled 길이의 벡터입니다. unique=true인 경우, 이는 확률입니다.

생성자와 소멸자

FixedUnigramCandidateSampler (const :: tensorflow::Scope & scope, :: tensorflow::Input true_classes, int64 num_true, int64 num_sampled, bool unique, int64 range_max)
FixedUnigramCandidateSampler (const :: tensorflow::Scope & scope, :: tensorflow::Input true_classes, int64 num_true, int64 num_sampled, bool unique, int64 range_max, const FixedUnigramCandidateSampler::Attrs & attrs)

공개 속성

operation
sampled_candidates
sampled_expected_count
true_expected_count

공개 정적 함수

Distortion (float x)
NumReservedIds (int64 x)
NumShards (int64 x)
Seed (int64 x)
Seed2 (int64 x)
Shard (int64 x)
Unigrams (const gtl::ArraySlice< float > & x)
VocabFile (StringPiece x)

구조

텐서플로우:: ops:: FixedUnigramCandidateSampler:: Attrs

FixedUnigramCandidateSampler 에 대한 선택적 속성 설정기입니다.

공개 속성

작업

Operation operation

샘플링된 후보자

::tensorflow::Output sampled_candidates

샘플링된 예상 개수

::tensorflow::Output sampled_expected_count

실제_예상_수

::tensorflow::Output true_expected_count

공공 기능

고정된 단일어 후보 샘플러

 FixedUnigramCandidateSampler(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input true_classes,
  int64 num_true,
  int64 num_sampled,
  bool unique,
  int64 range_max
)

고정된 단일어 후보 샘플러

 FixedUnigramCandidateSampler(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input true_classes,
  int64 num_true,
  int64 num_sampled,
  bool unique,
  int64 range_max,
  const FixedUnigramCandidateSampler::Attrs & attrs
)

공개 정적 함수

왜곡

Attrs Distortion(
  float x
)

예약된 ID 수

Attrs NumReservedIds(
  int64 x
)

넘샤드

Attrs NumShards(
  int64 x
)

씨앗

Attrs Seed(
  int64 x
)

시드2

Attrs Seed2(
  int64 x
)

사금파리

Attrs Shard(
  int64 x
)

유니그램

Attrs Unigrams(
  const gtl::ArraySlice< float > & x
)

어휘 파일

Attrs VocabFile(
  StringPiece x
)