Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env stack
- -- stack --install-ghc runghc --resolver lts-11.9 --package backprop-0.2.2.0 --package random --package hmatrix-backprop-0.1.2.1 --package statistics --package lens --package one-liner-instances --package split --package ghc-typelits-natnormalise --package ghc-typelits-knownnat --package hmatrix --package hmatrix-vector-sized --package microlens --package vector-sized --package transformers --package type-combinators -- -O2 NN2.hs
- {-# LANGUAGE DataKinds #-}
- {-# LANGUAGE DeriveGeneric #-}
- {-# LANGUAGE FlexibleContexts #-}
- {-# LANGUAGE FlexibleInstances #-}
- {-# LANGUAGE GADTs #-}
- {-# LANGUAGE LambdaCase #-}
- {-# LANGUAGE MultiParamTypeClasses #-}
- {-# LANGUAGE PartialTypeSignatures #-}
- {-# LANGUAGE PatternSynonyms #-}
- {-# LANGUAGE RankNTypes #-}
- {-# LANGUAGE ScopedTypeVariables #-}
- {-# LANGUAGE TypeApplications #-}
- {-# LANGUAGE TypeInType #-}
- {-# LANGUAGE TypeOperators #-}
- {-# LANGUAGE ViewPatterns #-}
- {-# OPTIONS_GHC -fno-warn-orphans #-}
- {-# OPTIONS_GHC -fno-warn-partial-type-signatures #-}
- {-# OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver #-}
- {-# OPTIONS_GHC -fplugin GHC.TypeLits.Normalise #-}
- {-# OPTIONS_GHC -fwarn-redundant-constraints #-}
- import Control.Monad.Trans.State
- import Data.Bifunctor
- import Data.Foldable
- import Data.List
- import Data.List.Split
- import Data.Tuple
- import Data.Type.Option
- import GHC.Generics (Generic)
- import GHC.TypeNats
- import Lens.Micro hiding ((&))
- import Numeric.Backprop
- import Numeric.LinearAlgebra.Static.Backprop as BP
- import Numeric.LinearAlgebra.Static.Vector
- import Numeric.OneLiner
- import System.Random
- import qualified Data.Vector.Storable.Sized as SVS
- import qualified Numeric.LinearAlgebra as HU
- import qualified Numeric.LinearAlgebra.Static as H
- import qualified Prelude.Backprop as B
- import qualified Numeric.LinearAlgebra as LA
- import qualified Data.Vector.Sized as SV
- import Data.Maybe ( fromJust )
- mk2x2 :: Reifies s W => (BVar s (H.L 2 2))
- mk2x2 = fromJust $ fmap BP.fromColumns c1
- where
- b = H.fromList [1,2] :: H.R 2
- b1 = H.fromList [0,3] :: H.R 2
- c = map auto [b, b1] :: [BVar s (H.R 2)]
- c1 = SV.fromList c :: Maybe (SV.Vector 2 (BVar s (H.R 2)))
- testMul :: H.L 2 2
- testMul = evalBP2 (BP.<>) mk2x2 mk2x2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement