chainer.functions.gaussian_kl_divergence(mean, ln_var, reduce='sum')[source]

 標準的なものからガウス分布のKL(Kullback–Leibler)ダイバージェンスを計算する。

 

 \(\mu\) を表す mean\(\log(\sigma^2)\)を表す ln_var の2つの変数が与えられ、この関数は与えられた多次元ガウス分布 \(N(\mu, S)\) と 標準的なガウス分布 \(N(0, I)\)の間のエレメントごとにKL-ダイバージェンスを計算します。

 

\[D_{\mathbf{KL}}(N(\mu, S) \| N(0, I)),\]

ただし \(S\)\(S_{ii} = \sigma_i^2\) のような対角行列で \(I\) は単位行列。

 

出力の値は reduce.オプションの値に依存する。'no'が設定されている場合、エレメントごとのロス値を持つ。'sum'の場合、ロス値は合計される。

 

Parameters:
  • mean (Variable or numpy.ndarray or cupy.ndarray) –与えられたガウス分布の平均を表す変数、 \(\mu\)
  • ln_var (Variable or numpy.ndarray or cupy.ndarray) – 与えられたガウス分布の分散の対数を表す変数、 \(\log(\sigma^2)\).
  • reduce (str) – 削減オプション。 この値は 'sum''no'のいずれかでなければならない。それ以外では、ValueError が発生する。
Returns:

与えられたガウス分布と標準ガウス分布(正規分布)間のKLダイバージェンスを表す変数。 reduce'no'が設定されている場合、出力変数は入力変数の一方(したがって両方)と同じshapeである配列。 'sum'が設定されている場合、出力変数はスカラ値。

Return type:

Variable