···11+{-# LANGUAGE DataKinds #-}
22+{-# LANGUAGE FlexibleInstances #-}
33+{-# LANGUAGE MultiParamTypeClasses #-}
44+{-# LANGUAGE TypeFamilies #-}
55+{-# LANGUAGE TypeOperators #-}
66+{-|
77+Module : Grenade.Layers.Tanh
88+Description : Sinusoid nonlinear layer
99+Copyright : (c) Manuel Schneckenreither, 2018
1010+License : BSD2
1111+Stability : experimental
1212+-}
1313+module Grenade.Layers.Sinusoid (
1414+ Sinusoid (..)
1515+ ) where
1616+1717+import Data.Serialize
1818+import Data.Singletons
1919+2020+import Grenade.Core
2121+2222+-- | A Sinusoid layer.
2323+-- A layer which can act between any shape of the same dimension, performing a sin function.
2424+data Sinusoid = Sinusoid
2525+ deriving Show
2626+2727+instance UpdateLayer Sinusoid where
2828+ type Gradient Sinusoid = ()
2929+ runUpdate _ _ _ = Sinusoid
3030+ createRandom = return Sinusoid
3131+3232+instance Serialize Sinusoid where
3333+ put _ = return ()
3434+ get = return Sinusoid
3535+3636+instance (a ~ b, SingI a) => Layer Sinusoid a b where
3737+ type Tape Sinusoid a b = S a
3838+ runForwards _ a = (a, sin a)
3939+ runBackwards _ a g = ((), cos a * g)
+3-3
src/Grenade/Layers/Tanh.hs
···11{-# LANGUAGE DataKinds #-}
22-{-# LANGUAGE TypeOperators #-}
33-{-# LANGUAGE TypeFamilies #-}
42{-# LANGUAGE FlexibleInstances #-}
53{-# LANGUAGE MultiParamTypeClasses #-}
44+{-# LANGUAGE TypeFamilies #-}
55+{-# LANGUAGE TypeOperators #-}
66{-|
77Module : Grenade.Layers.Tanh
88Description : Hyperbolic tangent nonlinear layer
···2020import Grenade.Core
21212222-- | A Tanh layer.
2323--- A layer which can act between any shape of the same dimension, perfoming a tanh function.
2323+-- A layer which can act between any shape of the same dimension, performing a tanh function.
2424data Tanh = Tanh
2525 deriving Show
2626