oa::FnLoss

FnLoss namespace in the OA Ml public surface.

NsC++ public headers

Public Functions

Matrix oa::FnLoss::bce(const Matrix & inA, const Matrix & inB)
Matrix oa::FnLoss::bceBwd(const Matrix & inA, const Matrix & inB)
oa::Matrix oa::FnLoss::crossEntropy(const oa::Matrix & inLogits, const oa::Matrix & inTargets)
Matrix oa::FnLoss::crossEntropyBwd(const Matrix & inLogits, const Matrix & inTargets)
DqnLossResult oa::FnLoss::dqn(const oa::Matrix & inQ, const oa::Matrix & inAction, const oa::Matrix & inReward, const oa::Matrix & inNextQ, const oa::Matrix & inTerminated, const oa::Matrix & inTruncated, const DqnLossConfig & inConfig = {})
Matrix oa::FnLoss::l1(const Matrix & inA, const Matrix & inB)
Matrix oa::FnLoss::l1Bwd(const Matrix & inA, const Matrix & inB)
const char * oa::FnLoss::lastName()
Matrix oa::FnLoss::maskedCrossEntropy(const Matrix & inLogits, const Matrix & inTargets, const Matrix & inMask, oa::I32 inValidCount)
Matrix oa::FnLoss::maskedCrossEntropyBwd(const Matrix & inLogits, const Matrix & inTargets, const Matrix & inMask, oa::I32 inValidCount)
Matrix oa::FnLoss::mse(const Matrix & inA, const Matrix & inB)
Matrix oa::FnLoss::mseBwd(const Matrix & inA, const Matrix & inB)
PpoLossResult oa::FnLoss::ppo(const oa::Matrix & inNewLogProbability, const oa::Matrix & inOldLogProbability, const oa::Matrix & inAdvantage, const oa::Matrix & inValue, const oa::Matrix & inTargetReturn, const oa::Matrix & inEntropy, const PpoLossConfig & inConfig = {})
oa::Matrix oa::FnLoss::ppoClippedPolicy(const oa::Matrix & inNewLogProbability, const oa::Matrix & inOldLogProbability, const oa::Matrix & inAdvantage, oa::F32 inClipEpsilon = 0.2F)
oa::Matrix oa::FnLoss::ppoClippedPolicyBwd(const oa::Matrix & inNewLogProbability, const oa::Matrix & inOldLogProbability, const oa::Matrix & inAdvantage, oa::F32 inClipEpsilon = 0.2F)
oa::Matrix oa::FnLoss::sacActor(const oa::Matrix & inQ1, const oa::Matrix & inQ2, const oa::Matrix & inLogProbability, oa::F32 inEntropyCoefficient = 0.2F)
SacCriticLossResult oa::FnLoss::sacCritic(const oa::Matrix & inQ1, const oa::Matrix & inQ2, const oa::Matrix & inReward, const oa::Matrix & inNextQ1, const oa::Matrix & inNextQ2, const oa::Matrix & inNextLogProbability, const oa::Matrix & inTerminated, const oa::Matrix & inTruncated, const SacLossConfig & inConfig = {})
void oa::FnLoss::setLastName(const char * inName)
Matrix oa::FnLoss::smoothL1(const Matrix & inA, const Matrix & inB)
Matrix oa::FnLoss::smoothL1Bwd(const Matrix & inA, const Matrix & inB)

Function Documentation

Matrix oa::FnLoss::bce( const Matrix & inA, const Matrix & inB )
bce: binary cross-entropy. -(b*log(a) + (1-b)*log(1-a)), clamped for stability.

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

Matrix oa::FnLoss::bceBwd( const Matrix & inA, const Matrix & inB )
bceBwd: gradient w.r.t. inA: (a-b)/(a*(1-a))/N.

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

oa::Matrix oa::FnLoss::crossEntropy( const oa::Matrix & inLogits, const oa::Matrix & inTargets )
crossEntropy: Mean cross-entropy over rank-two logits and UInt8, UInt32, or non-negative Int32 class-index targets; the scalar result is Float32, and an out-of-range target produces NaN without an out-of-bounds read.

Parameters

inLogits
const oa::Matrix &

inTargets
const oa::Matrix &

Returns

oa::Matrix

The declared return value.

Matrix oa::FnLoss::crossEntropyBwd( const Matrix & inLogits, const Matrix & inTargets )
crossEntropyBwd: gradient w.r.t. logits: (softmax(logits) - onehot(targets)) / batch

Parameters

inLogits
const Matrix &

[batch, classes] unnormalized logits

inTargets
const Matrix &

[batch] class indices (UInt8, UInt32, or non-negative Int32)

Returns

Matrix

The declared return value.

DqnLossResult oa::FnLoss::dqn( const oa::Matrix & inQ, const oa::Matrix & inAction, const oa::Matrix & inReward, const oa::Matrix & inNextQ, const oa::Matrix & inTerminated, const oa::Matrix & inTruncated, const DqnLossConfig & inConfig = {} )
No public source comment is attached to this declaration.

Parameters

inQ
const oa::Matrix &

inAction
const oa::Matrix &

inReward
const oa::Matrix &

inNextQ
const oa::Matrix &

inTerminated
const oa::Matrix &

inTruncated
const oa::Matrix &

inConfig
const DqnLossConfig &

Default: {}

Returns

DqnLossResult

The declared return value.

Matrix oa::FnLoss::l1( const Matrix & inA, const Matrix & inB )
l1: mean absolute error. mean(|a-b|).

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

Matrix oa::FnLoss::l1Bwd( const Matrix & inA, const Matrix & inB )
l1Bwd: gradient w.r.t. inA: sign(a-b)/N.

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

const char * oa::FnLoss::lastName()
Returns the name of the most recently called loss function, or nullptr.

Returns

const char *

The declared return value.

Matrix oa::FnLoss::maskedCrossEntropy( const Matrix & inLogits, const Matrix & inTargets, const Matrix & inMask, oa::I32 inValidCount )
maskedCrossEntropy: cross-entropy over only rows where inMask is non-zero.

Parameters

inLogits
const Matrix &

inTargets
const Matrix &

inMask
const Matrix &

inValidCount
oa::I32

Returns

Matrix

The declared return value.

Matrix oa::FnLoss::maskedCrossEntropyBwd( const Matrix & inLogits, const Matrix & inTargets, const Matrix & inMask, oa::I32 inValidCount )
maskedCrossEntropyBwd: backward for maskedCrossEntropy.

Parameters

inLogits
const Matrix &

inTargets
const Matrix &

inMask
const Matrix &

inValidCount
oa::I32

Returns

Matrix

The declared return value.

Matrix oa::FnLoss::mse( const Matrix & inA, const Matrix & inB )
mse: mean squared error. mean((a-b)^2).

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

Matrix oa::FnLoss::mseBwd( const Matrix & inA, const Matrix & inB )
mseBwd: gradient w.r.t. inA: 2*(a-b)/N.

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

PpoLossResult oa::FnLoss::ppo( const oa::Matrix & inNewLogProbability, const oa::Matrix & inOldLogProbability, const oa::Matrix & inAdvantage, const oa::Matrix & inValue, const oa::Matrix & inTargetReturn, const oa::Matrix & inEntropy, const PpoLossConfig & inConfig = {} )
No public source comment is attached to this declaration.

Parameters

inNewLogProbability
const oa::Matrix &

inOldLogProbability
const oa::Matrix &

inAdvantage
const oa::Matrix &

inValue
const oa::Matrix &

inTargetReturn
const oa::Matrix &

inEntropy
const oa::Matrix &

inConfig
const PpoLossConfig &

Default: {}

Returns

PpoLossResult

The declared return value.

oa::Matrix oa::FnLoss::ppoClippedPolicy( const oa::Matrix & inNewLogProbability, const oa::Matrix & inOldLogProbability, const oa::Matrix & inAdvantage, oa::F32 inClipEpsilon = 0.2F )
No public source comment is attached to this declaration.

Parameters

inNewLogProbability
const oa::Matrix &

inOldLogProbability
const oa::Matrix &

inAdvantage
const oa::Matrix &

inClipEpsilon
oa::F32

Default: 0.2F

Returns

oa::Matrix

The declared return value.

oa::Matrix oa::FnLoss::ppoClippedPolicyBwd( const oa::Matrix & inNewLogProbability, const oa::Matrix & inOldLogProbability, const oa::Matrix & inAdvantage, oa::F32 inClipEpsilon = 0.2F )
No public source comment is attached to this declaration.

Parameters

inNewLogProbability
const oa::Matrix &

inOldLogProbability
const oa::Matrix &

inAdvantage
const oa::Matrix &

inClipEpsilon
oa::F32

Default: 0.2F

Returns

oa::Matrix

The declared return value.

oa::Matrix oa::FnLoss::sacActor( const oa::Matrix & inQ1, const oa::Matrix & inQ2, const oa::Matrix & inLogProbability, oa::F32 inEntropyCoefficient = 0.2F )
No public source comment is attached to this declaration.

Parameters

inQ1
const oa::Matrix &

inQ2
const oa::Matrix &

inLogProbability
const oa::Matrix &

inEntropyCoefficient
oa::F32

Default: 0.2F

Returns

oa::Matrix

The declared return value.

SacCriticLossResult oa::FnLoss::sacCritic( const oa::Matrix & inQ1, const oa::Matrix & inQ2, const oa::Matrix & inReward, const oa::Matrix & inNextQ1, const oa::Matrix & inNextQ2, const oa::Matrix & inNextLogProbability, const oa::Matrix & inTerminated, const oa::Matrix & inTruncated, const SacLossConfig & inConfig = {} )
No public source comment is attached to this declaration.

Parameters

inQ1
const oa::Matrix &

inQ2
const oa::Matrix &

inReward
const oa::Matrix &

inNextQ1
const oa::Matrix &

inNextQ2
const oa::Matrix &

inNextLogProbability
const oa::Matrix &

inTerminated
const oa::Matrix &

inTruncated
const oa::Matrix &

inConfig
const SacLossConfig &

Default: {}

Returns

SacCriticLossResult

The declared return value.

void oa::FnLoss::setLastName( const char * inName )
Internal: called by each loss function to record its name.

Parameters

inName
const char *

Returns

void

The declared return value.

Matrix oa::FnLoss::smoothL1( const Matrix & inA, const Matrix & inB )
smoothL1: smooth L1 / Huber loss (beta=1.0). mean over all elements.

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.

Matrix oa::FnLoss::smoothL1Bwd( const Matrix & inA, const Matrix & inB )
smoothL1Bwd: gradient w.r.t. inA.

Parameters

inA
const Matrix &

inB
const Matrix &

Returns

Matrix

The declared return value.