Safe Haskell | None |
---|---|
Language | GHC2024 |
HordeAd.Core.OpsADVal
Contents
Description
Tensor class instances for dual numbers. All definitions
are generic over whether the dual numbers are built from concrete arrays
of floats or from AST terms or anything else (e.g., nested ADVal
).
Documentation
crevOnADInputs :: forall (x :: TK) (z :: TK) target. (ADReadyNoLet target, ShareTensor target) => Maybe (target (ADTensorKind z)) -> (ADVal target x -> ADVal target z) -> FullShapeTK x -> ADVal target x -> (target (ADTensorKind x), target z) Source #
crevOnParams :: forall (x :: TK) (z :: TK) target. (ADReadyNoLet target, ShareTensor target) => Maybe (target (ADTensorKind z)) -> (ADVal target x -> ADVal target z) -> FullShapeTK x -> target x -> (target (ADTensorKind x), target z) Source #
cfwdOnParams :: forall (x :: TK) (z :: TK) target. (ADReadyNoLet target, ShareTensor target) => FullShapeTK x -> target x -> (ADVal target x -> ADVal target z) -> target (ADTensorKind x) -> (target (ADTensorKind z), target z) Source #
Orphan instances
(ADReadyNoLet target, ShareTensor target, ShareTensor (PrimalOf target)) => ConvertTensor (ADVal target) Source # | |
Methods tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> ADVal target a -> ADVal target b Source # kfromR :: GoodScalar r => ADVal target (TKR 0 r) -> ADVal target ('TKScalar r) Source # kfromS :: GoodScalar r => ADVal target (TKS ('[] :: [Nat]) r) -> ADVal target ('TKScalar r) Source # kfromX :: GoodScalar r => ADVal target (TKX ('[] :: [Maybe Nat]) r) -> ADVal target ('TKScalar r) Source # rfromK :: GoodScalar r => ADVal target ('TKScalar r) -> ADVal target (TKR 0 r) Source # rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => ADVal target ('TKS2 sh x) -> ADVal target ('TKR2 (Rank sh) x) Source # rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 sh x) -> ADVal target ('TKR2 (Rank sh) x) Source # sfromK :: GoodScalar r => ADVal target ('TKScalar r) -> ADVal target (TKS ('[] :: [Nat]) r) Source # sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => ADVal target ('TKR2 (Rank sh) x) -> ADVal target ('TKS2 sh x) Source # sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => ADVal target ('TKX2 sh' x) -> ADVal target ('TKS2 sh x) Source # xfromK :: GoodScalar r => ADVal target ('TKScalar r) -> ADVal target (TKX ('[] :: [Maybe Nat]) r) Source # xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => ADVal target ('TKR2 (Rank sh') x) -> ADVal target ('TKX2 sh' x) Source # xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => ADVal target ('TKS2 sh x) -> ADVal target ('TKX2 sh' x) Source # rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => ADVal target ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> ADVal target ('TKR2 n ('TKProduct y z)) Source # runzip :: forall (y :: TK) (z :: TK) (n :: Nat). ADVal target ('TKR2 n ('TKProduct y z)) -> ADVal target ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source # szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => ADVal target ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> ADVal target ('TKS2 sh ('TKProduct y z)) Source # sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). ADVal target ('TKS2 sh ('TKProduct y z)) -> ADVal target ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source # xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => ADVal target ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> ADVal target ('TKX2 sh ('TKProduct y z)) Source # xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). ADVal target ('TKX2 sh ('TKProduct y z)) -> ADVal target ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source # rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> ADVal target ('TKR2 (n + m) x) -> ADVal target ('TKR2 n ('TKR2 m x)) Source # rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> ADVal target ('TKR2 n ('TKS2 sh2 x)) Source # rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> ADVal target ('TKR2 n ('TKX2 sh2 x)) Source # snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> ADVal target ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> ADVal target ('TKS2 sh1 ('TKR2 m x)) Source # snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> ADVal target ('TKS2 (sh1 ++ sh2) x) -> ADVal target ('TKS2 sh1 ('TKS2 sh2 x)) Source # snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> ADVal target ('TKX2 (MapJust sh1 ++ sh2) x) -> ADVal target ('TKS2 sh1 ('TKX2 sh2 x)) Source # xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> ADVal target ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> ADVal target ('TKX2 sh1 ('TKR2 m x)) Source # xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> ADVal target ('TKX2 (sh1 ++ MapJust sh2) x) -> ADVal target ('TKX2 sh1 ('TKS2 sh2 x)) Source # xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> ADVal target ('TKX2 (sh1 ++ sh2) x) -> ADVal target ('TKX2 sh1 ('TKX2 sh2 x)) Source # runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => ADVal target ('TKR2 n ('TKR2 m x)) -> ADVal target ('TKR2 (n + m) x) Source # runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => ADVal target ('TKR2 n ('TKS2 sh2 x)) -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) Source # runNestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh2, KnownSTK x) => ADVal target ('TKR2 n ('TKX2 sh2 x)) -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source # sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => ADVal target ('TKS2 sh1 ('TKR2 m x)) -> ADVal target ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source # sunNest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x) => ADVal target ('TKS2 sh1 ('TKS2 sh2 x)) -> ADVal target ('TKS2 (sh1 ++ sh2) x) Source # sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => ADVal target ('TKS2 sh1 ('TKX2 sh2 x)) -> ADVal target ('TKX2 (MapJust sh1 ++ sh2) x) Source # xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => ADVal target ('TKX2 sh1 ('TKR2 m x)) -> ADVal target ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source # xunNestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShX sh1, KnownShS sh2, KnownSTK x) => ADVal target ('TKX2 sh1 ('TKS2 sh2 x)) -> ADVal target ('TKX2 (sh1 ++ MapJust sh2) x) Source # xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => ADVal target ('TKX2 sh1 ('TKX2 sh2 x)) -> ADVal target ('TKX2 (sh1 ++ sh2) x) Source # tpairConv :: forall (x :: TK) (z :: TK). ADVal target x -> ADVal target z -> ADVal target ('TKProduct x z) Source # tunpairConv :: forall (x :: TK) (z :: TK). ADVal target ('TKProduct x z) -> (ADVal target x, ADVal target z) Source # | |
(ADReadyNoLet target, ShareTensor target, ShareTensor (PrimalOf target)) => BaseTensor (ADVal target) Source # | |
Methods rshape :: forall (n :: Nat) (x :: TK). KnownSTK x => ADVal target ('TKR2 n x) -> IShR n Source # rlength :: forall (n :: Nat) (x :: TK). KnownSTK x => ADVal target ('TKR2 n x) -> Int Source # rsize :: forall (n :: Nat) (x :: TK). KnownSTK x => ADVal target ('TKR2 n x) -> Int Source # rwidth :: forall (n :: Natural) (x :: TK). KnownSTK x => ADVal target ('TKR2 (1 + n) x) -> Int Source # sshape :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => ADVal target ('TKS2 sh x) -> ShS sh Source # slength :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => ADVal target ('TKS2 sh x) -> Int Source # ssize :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => ADVal target ('TKS2 sh x) -> Int Source # swidth :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). KnownSTK x => ADVal target ('TKS2 (n ': sh) x) -> Int Source # xshape :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 sh x) -> IShX sh Source # xlength :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 sh x) -> Int Source # xsize :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 sh x) -> Int Source # xwidth :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 (mn ': sh) x) -> Int Source # tsize :: forall (y :: TK). SingletonTK y -> ADVal target y -> Int Source # tftk :: forall (y :: TK). SingletonTK y -> ADVal target y -> FullShapeTK y Source # tpair :: forall (x :: TK) (z :: TK). ADVal target x -> ADVal target z -> ADVal target ('TKProduct x z) Source # tproject1 :: forall (x :: TK) (z :: TK). ADVal target ('TKProduct x z) -> ADVal target x Source # tproject2 :: forall (x :: TK) (z :: TK). ADVal target ('TKProduct x z) -> ADVal target z Source # tcond :: forall (y :: TK). Boolean (BoolOf (ADVal target)) => SingletonTK y -> BoolOf (ADVal target) -> ADVal target y -> ADVal target y -> ADVal target y Source # trconcrete :: forall r (n :: Nat). GoodScalar r => Ranked n r -> ADVal target (TKR n r) Source # tsconcrete :: forall r (sh :: [Nat]). GoodScalar r => Shaped sh r -> ADVal target (TKS sh r) Source # txconcrete :: forall r (sh :: [Maybe Nat]). GoodScalar r => Mixed sh r -> ADVal target (TKX sh r) Source # tkconcrete :: GoodScalar r => r -> ADVal target ('TKScalar r) Source # tconcrete :: forall (y :: TK). FullShapeTK y -> Concrete y -> ADVal target y Source # trfromVector :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => Vector (ADVal target ('TKR2 n x)) -> ADVal target ('TKR2 (1 + n) x) Source # trfromVector0N :: forall (n :: Nat) (x :: TK). KnownSTK x => IShR n -> Vector (ADVal target ('TKR2 0 x)) -> ADVal target ('TKR2 n x) Source # trunravelToList :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => ADVal target ('TKR2 (1 + n) x) -> [ADVal target ('TKR2 n x)] Source # tsfromVector :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh, KnownSTK x) => Vector (ADVal target ('TKS2 sh x)) -> ADVal target ('TKS2 (n ': sh) x) Source # tsfromVector0N :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => Vector (ADVal target ('TKS2 ('[] :: [Nat]) x)) -> ADVal target ('TKS2 sh x) Source # tsunravelToList :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh, KnownSTK x) => ADVal target ('TKS2 (n ': sh) x) -> [ADVal target ('TKS2 sh x)] Source # txfromVector :: forall (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh, KnownSTK x) => Vector (ADVal target ('TKX2 sh x)) -> ADVal target ('TKX2 ('Just n ': sh) x) Source # txfromVector0N :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => IShX sh -> Vector (ADVal target ('TKX2 ('[] :: [Maybe Nat]) x)) -> ADVal target ('TKX2 sh x) Source # txunravelToList :: forall (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh, KnownSTK x) => ADVal target ('TKX2 ('Just n ': sh) x) -> [ADVal target ('TKX2 sh x)] Source # tfromVector :: forall (y :: TK) (k :: Nat). SNat k -> SingletonTK y -> Vector (ADVal target y) -> ADVal target (BuildTensorKind k y) Source # tfromListR :: forall (y :: TK) (k :: Nat). SingletonTK y -> ListR k (ADVal target y) -> ADVal target (BuildTensorKind k y) Source # trsum :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => ADVal target ('TKR2 (1 + n) x) -> ADVal target ('TKR2 n x) Source # trsum0 :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => ADVal target ('TKR2 n x) -> ADVal target ('TKR2 0 x) Source # trdot0 :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => ADVal target (TKR n r) -> ADVal target (TKR n r) -> ADVal target (TKR 0 r) Source # trdot1In :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => ADVal target (TKR (1 + n) r) -> ADVal target (TKR (1 + n) r) -> ADVal target (TKR n r) Source # trmatvecmul :: GoodScalar r => ADVal target (TKR 2 r) -> ADVal target (TKR 1 r) -> ADVal target (TKR 1 r) Source # trmatmul2 :: GoodScalar r => ADVal target (TKR 2 r) -> ADVal target (TKR 2 r) -> ADVal target (TKR 2 r) Source # trreplicate :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => Int -> ADVal target ('TKR2 n x) -> ADVal target ('TKR2 (1 + n) x) Source # trreplicate0N :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => IShR n -> ADVal target ('TKR2 0 x) -> ADVal target ('TKR2 n x) Source # tssum :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh, KnownSTK x) => ADVal target ('TKS2 (n ': sh) x) -> ADVal target ('TKS2 sh x) Source # tssum0 :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => ADVal target ('TKS2 sh x) -> ADVal target ('TKS2 ('[] :: [Nat]) x) Source # tsdot0 :: forall (sh :: [Nat]) r. (KnownShS sh, GoodScalar r) => ADVal target (TKS sh r) -> ADVal target (TKS sh r) -> ADVal target (TKS ('[] :: [Nat]) r) Source # tsdot1In :: forall (sh :: [Nat]) r (n :: Nat). (KnownShS sh, GoodScalar r) => SNat n -> ADVal target (TKS (sh ++ '[n]) r) -> ADVal target (TKS (sh ++ '[n]) r) -> ADVal target (TKS sh r) Source # tsmatvecmul :: forall (m :: Nat) (n :: Nat) r. (KnownNat m, KnownNat n, GoodScalar r) => ADVal target (TKS '[m, n] r) -> ADVal target (TKS '[n] r) -> ADVal target (TKS '[m] r) Source # tsmatmul2 :: forall (m :: Nat) (n :: Nat) (p :: Nat) r. (KnownNat m, KnownNat n, KnownNat p, GoodScalar r) => ADVal target (TKS '[m, n] r) -> ADVal target (TKS '[n, p] r) -> ADVal target (TKS '[m, p] r) Source # tsreplicate :: forall (sh :: [Nat]) (k :: Nat) (x :: TK). KnownSTK x => SNat k -> ShS sh -> ADVal target ('TKS2 sh x) -> ADVal target ('TKS2 (k ': sh) x) Source # tsreplicate0N :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => ShS sh -> ADVal target ('TKS2 ('[] :: [Nat]) x) -> ADVal target ('TKS2 sh x) Source # txsum :: forall (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh, KnownSTK x) => ADVal target ('TKX2 ('Just n ': sh) x) -> ADVal target ('TKX2 sh x) Source # txsum0 :: forall (sh :: [Maybe Nat]) (x :: TK). (KnownShX sh, KnownSTK x, ConvertTensor (ADVal target)) => ADVal target ('TKX2 sh x) -> ADVal target ('TKX2 ('[] :: [Maybe Nat]) x) Source # txdot0 :: forall (sh :: [Maybe Nat]) r. (KnownShX sh, GoodScalar r, ConvertTensor (ADVal target)) => ADVal target (TKX sh r) -> ADVal target (TKX sh r) -> ADVal target (TKX ('[] :: [Maybe Nat]) r) Source # txdot1In :: forall (sh :: [Maybe Nat]) r (n :: Nat). (KnownShX sh, GoodScalar r) => SNat n -> ADVal target (TKX (sh ++ '['Just n]) r) -> ADVal target (TKX (sh ++ '['Just n]) r) -> ADVal target (TKX sh r) Source # txmatvecmul :: forall (mm :: Maybe Nat) (mn :: Maybe Nat) r. (GoodScalar r, ConvertTensor (ADVal target)) => SMayNat Int SNat mm -> SMayNat Int SNat mn -> ADVal target (TKX '[mm, mn] r) -> ADVal target (TKX '[mn] r) -> ADVal target (TKX '[mm] r) Source # txmatmul2 :: forall (m :: Nat) (n :: Nat) (p :: Nat) r. (KnownNat m, KnownNat n, KnownNat p, GoodScalar r, ConvertTensor (ADVal target)) => ADVal target (TKX '['Just m, 'Just n] r) -> ADVal target (TKX '['Just n, 'Just p] r) -> ADVal target (TKX '['Just m, 'Just p] r) Source # txreplicate :: forall (sh :: [Maybe Nat]) (k :: Nat) (x :: TK). KnownSTK x => SNat k -> StaticShX sh -> ADVal target ('TKX2 sh x) -> ADVal target ('TKX2 ('Just k ': sh) x) Source # txreplicate0N :: forall (sh :: [Maybe Nat]) (x :: TK). (KnownShX sh, KnownSTK x) => IShX sh -> ADVal target ('TKX2 ('[] :: [Maybe Nat]) x) -> ADVal target ('TKX2 sh x) Source # trindex :: forall (m :: Nat) (n :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownSTK x) => ADVal target ('TKR2 (m + n) x) -> IxROf (ADVal target) m -> ADVal target ('TKR2 n x) Source # trindex0 :: forall (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ADVal target ('TKR2 m x) -> IxROf (ADVal target) m -> ADVal target ('TKR2 0 x) Source # troneHot :: forall (m :: Nat) (n :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownSTK x, BoolOf (PrimalOf (ADVal target)) ~ BoolOf (ADVal target), EqH (PrimalOf (ADVal target)) ('TKScalar Int64)) => IShR m -> ADVal target ('TKR2 n x) -> IxROf (ADVal target) m -> ADVal target ('TKR2 (m + n) x) Source # trscatter :: forall (m :: Nat) (n :: Nat) (p :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownNat p, KnownSTK x) => IShR (p + n) -> ADVal target ('TKR2 (m + n) x) -> (IxROf (ADVal target) m -> IxROf (ADVal target) p) -> ADVal target ('TKR2 (p + n) x) Source # trscatter1 :: forall (n :: Nat) (p :: Nat) (x :: TK). (KnownNat n, KnownNat p, KnownSTK x) => IShR (p + n) -> ADVal target ('TKR2 (1 + n) x) -> (IntOf (ADVal target) -> IxROf (ADVal target) p) -> ADVal target ('TKR2 (p + n) x) Source # trgather :: forall (m :: Nat) (n :: Nat) (p :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownNat p, KnownSTK x) => IShR (m + n) -> ADVal target ('TKR2 (p + n) x) -> (IxROf (ADVal target) m -> IxROf (ADVal target) p) -> ADVal target ('TKR2 (m + n) x) Source # trgather1 :: forall (n :: Nat) (p :: Nat) (x :: TK). (KnownNat n, KnownNat p, KnownSTK x) => Int -> ADVal target ('TKR2 (p + n) x) -> (IntOf (ADVal target) -> IxROf (ADVal target) p) -> ADVal target ('TKR2 (1 + n) x) Source # tsindex :: forall (shm :: [Nat]) (shn :: [Nat]) (x :: TK). (KnownShS shm, KnownShS shn, KnownSTK x) => ADVal target ('TKS2 (shm ++ shn) x) -> IxSOf (ADVal target) shm -> ADVal target ('TKS2 shn x) Source # tsindex0 :: forall (sh1 :: [Nat]) (x :: TK). (KnownShS sh1, KnownSTK x) => ADVal target ('TKS2 sh1 x) -> IxSOf (ADVal target) sh1 -> ADVal target ('TKS2 ('[] :: [Nat]) x) Source # tsoneHot :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x, BoolOf (PrimalOf (ADVal target)) ~ BoolOf (ADVal target), EqH (PrimalOf (ADVal target)) ('TKScalar Int64)) => ADVal target ('TKS2 sh2 x) -> IxSOf (ADVal target) sh1 -> ADVal target ('TKS2 (sh1 ++ sh2) x) Source # tsscatter :: forall (shm :: [Nat]) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownShS shm, KnownShS shn, KnownShS shp, KnownSTK x) => ADVal target ('TKS2 (shm ++ shn) x) -> (IxSOf (ADVal target) shm -> IxSOf (ADVal target) shp) -> ADVal target ('TKS2 (shp ++ shn) x) Source # tsscatter1 :: forall (n2 :: Nat) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownNat n2, KnownShS shn, KnownShS shp, KnownSTK x) => ADVal target ('TKS2 (n2 ': shn) x) -> (IntOf (ADVal target) -> IxSOf (ADVal target) shp) -> ADVal target ('TKS2 (shp ++ shn) x) Source # tsgather :: forall (shm :: [Nat]) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownShS shm, KnownShS shn, KnownShS shp, KnownSTK x) => ADVal target ('TKS2 (shp ++ shn) x) -> (IxSOf (ADVal target) shm -> IxSOf (ADVal target) shp) -> ADVal target ('TKS2 (shm ++ shn) x) Source # tsgather1 :: forall (n2 :: Nat) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownNat n2, KnownShS shn, KnownShS shp, KnownSTK x) => ADVal target ('TKS2 (shp ++ shn) x) -> (IntOf (ADVal target) -> IxSOf (ADVal target) shp) -> ADVal target ('TKS2 (n2 ': shn) x) Source # txindex :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => ADVal target ('TKX2 (sh1 ++ sh2) x) -> IxXOf (ADVal target) sh1 -> ADVal target ('TKX2 sh2 x) Source # txindex0 :: forall (sh1 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownSTK x) => ADVal target ('TKX2 sh1 x) -> IxXOf (ADVal target) sh1 -> ADVal target ('TKX2 ('[] :: [Maybe Nat]) x) Source # txoneHot :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x, BoolOf (PrimalOf (ADVal target)) ~ BoolOf (ADVal target), EqH (PrimalOf (ADVal target)) ('TKScalar Int64), ConvertTensor (ADVal target)) => IShX sh1 -> ADVal target ('TKX2 sh2 x) -> IxXOf (ADVal target) sh1 -> ADVal target ('TKX2 (sh1 ++ sh2) x) Source # txscatter :: forall (shm :: [Maybe Nat]) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownShX shm, KnownShX shn, KnownShX shp, KnownSTK x) => IShX (shp ++ shn) -> ADVal target ('TKX2 (shm ++ shn) x) -> (IxXOf (ADVal target) shm -> IxXOf (ADVal target) shp) -> ADVal target ('TKX2 (shp ++ shn) x) Source # txscatter1 :: forall (n2 :: Nat) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownNat n2, KnownShX shn, KnownShX shp, KnownSTK x) => IShX (shp ++ shn) -> ADVal target ('TKX2 ('Just n2 ': shn) x) -> (IntOf (ADVal target) -> IxXOf (ADVal target) shp) -> ADVal target ('TKX2 (shp ++ shn) x) Source # txgather :: forall (shm :: [Maybe Nat]) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownShX shm, KnownShX shn, KnownShX shp, KnownSTK x) => IShX (shm ++ shn) -> ADVal target ('TKX2 (shp ++ shn) x) -> (IxXOf (ADVal target) shm -> IxXOf (ADVal target) shp) -> ADVal target ('TKX2 (shm ++ shn) x) Source # txgather1 :: forall (n2 :: Nat) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownNat n2, KnownShX shn, KnownShX shp, KnownSTK x) => SNat n2 -> ADVal target ('TKX2 (shp ++ shn) x) -> (IntOf (ADVal target) -> IxXOf (ADVal target) shp) -> ADVal target ('TKX2 ('Just n2 ': shn) x) Source # trfloor :: forall r r2 (n :: Nat). (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => ADVal target (TKR n r) -> ADVal target (TKR n r2) Source # trfromIntegral :: forall r1 r2 (n :: Nat). (GoodScalar r1, Integral r1, GoodScalar r2) => ADVal target (TKR n r1) -> ADVal target (TKR n r2) Source # trcast :: forall r1 r2 (n :: Nat). (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => ADVal target (TKR n r1) -> ADVal target (TKR n r2) Source # trminIndex :: forall (n :: Natural) r r2. (GoodScalar r, GoodScalar r2) => ADVal target (TKR (1 + n) r) -> ADVal target (TKR n r2) Source # trmaxIndex :: forall (n :: Natural) r r2. (GoodScalar r, GoodScalar r2) => ADVal target (TKR (1 + n) r) -> ADVal target (TKR n r2) Source # triota :: GoodScalar r => Int -> ADVal target (TKR 1 r) Source # tsfloor :: forall r r2 (sh :: [Nat]). (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => ADVal target (TKS sh r) -> ADVal target (TKS sh r2) Source # tsfromIntegral :: forall r1 r2 (sh :: [Nat]). (GoodScalar r1, Integral r1, GoodScalar r2) => ADVal target (TKS sh r1) -> ADVal target (TKS sh r2) Source # tscast :: forall r1 r2 (sh :: [Nat]). (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => ADVal target (TKS sh r1) -> ADVal target (TKS sh r2) Source # tsminIndex :: forall (n :: Nat) (sh :: [Nat]) r r2. (GoodScalar r, GoodScalar r2) => ADVal target (TKS (n ': sh) r) -> ADVal target (TKS (Init (n ': sh)) r2) Source # tsmaxIndex :: forall (n :: Nat) (sh :: [Nat]) r r2. (GoodScalar r, GoodScalar r2) => ADVal target (TKS (n ': sh) r) -> ADVal target (TKS (Init (n ': sh)) r2) Source # tsiota :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => ADVal target (TKS '[n] r) Source # txfloor :: forall r r2 (sh :: [Maybe Nat]). (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => ADVal target (TKX sh r) -> ADVal target (TKX sh r2) Source # txfromIntegral :: forall r1 r2 (sh :: [Maybe Nat]). (GoodScalar r1, Integral r1, GoodScalar r2) => ADVal target (TKX sh r1) -> ADVal target (TKX sh r2) Source # txcast :: forall r1 r2 (sh :: [Maybe Nat]). (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => ADVal target (TKX sh r1) -> ADVal target (TKX sh r2) Source # txminIndex :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) r r2. (GoodScalar r, GoodScalar r2) => ADVal target (TKX (mn ': sh) r) -> ADVal target (TKX (Init (mn ': sh)) r2) Source # txmaxIndex :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) r r2. (GoodScalar r, GoodScalar r2) => ADVal target (TKX (mn ': sh) r) -> ADVal target (TKX (Init (mn ': sh)) r2) Source # txiota :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => ADVal target (TKX '['Just n] r) Source # tkfloor :: (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => ADVal target ('TKScalar r) -> ADVal target ('TKScalar r2) Source # tkfromIntegral :: (GoodScalar r1, Integral r1, GoodScalar r2) => ADVal target ('TKScalar r1) -> ADVal target ('TKScalar r2) Source # tkcast :: (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => ADVal target ('TKScalar r1) -> ADVal target ('TKScalar r2) Source # trappend :: forall (n :: Natural) (x :: TK). KnownSTK x => ADVal target ('TKR2 (1 + n) x) -> ADVal target ('TKR2 (1 + n) x) -> ADVal target ('TKR2 (1 + n) x) Source # trslice :: forall (n :: Natural) (x :: TK). KnownSTK x => Int -> Int -> ADVal target ('TKR2 (1 + n) x) -> ADVal target ('TKR2 (1 + n) x) Source # trreverse :: forall (n :: Natural) (x :: TK). KnownSTK x => ADVal target ('TKR2 (1 + n) x) -> ADVal target ('TKR2 (1 + n) x) Source # trtranspose :: forall (n :: Nat) (x :: TK). KnownSTK x => PermR -> ADVal target ('TKR2 n x) -> ADVal target ('TKR2 n x) Source # trreshape :: forall (n :: Nat) (m :: Nat) (x :: TK). KnownSTK x => IShR m -> ADVal target ('TKR2 n x) -> ADVal target ('TKR2 m x) Source # tsappend :: forall (m :: Nat) (n :: Nat) (sh :: [Nat]) (x :: TK). KnownSTK x => ADVal target ('TKS2 (m ': sh) x) -> ADVal target ('TKS2 (n ': sh) x) -> ADVal target ('TKS2 ((m + n) ': sh) x) Source # tsslice :: forall (i :: Nat) (n :: Nat) (k :: Nat) (sh :: [Natural]) (x :: TK). KnownSTK x => SNat i -> SNat n -> SNat k -> ADVal target ('TKS2 (((i + n) + k) ': sh) x) -> ADVal target ('TKS2 (n ': sh) x) Source # tsreverse :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). KnownSTK x => ADVal target ('TKS2 (n ': sh) x) -> ADVal target ('TKS2 (n ': sh) x) Source # tstranspose :: forall (perm :: [Natural]) (sh :: [Nat]) (x :: TK). (IsPermutation perm, Rank perm <= Rank sh, KnownSTK x) => Perm perm -> ADVal target ('TKS2 sh x) -> ADVal target ('TKS2 (PermutePrefix perm sh) x) Source # tsreshape :: forall (sh :: [Natural]) (sh2 :: [Natural]) (x :: TK). (Product sh ~ Product sh2, KnownSTK x) => ShS sh2 -> ADVal target ('TKS2 sh x) -> ADVal target ('TKS2 sh2 x) Source # txappend :: forall (m :: Nat) (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 ('Just m ': sh) x) -> ADVal target ('TKX2 ('Just n ': sh) x) -> ADVal target ('TKX2 ('Just (m + n) ': sh) x) Source # txslice :: forall (i :: Nat) (n :: Nat) (k :: Nat) (sh :: [Maybe Natural]) (x :: TK). KnownSTK x => SNat i -> SNat n -> SNat k -> ADVal target ('TKX2 ('Just ((i + n) + k) ': sh) x) -> ADVal target ('TKX2 ('Just n ': sh) x) Source # txreverse :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 (mn ': sh) x) -> ADVal target ('TKX2 (mn ': sh) x) Source # txtranspose :: forall (perm :: [Natural]) (sh :: [Maybe Nat]) (x :: TK). (IsPermutation perm, Rank perm <= Rank sh, KnownSTK x) => Perm perm -> ADVal target ('TKX2 sh x) -> ADVal target ('TKX2 (PermutePrefix perm sh) x) Source # txreshape :: forall (sh :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). KnownSTK x => IShX sh2 -> ADVal target ('TKX2 sh x) -> ADVal target ('TKX2 sh2 x) Source # trbuild1 :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => Int -> (IntOf (ADVal target) -> ADVal target ('TKR2 n x)) -> ADVal target ('TKR2 (1 + n) x) Source # trmap0N :: forall (n :: Nat) (x :: TK) (x1 :: TK). (KnownNat n, KnownSTK x, KnownSTK x1) => (ADVal target ('TKR2 0 x1) -> ADVal target ('TKR2 0 x)) -> ADVal target ('TKR2 n x1) -> ADVal target ('TKR2 n x) Source # trzipWith0N :: forall (n :: Nat) (x :: TK) (x1 :: TK) (x2 :: TK). (KnownNat n, KnownSTK x, KnownSTK x1, KnownSTK x2) => (ADVal target ('TKR2 0 x1) -> ADVal target ('TKR2 0 x2) -> ADVal target ('TKR2 0 x)) -> ADVal target ('TKR2 n x1) -> ADVal target ('TKR2 n x2) -> ADVal target ('TKR2 n x) Source # tsbuild1 :: forall (k :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat k, KnownShS sh, KnownSTK x) => (IntOf (ADVal target) -> ADVal target ('TKS2 sh x)) -> ADVal target ('TKS2 (k ': sh) x) Source # tsmap0N :: forall (sh :: [Nat]) (x :: TK) (x1 :: TK). (KnownShS sh, KnownSTK x, KnownSTK x1) => (ADVal target ('TKS2 ('[] :: [Nat]) x1) -> ADVal target ('TKS2 ('[] :: [Nat]) x)) -> ADVal target ('TKS2 sh x1) -> ADVal target ('TKS2 sh x) Source # tszipWith0N :: forall (sh :: [Nat]) (x :: TK) (x1 :: TK) (x2 :: TK). (KnownShS sh, KnownSTK x, KnownSTK x1, KnownSTK x2) => (ADVal target ('TKS2 ('[] :: [Nat]) x1) -> ADVal target ('TKS2 ('[] :: [Nat]) x2) -> ADVal target ('TKS2 ('[] :: [Nat]) x)) -> ADVal target ('TKS2 sh x1) -> ADVal target ('TKS2 sh x2) -> ADVal target ('TKS2 sh x) Source # txbuild1 :: forall (k :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat k, KnownShX sh, KnownSTK x) => (IntOf (ADVal target) -> ADVal target ('TKX2 sh x)) -> ADVal target ('TKX2 ('Just k ': sh) x) Source # tbuild1 :: forall (y :: TK) (k :: Nat). ConvertTensor (ADVal target) => SNat k -> SingletonTK y -> (IntOf (ADVal target) -> ADVal target y) -> ADVal target (BuildTensorKind k y) Source # tmapAccumRDer :: forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat). Proxy (ADVal target) -> SNat k -> FullShapeTK accy -> FullShapeTK by -> FullShapeTK ey -> HFunOf (ADVal target) ('TKProduct accy ey) ('TKProduct accy by) -> HFunOf (ADVal target) ('TKProduct (ADTensorKind ('TKProduct accy ey)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy by)) -> HFunOf (ADVal target) ('TKProduct (ADTensorKind ('TKProduct accy by)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy ey)) -> ADVal target accy -> ADVal target (BuildTensorKind k ey) -> ADVal target ('TKProduct accy (BuildTensorKind k by)) Source # tmapAccumLDer :: forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat). Proxy (ADVal target) -> SNat k -> FullShapeTK accy -> FullShapeTK by -> FullShapeTK ey -> HFunOf (ADVal target) ('TKProduct accy ey) ('TKProduct accy by) -> HFunOf (ADVal target) ('TKProduct (ADTensorKind ('TKProduct accy ey)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy by)) -> HFunOf (ADVal target) ('TKProduct (ADTensorKind ('TKProduct accy by)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy ey)) -> ADVal target accy -> ADVal target (BuildTensorKind k ey) -> ADVal target ('TKProduct accy (BuildTensorKind k by)) Source # tApply :: forall (x :: TK) (z :: TK). HFunOf (ADVal target) x z -> ADVal target x -> ADVal target z Source # tlambda :: forall (x :: TK) (z :: TK). FullShapeTK x -> HFun x z -> HFunOf (ADVal target) x z Source # tgrad :: forall (x :: TK) r. FullShapeTK x -> HFun x ('TKScalar r) -> HFunOf (ADVal target) x (ADTensorKind x) Source # tvjp :: forall (x :: TK) (z :: TK). FullShapeTK x -> HFun x z -> HFunOf (ADVal target) ('TKProduct (ADTensorKind z) x) (ADTensorKind x) Source # tjvp :: forall (x :: TK) (z :: TK). FullShapeTK x -> HFun x z -> HFunOf (ADVal target) ('TKProduct (ADTensorKind x) x) (ADTensorKind z) Source # tprimalPart :: forall (y :: TK). ADVal target y -> PrimalOf (ADVal target) y Source # tdualPart :: forall (y :: TK). SingletonTK y -> ADVal target y -> DualOf (ADVal target) y Source # tfromPrimal :: forall (y :: TK). SingletonTK y -> PrimalOf (ADVal target) y -> ADVal target y Source # tfromDual :: forall (y :: TK). DualOf (ADVal target) y -> ADVal target y Source # tScale :: forall (y :: TK). (Num (ADVal target y), Num (PrimalOf (ADVal target) y)) => SingletonTK y -> PrimalOf (ADVal target) y -> DualOf (ADVal target) y -> DualOf (ADVal target) y Source # tsum :: forall (z :: TK) (k :: Nat). ConvertTensor (ADVal target) => SNat k -> SingletonTK z -> ADVal target (BuildTensorKind k z) -> ADVal target z Source # treplicate :: forall (z :: TK) (k :: Nat). ConvertTensor (ADVal target) => SNat k -> SingletonTK z -> ADVal target z -> ADVal target (BuildTensorKind k z) Source # tindexBuild :: forall (z :: TK) (k :: Nat). ConvertTensor (ADVal target) => SNat k -> SingletonTK z -> ADVal target (BuildTensorKind k z) -> IntOf (ADVal target) -> ADVal target z Source # treplTarget :: forall (y :: TK). (forall r. GoodScalar r => r) -> FullShapeTK y -> ADVal target y Source # tdefTarget :: forall (y :: TK). FullShapeTK y -> ADVal target y Source # taddTarget :: forall (y :: TK). SingletonTK y -> ADVal target y -> ADVal target y -> ADVal target y Source # tmultTarget :: forall (y :: TK). SingletonTK y -> ADVal target y -> ADVal target y -> ADVal target y Source # tsum0Target :: forall (y :: TK). FullShapeTK y -> ADVal target y -> ADVal target ('TKScalar Double) Source # tdot0Target :: forall (y :: TK). FullShapeTK y -> ADVal target y -> ADVal target y -> ADVal target ('TKScalar Double) Source # xmcast :: forall (x :: TK) (sh :: [Maybe Nat]) (sh2 :: [Maybe Nat]). (KnownSTK x, KnownShX sh, Rank sh ~ Rank sh2, ConvertTensor (ADVal target)) => StaticShX sh2 -> ADVal target ('TKX2 sh x) -> ADVal target ('TKX2 sh2 x) Source # | |
(ADReadyNoLet target, ShareTensor target, ShareTensor (PrimalOf target)) => LetTensor (ADVal target) Source # | |
Methods ttlet :: forall (x :: TK) (z :: TK). ADVal target x -> (ADVal target x -> ADVal target z) -> ADVal target z Source # ttletPrimal :: forall (x :: TK) (z :: TK). PrimalOf (ADVal target) x -> (PrimalOf (ADVal target) x -> ADVal target z) -> ADVal target z Source # toShare :: forall (y :: TK). ADVal target y -> ShareOf (ADVal target) y Source # tunshare :: forall (y :: TK). ShareOf (ADVal target) y -> ADVal target y Source # tappend :: forall (m :: Nat) (n :: Nat) (y :: TK). BaseTensor (ADVal target) => SNat m -> SNat n -> SingletonTK y -> ADVal target (BuildTensorKind m y) -> ADVal target (BuildTensorKind n y) -> ADVal target (BuildTensorKind (m + n) y) Source # tD :: forall (y :: TK). BaseTensor (ADVal target) => SingletonTK y -> PrimalOf (ADVal target) y -> DualOf (ADVal target) y -> ADVal target y Source # tfold :: forall (yn :: TK) (ym :: TK) (k :: Nat). BaseTensor (ADVal target) => SNat k -> SingletonTK yn -> SingletonTK ym -> (forall (f :: Target). ADReady f => f yn -> f ym -> f yn) -> ADVal target yn -> ADVal target (BuildTensorKind k ym) -> ADVal target yn Source # tscan :: forall (yn :: TK) (ym :: TK) (k :: Nat). BaseTensor (ADVal target) => SNat k -> SingletonTK yn -> SingletonTK ym -> (forall (f :: Target). ADReady f => f yn -> f ym -> f yn) -> ADVal target yn -> ADVal target (BuildTensorKind k ym) -> ADVal target (BuildTensorKind (1 + k) yn) Source # | |
(ADReadyNoLet target, ShareTensor target) => ShareTensor (ADVal target) Source # | |