이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

tf.mixed_precision.experimental.LossScale

GitHub의에서 소스보기

모든 손실 규모에 대한 기본 클래스입니다.

이 그래서 당신은 직접 인스턴스화 할 수 없습니다, 추상 기본 클래스입니다. 대신, 그 구체적인 서브 클래스 중 하나를 사용합니다 :

그것은이와 손실 규모를 사용하는 것이 좋습니다 tf.keras.mixed_precision.experimental.LossScaleOptimizer 으로, 자사의 직접 손실 규모를 사용하는 것보다 쉽다.

감소 스케일링을 승산이 승산기에 의한 손실이 손실 스케일이라고하는 과정이고, 동일한 승산하여 각 구배를 분할한다. 이 과정에 대한 의사 코드는 다음과 같습니다

 loss = ...
loss *= loss_scale
grads = gradients(loss, vars)
grads /= loss_scale
 

수학적으로, 손실 스케일링이 적용되지 않습니다,하지만 float16과 텐서가 혼합 된 정밀 훈련을 위해 사용하는 경우 중간 그라데이션을 피하기 수치 언더 플로우를 할 수 있습니다. 손실 곱함으로써, 각각의 중간 구배 동일한 배율을 적용 할 것이다.

이 클래스의 인스턴스는 손실 규모를 나타냅니다. 방법 동안이 클래스의 인스턴스를 호출하면, 스칼라 float32 텐서로 손실 규모를 반환 update() 그라디언트의 값에 따라 손실 규모를 업데이트합니다. 최적화는 규모의 손실과 그라데이션이 클래스의 인스턴스를 사용합니다.

LossScale을 받아 대부분의 기능, 당신은 또한 int를 (예 : 전달할 수 있습니다

8)을 만들 FixedLossScale 또는 문자열 "dynamic" 동적 손실 규모를 만들기 위해.

행동 양식

from_config

소스보기

그 설정에서 LossScale를 작성합니다.

get_config

소스보기

이 손실 규모의 설정을 돌려줍니다.

update

소스보기

손실 규모의 값을 업데이트합니다.

손실 스케일 가능성의 값에 기초하여 갱신한다 grads . 이 기능이 평가 될 때이 클래스를 호출하여 반환 된 텐서 만 업데이트됩니다.

열망 모드에서이 직접 호출 그래서, 손실 규모를 업데이트 __call__ 새로 업데이트 된 손실 규모를 반환합니다. 그래프 모드에서는이 평가 될 때, 손실 규모를 갱신하도록 연산을 반환합니다.

이 기능은 또한 반환 should_apply_gradients 부울을. false의 경우, 그라디언트 단계는, nonfinite 그라디언트가 발견로하고, 손실 규모는 다음 단계에서 nonfinite 그라데이션을 찾는 기회를 줄이기 위해 업데이트 된 것을 변수에 적용 할 수 없습니다. 그들이 nonfinite 그라디언트에 대한 응답으로 자신을 조절할 수 없기 때문에 일부 손실 규모 클래스는 항상 사실을 반환합니다.

DistributionStrategy가 사용되는 경우,이 기능은 간 복제 컨텍스트에서 호출 될 수있다.

인수
grads 스케일 없음 구배 중첩 구조의 중량에 대한 손실의 기울기 각이다. 그레디언트는 이미 손실 규모가 전에이 함수에 전달되는 나눈되어 있어야합니다. '없음'그라데이션을 허용하고, 무시됩니다.

보고
update_op 열망 모드에서, 없음. 그래프 모드에서는, 영업 이익은 손실 규모를 업데이트합니다.
should_apply_gradients 부울 또는 스칼라 부울 텐서 하나. false의 경우, 호출자는 적용 건너 뛰어야 grads 변수로이 단계를.

__call__

소스보기

반환 스칼라로 현재 손실 규모 float32 텐서.