36 lines
1.2 KiB
Haskell
36 lines
1.2 KiB
Haskell
|
module Main where
|
||
|
import Sibe
|
||
|
import Numeric.LinearAlgebra
|
||
|
import Data.List
|
||
|
import Debug.Trace
|
||
|
|
||
|
main = do
|
||
|
let alpha = 0.5
|
||
|
epochs = 1000
|
||
|
a = (sigmoid, sigmoid')
|
||
|
lo = (sigmoid, (\_ -> 1)) -- cross entropy
|
||
|
-- a = (relu, relu')
|
||
|
rnetwork = randomNetwork 0 (-1, 1) 1 [(50, a)] (1, lo)
|
||
|
|
||
|
inputs = map (\a -> vector [a]) (reverse [0, 30, 45, 60, 90])
|
||
|
labels = map (\deg -> vector $ [sin $ deg * pi/180]) (reverse [0, 30, 45, 60, 90])
|
||
|
|
||
|
initial_cost = zipWith crossEntropy (map (`forward` rnetwork) inputs) labels
|
||
|
|
||
|
network <- run session inputs rnetwork labels alpha epochs
|
||
|
|
||
|
let results = map (`forward` network) inputs
|
||
|
rounded = map (map round . toList) results
|
||
|
|
||
|
cost = zipWith crossEntropy (map (`forward` network) inputs) labels
|
||
|
|
||
|
putStrLn "parameters: "
|
||
|
putStrLn $ "- inputs: " ++ show inputs
|
||
|
putStrLn $ "- labels: " ++ show labels
|
||
|
putStrLn $ "- learning rate: " ++ show alpha
|
||
|
putStrLn $ "- epochs: " ++ show epochs
|
||
|
{-putStrLn $ "- initial cost (cross-entropy): " ++ show initial_cost-}
|
||
|
putStrLn "results: "
|
||
|
putStrLn $ "- actual result: " ++ show results
|
||
|
{-putStrLn $ "- cost (cross-entropy): " ++ show cost-}
|