module Main where

import Lib
import Numeric.LinearAlgebra
import Data.List
import Debug.Trace

-- 1x2
-- 2x3 + 1x3
-- 3x1 + 1x1

main :: IO ()
main =
  let learning_rate = 0.5
      ih = randomLayer 0 (2, 10)
      ho = randomLayer 1 (10, 1)
      network = ih :- O ho
      inputs = [vector [0, 1], vector [1, 1], vector [1, 0], vector [0, 0]]

      -- result = forward input network

      labels = [vector [1], vector [0], vector [1], vector [0]]

      updated_network = session inputs network labels 0.01 10000
      -- updated_network = train (head inputs) network (head labels) 0.5
      results = map (\x -> forward x updated_network) inputs
  in print results
