safe-coupling-0.1.0.0: test/Spec/SGD.hs
module Spec.SGD where
import Test.HUnit ( assertEqual
, (@?)
, (@?=)
, Assertion
)
import Numeric.Probability.Distribution
( decons )
import Spec.Utils
import SGD.SGD
{-@ loss :: DataPoint -> {ws:[Weight]|len ws = 1} -> Dbl @-}
loss :: DataPoint -> Weight -> Double
loss (x, y) w = (y - x + w) ^ 2
dp :: DataPoint
dp = (0, 1)
ss :: StepSizes
ss = SS 0.5 (SS 0.5 (SS 0.5 (SS 0.5 SSEmp)))
unit_sgd :: Assertion
unit_sgd = w @?= (-1)
where [(w, 1)] = clean $ decons $ sgd (replicate 4 dp) 1 ss loss