Advertisement
Guest User

Untitled

a guest
Feb 13th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env stack
  2. -- 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
  3.  
  4.  
  5. {-# LANGUAGE DataKinds                                #-}
  6. {-# LANGUAGE DeriveGeneric                            #-}
  7. {-# LANGUAGE FlexibleContexts                         #-}
  8. {-# LANGUAGE FlexibleInstances                        #-}
  9. {-# LANGUAGE GADTs                                    #-}
  10. {-# LANGUAGE LambdaCase                               #-}
  11. {-# LANGUAGE MultiParamTypeClasses                    #-}
  12. {-# LANGUAGE PartialTypeSignatures                    #-}
  13. {-# LANGUAGE PatternSynonyms                          #-}
  14. {-# LANGUAGE RankNTypes                               #-}
  15. {-# LANGUAGE ScopedTypeVariables                      #-}
  16. {-# LANGUAGE TypeApplications                         #-}
  17. {-# LANGUAGE TypeInType                               #-}
  18. {-# LANGUAGE TypeOperators                            #-}
  19. {-# LANGUAGE ViewPatterns                             #-}
  20. {-# OPTIONS_GHC -fno-warn-orphans                     #-}
  21. {-# OPTIONS_GHC -fno-warn-partial-type-signatures     #-}
  22. {-# OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver #-}
  23. {-# OPTIONS_GHC -fplugin GHC.TypeLits.Normalise       #-}
  24. {-# OPTIONS_GHC -fwarn-redundant-constraints          #-}
  25.  
  26. import           Control.Monad.Trans.State
  27. import           Data.Bifunctor
  28. import           Data.Foldable
  29. import           Data.List
  30. import           Data.List.Split
  31. import           Data.Tuple
  32. import           Data.Type.Option
  33. import           GHC.Generics                          (Generic)
  34. import           GHC.TypeNats
  35. import           Lens.Micro hiding                     ((&))
  36. import           Numeric.Backprop
  37. import           Numeric.LinearAlgebra.Static.Backprop as BP
  38. import           Numeric.LinearAlgebra.Static.Vector
  39. import           Numeric.OneLiner
  40. import           System.Random
  41. import qualified Data.Vector.Storable.Sized            as SVS
  42. import qualified Numeric.LinearAlgebra                 as HU
  43. import qualified Numeric.LinearAlgebra.Static          as H
  44. import qualified Prelude.Backprop                      as B
  45. import qualified Numeric.LinearAlgebra as LA
  46. import qualified Data.Vector.Sized                   as SV
  47. import           Data.Maybe ( fromJust )
  48.  
  49.  
  50. mk2x2 :: Reifies s W => (BVar s (H.L 2 2))
  51. mk2x2 = fromJust $ fmap BP.fromColumns c1
  52.   where
  53.     b = H.fromList [1,2] :: H.R 2
  54.     b1 = H.fromList [0,3] :: H.R 2
  55.  
  56.     c = map auto [b, b1] :: [BVar s (H.R 2)]
  57.     c1 = SV.fromList c :: Maybe (SV.Vector 2 (BVar s (H.R 2)))
  58.  
  59. testMul :: H.L 2 2
  60. testMul = evalBP2 (BP.<>) mk2x2 mk2x2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement