Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- class Dual (Tang p) (Grad p) => MetricTensor p g where
- evalMetric :: g -> Grad p -> Tang p
- innerProduct :: g -> Grad p -> Grad p -> MScalar p
- sqrNorm :: g -> Grad p -> MScalar p
Documentation
class Dual (Tang p) (Grad p) => MetricTensor p g where Source #
MetricTensor
converts gradients to vectors.
It is really inverse of a metric tensor, because it maps cotangent space into tangent space. Gradient descent doesn't need metric tensor, it needs inverse.
evalMetric :: g -> Grad p -> Tang p Source #
m
must be symmetric:
evalGrad x (evalMetric m y) = evalGrad y (evalMetric m x)
innerProduct :: g -> Grad p -> Grad p -> MScalar p Source #
innerProduct m x y = evalGrad x (evalMetric m y)
sqrNorm :: g -> Grad p -> MScalar p Source #
sqrNorm m x = innerProduct m x x
Instances
MetricTensor Integer Integer Source # | |
MetricTensor Double Double Source # | |
MetricTensor Float Float Source # | |
Num a => MetricTensor (AsNum a) (AsNum a) Source # | |
(MScalar a ~ MScalar b, MetricTensor a ma, MetricTensor b mb) => MetricTensor (a, b) (ma, mb) Source # | |
(MScalar a ~ MScalar b, MScalar a ~ MScalar c, MetricTensor a ma, MetricTensor b mb, MetricTensor c mc) => MetricTensor (a, b, c) (ma, mb, mc) Source # | |