import Network import Numeric.LinearAlgebra trainData :: Samples Double trainData = [(vector [0, 0], vector [0]), (vector [0, 1], vector [1]), (vector [1, 0], vector [1]), (vector [0, 0], vector [0])] l1 = Layer { weights = (3><2) [1..], biases = vector [1..3] } l2 = Layer { weights = (1><3) [1..], biases = vector [1] } fixedNet = Network [l1, l2] debug _ _ = "Bla!" main :: IO () main = do net <- newNetwork [2, 3, 1] {-let smartNet = update 0.06 net trainData-} {-[>let smartNet = trainSGD net trainData 4 0.06<]-} let debug _ _ = "" smartNet = trainNTimes 100000 debug net trainData 4 100 putStrLn "Output after learning: " mapM_ (print . Network.output smartNet sigmoid . fst) trainData