on master help sign in
Nicer types, and better regulariser so mnist actually works
109d5beHuw Campbell
main/feedforward.hs+2−2
@@ -26,7 +26,7 @@ import Grenade
26-- between the shapes, so inference can't do it all for us.
26-- between the shapes, so inference can't do it all for us.
27
27
28-- With around 100000 examples, this should show two clear circles which have been learned by the network.
28-- With around 100000 examples, this should show two clear circles which have been learned by the network.
29−randomNet :: (MonadRandom m) => m (Network '[ 'D1 2, 'D1 40, 'D1 40, 'D1 10, 'D1 10, 'D1 1, 'D1 1])
29+randomNet :: MonadRandom m => m (Network '[ 'D1 2, 'D1 40, 'D1 40, 'D1 10, 'D1 10, 'D1 1, 'D1 1])
30randomNet = do
30randomNet = do
31 a :: FullyConnected 2 40 <- randomFullyConnected
31 a :: FullyConnected 2 40 <- randomFullyConnected
32 b :: FullyConnected 40 10 <- randomFullyConnected
32 b :: FullyConnected 40 10 <- randomFullyConnected
@@ -74,7 +74,7 @@ feedForward' =
74 <*> (LearningParameters
74 <*> (LearningParameters
75 <$> option auto (long "train_rate" <> short 'r' <> value 0.01)
75 <$> option auto (long "train_rate" <> short 'r' <> value 0.01)
76 <*> option auto (long "momentum" <> value 0.9)
76 <*> option auto (long "momentum" <> value 0.9)
77− <*> option auto (long "l2" <> value 0.0001)
77+ <*> option auto (long "l2" <> value 0.0005)
78 )
78 )
79
79
80main :: IO ()
80main :: IO ()
main/mnist.hs+2−2
@@ -74,11 +74,11 @@ data MnistOpts = MnistOpts FilePath FilePath Int LearningParameters
74mnist' :: Parser MnistOpts
74mnist' :: Parser MnistOpts
75mnist' = MnistOpts <$> argument str (metavar "TRAIN")
75mnist' = MnistOpts <$> argument str (metavar "TRAIN")
76 <*> argument str (metavar "VALIDATE")
76 <*> argument str (metavar "VALIDATE")
77− <*> option auto (long "iterations" <> short 'i' <> value 15)
77+ <*> option auto (long "iterations" <> short 'i' <> value 10)
78 <*> (LearningParameters
78 <*> (LearningParameters
79 <$> option auto (long "train_rate" <> short 'r' <> value 0.01)
79 <$> option auto (long "train_rate" <> short 'r' <> value 0.01)
80 <*> option auto (long "momentum" <> value 0.9)
80 <*> option auto (long "momentum" <> value 0.9)
81− <*> option auto (long "l2" <> value 0.0001)
81+ <*> option auto (long "l2" <> value 0.0005)
82 )
82 )
83
83
84main :: IO ()
84main :: IO ()
src/Grenade/Core/Network.hs+1−1
@@ -31,7 +31,7 @@ class UpdateLayer x where
31 -- Unit if there isn't a gradient to pass back.
31 -- Unit if there isn't a gradient to pass back.
32 type Gradient x :: *
32 type Gradient x :: *
33 -- | Update a layer with its gradient and learning parameters
33 -- | Update a layer with its gradient and learning parameters
34− runUpdate :: LearningParameters -> x -> Gradient x -> x
34+ runUpdate :: LearningParameters -> x -> Gradient x -> x
35
35
36-- | Class for a layer. All layers implement this, however, they don't
36-- | Class for a layer. All layers implement this, however, they don't
37-- need to implement it for all shapes, only ones which are appropriate.
37-- need to implement it for all shapes, only ones which are appropriate.