{-# LANGUAGE AllowAmbiguousTypes, OverloadedLists #-}
{-# OPTIONS_GHC -fno-cse #-}
{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
module TestConvSimplified (testTrees) where
import Prelude
import Control.Exception.Assert.Sugar
import GHC.Exts (IsList (..))
import GHC.TypeLits (KnownNat)
import Test.Tasty
import Test.Tasty.HUnit hiding (assert)
import Data.Array.Nested qualified as Nested
import Data.Array.Nested.Ranked.Shape
import HordeAd
import HordeAd.Core.AstEnv
import HordeAd.Core.AstFreshId (resetVarCounter)
import HordeAd.Core.AstInterpret
import HordeAd.Core.AstTools
import HordeAd.Core.CarriersAst
import HordeAd.Core.Delta
import HordeAd.Core.Ops
import HordeAd.Core.OpsAst
import CrossTesting
import EqEpsilon
testTrees :: [TestTree]
testTrees :: [TestTree]
testTrees =
[ String -> Assertion -> TestTree
testCase String
"KonstG0Rev" Assertion
testKonstG0Rev
, String -> Assertion -> TestTree
testCase String
"KonstG0Tiny1" Assertion
testKonstG0Tiny1
, String -> Assertion -> TestTree
testCase String
"KonstG0TinyS" Assertion
testKonstG0TinyS
, String -> Assertion -> TestTree
testCase String
"KonstG0TinyA" Assertion
testKonstG0TinyA
, String -> Assertion -> TestTree
testCase String
"KonstG0LittleA" Assertion
testKonstG0LittleA
, String -> Assertion -> TestTree
testCase String
"Replicate0Rev" Assertion
testReplicate0Rev
, String -> Assertion -> TestTree
testCase String
"Replicate0Tiny1" Assertion
testReplicate0Tiny1
, String -> Assertion -> TestTree
testCase String
"Replicate0TinyS" Assertion
testReplicate0TinyS
, String -> Assertion -> TestTree
testCase String
"Replicate0TinyA" Assertion
testReplicate0TinyA
, String -> Assertion -> TestTree
testCase String
"Replicate0LittleA" Assertion
testReplicate0LittleA
, String -> Assertion -> TestTree
testCase String
"Konst5LittleB" Assertion
testKonst5LittleB
, String -> Assertion -> TestTree
testCase String
"Konst5LittleC" Assertion
testKonst5LittleC
, String -> Assertion -> TestTree
testCase String
"Konst5BigB" Assertion
testKonst5BigB
, String -> Assertion -> TestTree
testCase String
"KonstNotBigB" Assertion
testKonstNotBigB
, String -> Assertion -> TestTree
testCase String
"Konst5BigC" Assertion
testKonst5BigC
, String -> Assertion -> TestTree
testCase String
"KonstNotBigC" Assertion
testKonstNotBigC
, String -> Assertion -> TestTree
testCase String
"Konst5LittleB128b" Assertion
testKonst5LittleB128b
, String -> Assertion -> TestTree
testCase String
"Konst5LittleC128b" Assertion
testKonst5LittleC128b
, String -> Assertion -> TestTree
testCase String
"Konst5BigB128b" Assertion
testKonst5BigB128b
, String -> Assertion -> TestTree
testCase String
"KonstNotBigB128b" Assertion
testKonstNotBigB128b
, String -> Assertion -> TestTree
testCase String
"Konst5BigC128b" Assertion
testKonst5BigC128b
, String -> Assertion -> TestTree
testCase String
"KonstNotBigC128b" Assertion
testKonstNotBigC128b
, String -> Assertion -> TestTree
testCase String
"Konst5LittleB128c" Assertion
testKonst5LittleB128c
, String -> Assertion -> TestTree
testCase String
"Konst5LittleC128c" Assertion
testKonst5LittleC128c
, String -> Assertion -> TestTree
testCase String
"Konst5BigB128c" Assertion
testKonst5BigB128c
, String -> Assertion -> TestTree
testCase String
"KonstNotBigB128c" Assertion
testKonstNotBigB128c
, String -> Assertion -> TestTree
testCase String
"Konst5BigC128c" Assertion
testKonst5BigC128c
, String -> Assertion -> TestTree
testCase String
"KonstNotBigC128c" Assertion
testKonstNotBigC128c
, String -> Assertion -> TestTree
testCase String
"Replicate0RevLaborious" Assertion
testReplicate0RevLaborious
, String -> Assertion -> TestTree
testCase String
"Replicate0Tiny1Laborious" Assertion
testReplicate0Tiny1Laborious
, String -> Assertion -> TestTree
testCase String
"Replicate0TinySLaborious" Assertion
testReplicate0TinySLaborious
, String -> Assertion -> TestTree
testCase String
"Replicate0TinyALaborious" Assertion
testReplicate0TinyALaborious
, String -> Assertion -> TestTree
testCase String
"Replicate0LittleALaborious" Assertion
testReplicate0LittleALaborious
, String -> Assertion -> TestTree
testCase String
"Konst5LittleBLaborious" Assertion
testKonst5LittleBLaborious
, String -> Assertion -> TestTree
testCase String
"Konst5LittleCLaborious" Assertion
testKonst5LittleCLaborious
, String -> Assertion -> TestTree
testCase String
"Konst5BigBLaborious" Assertion
testKonst5BigBLaborious
, String -> Assertion -> TestTree
testCase String
"KonstNotBigBLaborious" Assertion
testKonstNotBigBLaborious
, String -> Assertion -> TestTree
testCase String
"Konst5BigCLaborious" Assertion
testKonst5BigCLaborious
, String -> Assertion -> TestTree
testCase String
"KonstNotBigCLaborious" Assertion
testKonstNotBigCLaborious
, String -> Assertion -> TestTree
testCase String
"Konst5LittleBLaborious128b" Assertion
testKonst5LittleBLaborious128b
, String -> Assertion -> TestTree
testCase String
"Konst5LittleCLaborious128b" Assertion
testKonst5LittleCLaborious128b
, String -> Assertion -> TestTree
testCase String
"Konst5LittleBLaborious128c" Assertion
testKonst5LittleBLaborious128c
, String -> Assertion -> TestTree
testCase String
"Konst5LittleCLaborious128c" Assertion
testKonst5LittleCLaborious128c
, String -> Assertion -> TestTree
testCase String
"Replicate0Tiny1Padded" Assertion
testReplicate0Tiny1Padded
, String -> Assertion -> TestTree
testCase String
"Replicate0TinySPadded" Assertion
testReplicate0TinySPadded
, String -> Assertion -> TestTree
testCase String
"Replicate0TinyAPadded" Assertion
testReplicate0TinyAPadded
, String -> Assertion -> TestTree
testCase String
"Replicate0LittleAPadded" Assertion
testReplicate0LittleAPadded
, String -> Assertion -> TestTree
testCase String
"disparityKonst" Assertion
test_disparityKonst
, String -> Assertion -> TestTree
testCase String
"disparityKonst2" Assertion
test_disparityKonst2
, String -> Assertion -> TestTree
testCase String
"disparitySmall" Assertion
test_disparitySmall
, String -> Assertion -> TestTree
testCase String
"ConvTomsSliceRev" Assertion
testTomsSliceRev
, String -> Assertion -> TestTree
testCase String
"ConvTomsSlice" Assertion
testTomsSlice
, String -> Assertion -> TestTree
testCase String
"ConvTomsSlicePP" Assertion
testTomsSlicePP
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP0c" Assertion
testCNNOPP0c
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP0b" Assertion
testCNNOPP0b
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP1e" Assertion
testCNNOPP1e
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP2" Assertion
testCNNOPP2
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP2b" Assertion
testCNNOPP2b
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP3b" Assertion
testCNNOPP3b
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP4" Assertion
testCNNOPP4
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP4b" Assertion
testCNNOPP4b
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP5" Assertion
testCNNOPP5
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP5b" Assertion
testCNNOPP5b
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP6" Assertion
testCNNOPP6
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP6b" Assertion
testCNNOPP6b
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP7" Assertion
testCNNOPP7
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP7b" Assertion
testCNNOPP7b
, String -> Assertion -> TestTree
testCase String
"minimizedPaddedCNNOPP1b" Assertion
testPaddedCNNOPP1b
, String -> Assertion -> TestTree
testCase String
"minimizedPaddedCNNOPPLet" Assertion
testPaddedCNNOPPLet
, String -> Assertion -> TestTree
testCase String
"minimizedPaddedCNNOPPLet2" Assertion
testPaddedCNNOPPLet2
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP0cW" Assertion
testCNNOPP0cW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP0bW" Assertion
testCNNOPP0bW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP1bW" Assertion
testCNNOPP1bW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP4bW" Assertion
testCNNOPP4bW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP4bD" Assertion
testCNNOPP4bD
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP5aW" Assertion
testCNNOPP5aW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP5bW" Assertion
testCNNOPP5bW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP5cW" Assertion
testCNNOPP5cW
, String -> Assertion -> TestTree
testCase String
"minimizedCNNOPP5dW" Assertion
testCNNOPP5dW
]
conv2d1
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2d1 :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1 = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [r] -> Ranked 4 r
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear ([Item (IShR 4)] -> IShR 4
forall l. IsList l => [Item l] -> l
fromList [Int
Item [Int]
1, Int
Item [Int]
1, Int
Item [Int]
1, Int
Item [Int]
1]) [-r
0.2]
conv2dA
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dA :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dA = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [r] -> Ranked 4 r
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear ([Item (IShR 4)] -> IShR 4
forall l. IsList l => [Item l] -> l
fromList [Int
Item [Int]
1, Int
Item [Int]
2, Int
Item [Int]
1, Int
Item [Int]
1]) [-r
0.2, r
Item [r]
25.0003]
conv2dB
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dB :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)
testKonstG0Rev :: Assertion
testKonstG0Rev :: Assertion
testKonstG0Rev =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-4
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
testKonstG0Tiny1 :: Assertion
testKonstG0Tiny1 :: Assertion
testKonstG0Tiny1 =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1 (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testKonstG0TinyS :: Assertion
testKonstG0TinyS :: Assertion
testKonstG0TinyS =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
582665.99432])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4
(f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double))
-> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> f (TKR 0 Double) -> f (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] (f (TKR 4 Double) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (Ranked 4 Double -> f (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> f (TKR 4 Double))
-> Ranked 4 Double -> f (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 Double) -> RepConcrete (TKR 4 Double)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)))
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
0]))
testKonstG0TinyA :: Assertion
testKonstG0TinyA :: Assertion
testKonstG0TinyA =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2,Double
Item [Double]
25.0003])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dA (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testKonstG0LittleA :: Assertion
testKonstG0LittleA :: Assertion
testKonstG0LittleA =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dA (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
conv2dC
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dC :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)
conv2dB128b
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dB128b :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128b = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128b)
conv2dC128b
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dC128b :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128b = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128b)
conv2dB128c
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dB128c :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128c = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128c)
conv2dC128c
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dC128c :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128c = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128c)
testReplicate0Rev :: Assertion
testReplicate0Rev :: Assertion
testReplicate0Rev =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-4
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
testReplicate0Tiny1 :: Assertion
testReplicate0Tiny1 :: Assertion
testReplicate0Tiny1 =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1 (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testReplicate0TinyS :: Assertion
testReplicate0TinyS :: Assertion
testReplicate0TinyS =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
582665.99432])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4
(f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double))
-> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> f (TKR 0 Double) -> f (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] (f (TKR 4 Double) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (Ranked 4 Double -> f (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> f (TKR 4 Double))
-> Ranked 4 Double -> f (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 Double) -> RepConcrete (TKR 4 Double)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)))
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
0]))
testReplicate0TinyA :: Assertion
testReplicate0TinyA :: Assertion
testReplicate0TinyA =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2,Double
Item [Double]
25.0003])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dA (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testReplicate0LittleA :: Assertion
testReplicate0LittleA :: Assertion
testReplicate0LittleA =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dA (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
testKonst5LittleB :: Assertion
testKonst5LittleB :: Assertion
testKonst5LittleB =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleC :: Assertion
testKonst5LittleC :: Assertion
testKonst5LittleC =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.89432,Double
Item [Double]
28.79432,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.89432,Double
Item [Double]
28.79432,-Double
309.09999999999997,Double
Item [Double]
25.8])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5BigB :: Assertion
testKonst5BigB :: Assertion
testKonst5BigB =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigB :: Assertion
testKonstNotBigB :: Assertion
testKonstNotBigB =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5BigC :: Assertion
testKonst5BigC :: Assertion
testKonst5BigC =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigC :: Assertion
testKonstNotBigC :: Assertion
testKonstNotBigC =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5LittleB128b :: Assertion
testKonst5LittleB128b :: Assertion
testKonst5LittleB128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128b (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleC128b :: Assertion
testKonst5LittleC128b :: Assertion
testKonst5LittleC128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128b (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5BigB128b :: Assertion
testKonst5BigB128b :: Assertion
testKonst5BigB128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
229.49462000000003,Double
Item [Double]
610.5892400000002,Double
Item [Double]
56.58894000000004,Double
Item [Double]
580.6778800001001,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
667.2003000000001,Double
Item [Double]
1060.8778800002,Double
Item [Double]
893.3003,Double
Item [Double]
1465.6665200003993,Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
229.49462000000003,Double
Item [Double]
610.5892400000002,Double
Item [Double]
56.58894000000004,Double
Item [Double]
580.6778800001001,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
667.2003000000001,Double
Item [Double]
1060.8778800002,Double
Item [Double]
893.3003,Double
Item [Double]
1465.6665200003993,Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
229.49462000000003,Double
Item [Double]
610.5892400000002,Double
Item [Double]
56.58894000000004,Double
Item [Double]
580.6778800001001,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
667.2003000000001,Double
Item [Double]
1060.8778800002,Double
Item [Double]
893.3003,Double
Item [Double]
1465.6665200003993])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128b (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigB128b :: Assertion
testKonstNotBigB128b :: Assertion
testKonstNotBigB128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
229.49462000000003,Double
Item [Double]
610.5892400000002,Double
Item [Double]
56.58894000000004,Double
Item [Double]
580.6778800001001,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
667.2003000000001,Double
Item [Double]
1060.8778800002,Double
Item [Double]
893.3003,Double
Item [Double]
1465.6665200003993,Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
229.49462000000003,Double
Item [Double]
610.5892400000002,Double
Item [Double]
56.58894000000004,Double
Item [Double]
580.6778800001001,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
667.2003000000001,Double
Item [Double]
1060.8778800002,Double
Item [Double]
893.3003,Double
Item [Double]
1465.6665200003993,Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
229.49462000000003,Double
Item [Double]
610.5892400000002,Double
Item [Double]
56.58894000000004,Double
Item [Double]
580.6778800001001,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
667.2003000000001,Double
Item [Double]
1060.8778800002,Double
Item [Double]
893.3003,Double
Item [Double]
1465.6665200003993])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128b
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5BigC128b :: Assertion
testKonst5BigC128b :: Assertion
testKonst5BigC128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
675.7488800003999,Double
Item [Double]
828.6545600004001,Double
Item [Double]
215.6659200003,Double
Item [Double]
388.5716000003,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1903.750080000699,Double
Item [Double]
1174.5497800006997,Double
Item [Double]
854.9778800004001,Double
Item [Double]
628.8778800004001,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
675.7488800003999,Double
Item [Double]
828.6545600004001,Double
Item [Double]
215.6659200003,Double
Item [Double]
388.5716000003,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1903.750080000699,Double
Item [Double]
1174.5497800006997,Double
Item [Double]
854.9778800004001,Double
Item [Double]
628.8778800004001,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
675.7488800003999,Double
Item [Double]
828.6545600004001,Double
Item [Double]
215.6659200003,Double
Item [Double]
388.5716000003,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1903.750080000699,Double
Item [Double]
1174.5497800006997,Double
Item [Double]
854.9778800004001,Double
Item [Double]
628.8778800004001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128b (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigC128b :: Assertion
testKonstNotBigC128b :: Assertion
testKonstNotBigC128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
675.7488800003999,Double
Item [Double]
828.6545600004001,Double
Item [Double]
215.6659200003,Double
Item [Double]
388.5716000003,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1903.750080000699,Double
Item [Double]
1174.5497800006997,Double
Item [Double]
854.9778800004001,Double
Item [Double]
628.8778800004001,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
675.7488800003999,Double
Item [Double]
828.6545600004001,Double
Item [Double]
215.6659200003,Double
Item [Double]
388.5716000003,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1903.750080000699,Double
Item [Double]
1174.5497800006997,Double
Item [Double]
854.9778800004001,Double
Item [Double]
628.8778800004001,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
675.7488800003999,Double
Item [Double]
828.6545600004001,Double
Item [Double]
215.6659200003,Double
Item [Double]
388.5716000003,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1903.750080000699,Double
Item [Double]
1174.5497800006997,Double
Item [Double]
854.9778800004001,Double
Item [Double]
628.8778800004001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128b
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5LittleB128c :: Assertion
testKonst5LittleB128c :: Assertion
testKonst5LittleB128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128c (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleC128c :: Assertion
testKonst5LittleC128c :: Assertion
testKonst5LittleC128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128c (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5BigB128c :: Assertion
testKonst5BigB128c :: Assertion
testKonst5BigB128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
109.09462000000002,Double
Item [Double]
318.19492,Double
Item [Double]
174.08894000000004,Double
Item [Double]
477.28924000000006,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
120.4,Double
Item [Double]
292.39432000000005,-Double
117.5,Double
Item [Double]
103.38864000010005,Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
109.09462000000002,Double
Item [Double]
318.19492,Double
Item [Double]
174.08894000000004,Double
Item [Double]
477.28924000000006,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
120.4,Double
Item [Double]
292.39432000000005,-Double
117.5,Double
Item [Double]
103.38864000010005,Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
109.09462000000002,Double
Item [Double]
318.19492,Double
Item [Double]
174.08894000000004,Double
Item [Double]
477.28924000000006,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
120.4,Double
Item [Double]
292.39432000000005,-Double
117.5,Double
Item [Double]
103.38864000010005])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128c (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigB128c :: Assertion
testKonstNotBigB128c :: Assertion
testKonstNotBigB128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
109.09462000000002,Double
Item [Double]
318.19492,Double
Item [Double]
174.08894000000004,Double
Item [Double]
477.28924000000006,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
120.4,Double
Item [Double]
292.39432000000005,-Double
117.5,Double
Item [Double]
103.38864000010005,Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
109.09462000000002,Double
Item [Double]
318.19492,Double
Item [Double]
174.08894000000004,Double
Item [Double]
477.28924000000006,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
120.4,Double
Item [Double]
292.39432000000005,-Double
117.5,Double
Item [Double]
103.38864000010005,Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
109.09462000000002,Double
Item [Double]
318.19492,Double
Item [Double]
174.08894000000004,Double
Item [Double]
477.28924000000006,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
120.4,Double
Item [Double]
292.39432000000005,-Double
117.5,Double
Item [Double]
103.38864000010005])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dB128c
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5BigC128c :: Assertion
testKonst5BigC128c :: Assertion
testKonst5BigC128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
2121.6375200006987,Double
Item [Double]
1436.2432000006995,Double
Item [Double]
1953.5375200006988,Double
Item [Double]
1258.1432000006998,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
1279.150680000599,Double
Item [Double]
1224.1503800005996,Double
Item [Double]
987.1677200004992,Double
Item [Double]
962.1674200005002,Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
2121.6375200006987,Double
Item [Double]
1436.2432000006995,Double
Item [Double]
1953.5375200006988,Double
Item [Double]
1258.1432000006998,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
1279.150680000599,Double
Item [Double]
1224.1503800005996,Double
Item [Double]
987.1677200004992,Double
Item [Double]
962.1674200005002,Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
2121.6375200006987,Double
Item [Double]
1436.2432000006995,Double
Item [Double]
1953.5375200006988,Double
Item [Double]
1258.1432000006998,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
1279.150680000599,Double
Item [Double]
1224.1503800005996,Double
Item [Double]
987.1677200004992,Double
Item [Double]
962.1674200005002])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128c (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigC128c :: Assertion
testKonstNotBigC128c :: Assertion
testKonstNotBigC128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
2121.6375200006987,Double
Item [Double]
1436.2432000006995,Double
Item [Double]
1953.5375200006988,Double
Item [Double]
1258.1432000006998,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
1279.150680000599,Double
Item [Double]
1224.1503800005996,Double
Item [Double]
987.1677200004992,Double
Item [Double]
962.1674200005002,Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
2121.6375200006987,Double
Item [Double]
1436.2432000006995,Double
Item [Double]
1953.5375200006988,Double
Item [Double]
1258.1432000006998,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
1279.150680000599,Double
Item [Double]
1224.1503800005996,Double
Item [Double]
987.1677200004992,Double
Item [Double]
962.1674200005002,Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
2121.6375200006987,Double
Item [Double]
1436.2432000006995,Double
Item [Double]
1953.5375200006988,Double
Item [Double]
1258.1432000006998,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
1279.150680000599,Double
Item [Double]
1224.1503800005996,Double
Item [Double]
987.1677200004992,Double
Item [Double]
962.1674200005002])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC128c
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
conv2dUnpaddedL
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL target (TKR 4 r)
arrK target (TKR 4 r)
arrA =
let [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Item (IShR 4)
nAh, Item (IShR 4)
nAw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrA
[Item (IShR 4)
nCoutK, Item (IShR 4)
nCinpK, Item (IShR 4)
nKh, Item (IShR 4)
nKw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrK
nCinp :: Int
nCinp = Bool -> Int -> Int
forall a. HasCallStack => Bool -> a -> a
assert (Int
Item (IShR 4)
nCinpA Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
Item (IShR 4)
nCinpK Bool -> (Int, Int) -> Bool
forall v. Show v => Bool -> v -> Bool
`blame` (Int
Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nCinpK)) Int
Item (IShR 4)
nCinpA
shB :: IShR 4
shB = [Item (IShR 4)
nImgs, Item (IShR 4)
nCoutK, Item (IShR 4)
nAh, Item (IShR 4)
nAw]
shK1 :: IShR 4
shK1 = [Int
Item (IShR 4)
1, Int
Item (IShR 4)
nCinp, Item (IShR 4)
nKh, Item (IShR 4)
nKw]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrA [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
arrKt :: target (TKR 4 r)
arrKt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrK [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
in target (TKR 4 r)
-> target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (n :: Nat) r (target :: Target).
(KnownNat n, GoodScalar r, BaseTensor target) =>
target (TKR n r) -> target (TKR n r) -> target (TKR 0 r)
rdot0 target (TKR 4 r)
arrAt target (TKR 4 r)
arrKt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dUnpaddedL: impossible pattern needlessly required"
slicezL
:: (ADReady target, GoodScalar r, KnownNat n)
=> IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL :: forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR n
shOut target (TKR n r)
d IxROf target n
ixBase =
IShR (n + 0)
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR n
IShR (n + 0)
shOut ((IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r)))
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IxROf target n
ixResult -> target (TKR n r) -> IxROf target n -> target (TKR2 0 (TKScalar r))
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz0L target (TKR n r)
d ((PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64))
-> IxROf target n -> IxROf target n -> IxROf target n
forall i j k (n :: Nat).
(i -> j -> k) -> IxR n i -> IxR n j -> IxR n k
ixrZipWith PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
(+) IxROf target n
ixBase IxROf target n
ixResult)
indexz0L
:: forall target r n. (ADReady target, GoodScalar r, KnownNat n)
=> target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz0L :: forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz0L target (TKR n r)
d IxROf target n
ix = BoolOf target
-> target (TKR 0 r) -> target (TKR 0 r) -> target (TKR 0 r)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (forall (target :: Target) (n :: Nat).
(ADReady target, KnownNat n) =>
IShR n -> IxROf target n -> BoolOf target
within0 @target (forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape @target target (TKR n r)
d) IxROf target n
ix) (target (TKR n r)
target (TKR2 (n + 0) (TKScalar r))
d target (TKR2 (n + 0) (TKScalar r))
-> IxROf target n -> target (TKR 0 r)
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! IxROf target n
ix) (r -> target (TKR 0 r)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0)
within0
:: forall target n. (ADReady target, KnownNat n)
=> IShR n -> IxROf target n -> BoolOf target
within0 :: forall (target :: Target) (n :: Nat).
(ADReady target, KnownNat n) =>
IShR n -> IxROf target n -> BoolOf target
within0 IShR n
sh IxR n (PrimalOf target (TKScalar Int64))
ix =
let within :: IntOf target -> IntOf target -> BoolOf target
within :: PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf target
within PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
dim = PrimalOf target (TKScalar Int64)
0 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. PrimalOf target (TKScalar Int64)
i BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
&&* PrimalOf target (TKScalar Int64)
dim PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>. PrimalOf target (TKScalar Int64)
i
in (BoolOf target -> BoolOf target -> BoolOf target)
-> BoolOf target -> [BoolOf target] -> BoolOf target
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: Type -> Type) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
(&&*) BoolOf target
forall b. Boolean b => b
true
([BoolOf target] -> BoolOf target)
-> [BoolOf target] -> BoolOf target
forall a b. (a -> b) -> a -> b
$ (PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf target)
-> [PrimalOf target (TKScalar Int64)]
-> [PrimalOf target (TKScalar Int64)]
-> [BoolOf target]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf target
within (IxR n (PrimalOf target (TKScalar Int64))
-> [Item (IxR n (PrimalOf target (TKScalar Int64)))]
forall l. IsList l => l -> [Item l]
toList IxR n (PrimalOf target (TKScalar Int64))
ix) ((Int -> PrimalOf target (TKScalar Int64))
-> [Int] -> [PrimalOf target (TKScalar Int64)]
forall a b. (a -> b) -> [a] -> [b]
map Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral ([Int] -> [PrimalOf target (TKScalar Int64)])
-> [Int] -> [PrimalOf target (TKScalar Int64)]
forall a b. (a -> b) -> a -> b
$ IShR n -> [Item (IShR n)]
forall l. IsList l => l -> [Item l]
toList IShR n
sh)
conv2d1Laborious
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2d1Laborious :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1Laborious = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [r] -> Ranked 4 r
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear ([Item (IShR 4)] -> IShR 4
forall l. IsList l => [Item l] -> l
fromList [Int
Item [Int]
1, Int
Item [Int]
1, Int
Item [Int]
1, Int
Item [Int]
1]) [-r
0.2]
conv2dALaborious
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dALaborious :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dALaborious =
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [r] -> Ranked 4 r
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear ([Item (IShR 4)] -> IShR 4
forall l. IsList l => [Item l] -> l
fromList [Int
Item [Int]
1, Int
Item [Int]
2, Int
Item [Int]
1, Int
Item [Int]
1]) [-r
0.2, r
Item [r]
25.0003]
conv2dBLaborious
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)
conv2dCLaborious
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)
conv2dBLaborious128b
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious128b :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious128b = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128b)
conv2dCLaborious128b
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious128b :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious128b = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128b)
conv2dBLaborious128c
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious128c :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious128c = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128c)
conv2dCLaborious128c
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious128c :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious128c = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128c)
testReplicate0RevLaborious :: Assertion
testReplicate0RevLaborious :: Assertion
testReplicate0RevLaborious =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-4
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
testReplicate0Tiny1Laborious :: Assertion
testReplicate0Tiny1Laborious :: Assertion
testReplicate0Tiny1Laborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1Laborious (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testReplicate0TinySLaborious :: Assertion
testReplicate0TinySLaborious :: Assertion
testReplicate0TinySLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
582665.99432])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4
(f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double))
-> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> f (TKR 0 Double) -> f (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] (f (TKR 4 Double) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (Ranked 4 Double -> f (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> f (TKR 4 Double))
-> Ranked 4 Double -> f (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 Double) -> RepConcrete (TKR 4 Double)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)))
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
0]))
testReplicate0TinyALaborious :: Assertion
testReplicate0TinyALaborious :: Assertion
testReplicate0TinyALaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2,Double
Item [Double]
25.0003])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dALaborious (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testReplicate0LittleALaborious :: Assertion
testReplicate0LittleALaborious :: Assertion
testReplicate0LittleALaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dALaborious (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
testKonst5LittleBLaborious :: Assertion
testKonst5LittleBLaborious :: Assertion
testKonst5LittleBLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleCLaborious :: Assertion
testKonst5LittleCLaborious :: Assertion
testKonst5LittleCLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.89432,Double
Item [Double]
28.79432,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.89432,Double
Item [Double]
28.79432,-Double
309.09999999999997,Double
Item [Double]
25.8])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5BigBLaborious :: Assertion
testKonst5BigBLaborious :: Assertion
testKonst5BigBLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigBLaborious :: Assertion
testKonstNotBigBLaborious :: Assertion
testKonstNotBigBLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5BigCLaborious :: Assertion
testKonst5BigCLaborious :: Assertion
testKonst5BigCLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonstNotBigCLaborious :: Assertion
testKonstNotBigCLaborious :: Assertion
testKonstNotBigCLaborious =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
testKonst5LittleBLaborious128b :: Assertion
testKonst5LittleBLaborious128b :: Assertion
testKonst5LittleBLaborious128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004,Double
Item [Double]
112.3003,Double
Item [Double]
251.5006,Double
Item [Double]
209.49462,Double
Item [Double]
482.69492000000014,Double
Item [Double]
3.000000000000032,Double
Item [Double]
65.90000000000003,Double
Item [Double]
164.10000000000002,Double
Item [Double]
365.89432000010004])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious128b (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleCLaborious128b :: Assertion
testKonst5LittleCLaborious128b :: Assertion
testKonst5LittleCLaborious128b =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1571.2321300004994,Double
Item [Double]
1132.9261600005002,Double
Item [Double]
1188.6375200005,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1831.7390200008983,Double
Item [Double]
2551.139320000898,Double
Item [Double]
1660.8390200008987])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious128b (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleBLaborious128c :: Assertion
testKonst5LittleBLaborious128c :: Assertion
testKonst5LittleBLaborious128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4,Double
Item [Double]
54.100300000000004,Double
Item [Double]
111.20060000000001,Double
Item [Double]
119.09462,Double
Item [Double]
270.29492000000005,Double
Item [Double]
58.2,Double
Item [Double]
140.3,Double
Item [Double]
90.4,Double
Item [Double]
212.4])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious128c (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
testKonst5LittleCLaborious128c :: Assertion
testKonst5LittleCLaborious128c :: Assertion
testKonst5LittleCLaborious128c =
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992,Double
Item [Double]
2640.8154000007976,Double
Item [Double]
1836.3264600007988,Double
Item [Double]
2412.414800000798,Double
Item [Double]
1662.026160000799,Double
Item [Double]
1712.044990000598,Double
Item [Double]
1566.644690000599,Double
Item [Double]
1445.5506800005985,Double
Item [Double]
1358.3503800005992])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 f (TKR 4 Double) -> f (TKR 4 Double)
forall (f :: Target).
ADReady f =>
f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious128c (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
conv2dPadded
:: forall target r. (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded target (TKR 4 r)
arrK target (TKR 4 r)
arrA =
let [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Item (IShR 4)
nAh, Item (IShR 4)
nAw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrA
[Item (IShR 4)
nCoutK, Item (IShR 4)
nCinpK, Item (IShR 4)
nKh, Item (IShR 4)
nKw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrK
shAPadded :: IShR 4
shAPadded = [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh, Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw]
arrAPadded :: target (TKR2 (4 + 0) (TKScalar r))
arrAPadded = forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild @4 @0 @(TKScalar r) @target IShR 4
IShR (4 + 0)
shAPadded ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPw] ->
BoolOf target
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2))
(r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0)
(target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrA target (TKR2 (4 + 0) (TKScalar r))
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! [ Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2) ])
nCinp :: Int
nCinp = Bool -> Int -> Int
forall a. HasCallStack => Bool -> a -> a
assert (Int
Item (IShR 4)
nCinpA Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
Item (IShR 4)
nCinpK Bool -> (Int, Int) -> Bool
forall v. Show v => Bool -> v -> Bool
`blame` (Int
Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nCinpK)) Int
Item (IShR 4)
nCinpA
shB :: IShR 4
shB = [Item (IShR 4)
nImgs, Item (IShR 4)
nCoutK, Item (IShR 4)
nAh, Item (IShR 4)
nAw]
shK1 :: IShR 4
shK1 = [Int
Item (IShR 4)
1, Int
Item (IShR 4)
nCinp, Item (IShR 4)
nKh, Item (IShR 4)
nKw]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrAPadded [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
arrKt :: target (TKR 4 r)
arrKt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrK [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
in target (TKR 4 r)
-> target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (n :: Nat) r (target :: Target).
(KnownNat n, GoodScalar r, BaseTensor target) =>
target (TKR n r) -> target (TKR n r) -> target (TKR 0 r)
rdot0 target (TKR 4 r)
arrAt target (TKR 4 r)
arrKt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dPadded: impossible pattern needlessly required"
conv2d1Padded
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2d1Padded :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1Padded = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [r] -> Ranked 4 r
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear ([Item (IShR 4)] -> IShR 4
forall l. IsList l => [Item l] -> l
fromList [Int
Item [Int]
1, Int
Item [Int]
1, Int
Item [Int]
1, Int
Item [Int]
1]) [-r
0.2]
conv2dAPadded
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dAPadded :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dAPadded =
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [r] -> Ranked 4 r
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear ([Item (IShR 4)] -> IShR 4
forall l. IsList l => [Item l] -> l
fromList [Int
Item [Int]
1, Int
Item [Int]
2, Int
Item [Int]
1, Int
Item [Int]
1]) [-r
0.2, r
Item [r]
25.0003]
conv2dBPadded
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)
conv2dCPadded
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b)
conv2dBPadded128b
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded128b :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded128b = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128b)
conv2dCPadded128b
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded128b :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded128b = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128b)
_conv2dBPadded128c
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
_conv2dBPadded128c :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
_conv2dBPadded128c = target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128c)
_conv2dCPadded128c
:: (ADReady target, GoodScalar r, Differentiable r)
=> target (TKR 4 r) -> target (TKR 4 r)
_conv2dCPadded128c :: forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
_conv2dCPadded128c = (target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r))
-> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (Ranked 4 r -> target (TKR 4 r)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 r -> target (TKR 4 r)) -> Ranked 4 r -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 r) -> RepConcrete (TKR 4 r)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 r)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t128c)
_testReplicate0RevPadded :: Assertion
_testReplicate0RevPadded :: Assertion
_testReplicate0RevPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-4
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.89432,Double
Item [Double]
28.79432,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.89432,Double
Item [Double]
28.79432,-Double
309.09999999999997,Double
Item [Double]
25.8])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
testReplicate0Tiny1Padded :: Assertion
testReplicate0Tiny1Padded :: Assertion
testReplicate0Tiny1Padded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2])
((ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 4 Double))
-> DValue (ADVal Concrete (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 4 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 4 Double))
-> ADVal Concrete (TKR 4 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2d1Padded) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testReplicate0TinySPadded :: Assertion
testReplicate0TinySPadded :: Assertion
testReplicate0TinySPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
582665.99432])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (Ranked 4 Double -> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Ranked 4 Double
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR 4 Double) -> RepConcrete (TKR 4 Double)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 4 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 4 r)
t16b))))
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [Double
Item [Double]
0]))
testReplicate0TinyAPadded :: Assertion
testReplicate0TinyAPadded :: Assertion
testReplicate0TinyAPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] [-Double
0.2,Double
Item [Double]
25.0003])
((ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 4 Double))
-> DValue (ADVal Concrete (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 4 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 4 Double))
-> ADVal Concrete (TKR 4 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 4 Double) -> ADVal Concrete (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dAPadded) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
1, Int
Item (IShR 4)
1] Double
0))
testReplicate0LittleAPadded :: Assertion
testReplicate0LittleAPadded :: Assertion
testReplicate0LittleAPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,-Double
0.2,-Double
0.2,-Double
0.2,-Double
0.2,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003,Double
Item [Double]
25.0003])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dAPadded) (IShR 4 -> Double -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] Double
0))
_testKonst5LittleBPadded :: Assertion
_testKonst5LittleBPadded :: Assertion
_testKonst5LittleBPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded) (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
_testKonst5LittleCPadded :: Assertion
_testKonst5LittleCPadded :: Assertion
_testKonst5LittleCPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded) (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
_testKonst5BigBPadded :: Assertion
_testKonst5BigBPadded :: Assertion
_testKonst5BigBPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded) (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
_testKonstNotBigBPadded :: Assertion
_testKonstNotBigBPadded :: Assertion
_testKonstNotBigBPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
40.1,Double
Item [Double]
8.0,Double
Item [Double]
11.0,-Double
3.0,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,Double
Item [Double]
582625.8943200001,Double
Item [Double]
28.794320000000003,-Double
309.09999999999997,Double
Item [Double]
25.8])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded)
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
_testKonst5BigCPadded :: Assertion
_testKonst5BigCPadded :: Assertion
_testKonst5BigCPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
14.0,Double
Item [Double]
11.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,-Double
334.9,-Double
309.09999999999997,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
14.0,Double
Item [Double]
11.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,-Double
334.9,-Double
309.09999999999997,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
14.0,Double
Item [Double]
11.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,-Double
334.9,-Double
309.09999999999997])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded) (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
_testKonstNotBigCPadded :: Assertion
_testKonstNotBigCPadded :: Assertion
_testKonstNotBigCPadded =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] [Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
14.0,Double
Item [Double]
11.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,-Double
334.9,-Double
309.09999999999997,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
14.0,Double
Item [Double]
11.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,-Double
334.9,-Double
309.09999999999997,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
18.1,Double
Item [Double]
29.1,Double
Item [Double]
32.1,Double
Item [Double]
40.1,Double
Item [Double]
14.0,Double
Item [Double]
11.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
582932.0,Double
Item [Double]
582934.99432,Double
Item [Double]
582597.1,Double
Item [Double]
582625.8943200001,-Double
334.9,-Double
309.09999999999997])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded)
(IShR 4 -> [Concrete (TKR 0 Double)] -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR n -> [target (TKR2 0 x)] -> target (TKR2 n x)
rfromList0N [Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
2] ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
37, Double
Item [Double]
36 .. -Double
10])))
_testKonst5LittleBPadded128b :: Assertion
_testKonst5LittleBPadded128b :: Assertion
_testKonst5LittleBPadded128b =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
578.1829600001,Double
Item [Double]
558.1716000002,Double
Item [Double]
608.0772800002001,Double
Item [Double]
577.7659200003001,Double
Item [Double]
729.1778800002002,Double
Item [Double]
701.1835600003001,Double
Item [Double]
833.9722000003002,Double
Item [Double]
803.9778800004001,Double
Item [Double]
578.1829600001,Double
Item [Double]
558.1716000002,Double
Item [Double]
608.0772800002001,Double
Item [Double]
577.7659200003001,Double
Item [Double]
729.1778800002002,Double
Item [Double]
701.1835600003001,Double
Item [Double]
833.9722000003002,Double
Item [Double]
803.9778800004001])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded128b) (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
_testKonst5LittleCPadded128b :: Assertion
_testKonst5LittleCPadded128b :: Assertion
_testKonst5LittleCPadded128b =
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] [Double
Item [Double]
1113.1722000001,Double
Item [Double]
1412.1551500001997,Double
Item [Double]
1234.1494800003002,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1500.2781800001994,Double
Item [Double]
1870.0614400004986,Double
Item [Double]
2156.3671200003987,Double
Item [Double]
2725.0393200008984,Double
Item [Double]
1113.1722000001,Double
Item [Double]
1412.1551500001997,Double
Item [Double]
1234.1494800003002,Double
Item [Double]
1627.8210700004993,Double
Item [Double]
1500.2781800001994,Double
Item [Double]
1870.0614400004986,Double
Item [Double]
2156.3671200003987,Double
Item [Double]
2725.0393200008984])
((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @4 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded128b) (IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5)))
costVolume
:: forall r target. (ADReady target, GoodScalar r)
=> Int -> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume :: forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
iStart Int
nCount target (TKR 4 r)
arrL target (TKR 4 r)
arrR =
let [Item (IShR 4)
nImgs, Item (IShR 4)
nChas, Item (IShR 4)
nRows, Item (IShR 4)
nCols] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrL
shO :: IShR 4
shO = [Item (IShR 4)
nImgs, Int
Item (IShR 4)
nCount, Item (IShR 4)
nRows, Item (IShR 4)
nCols]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shO ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iDisp, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iRow, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCol] ->
let arrVecL :: target (TKR2 ((0 + 1) + 0) (TKScalar r))
arrVecL = IShR ((0 + 1) + 0)
-> (IxROf target (0 + 1) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 ((0 + 1) + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild (Int
Item (IShR 4)
nChas Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) ((IxROf target (0 + 1) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 ((0 + 1) + 0) (TKScalar r)))
-> (IxROf target (0 + 1) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 ((0 + 1) + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \[Item (IxR 1 (PrimalOf target (TKScalar Int64)))
iCha] ->
target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrL [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 1 (PrimalOf target (TKScalar Int64)))
Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCha, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iRow, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCol]
iSrc :: PrimalOf target (TKScalar Int64)
iSrc = Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iCol PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
iStart PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iDisp
arrVecR :: target (TKR2 (1 + 0) (TKScalar r))
arrVecR = IShR (1 + 0)
-> (IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Item (IShR 1)
Item (IShR 4)
nChas] ((IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r)))
-> (IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \[Item (IxR 1 (PrimalOf target (TKScalar Int64)))
iCha] ->
target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrR [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 1 (PrimalOf target (TKScalar Int64)))
Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCha, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iRow, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iSrc]
in target (TKR2 (1 + 0) (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (target (TKR2 (1 + 0) (TKScalar r))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ (target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
-> target (TKR2 (1 + 0) (TKScalar r))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n1 :: Nat) (n2 :: Nat) (n :: Nat) (x :: TK) (x1 :: TK)
(x2 :: TK) (target :: Target).
(KnownNat n1, KnownNat n2, KnownNat n, KnownSTK x, KnownSTK x1,
KnownSTK x2, BaseTensor target) =>
(target (TKR2 n1 x1) -> target (TKR2 n2 x2) -> target (TKR2 n x))
-> target (TKR2 (1 + n1) x1)
-> target (TKR2 (1 + n2) x2)
-> target (TKR2 (1 + n) x)
rzipWith1 (\target (TKR2 0 (TKScalar r))
xL target (TKR2 0 (TKScalar r))
xR -> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a
abs (target (TKR2 0 (TKScalar r))
xL target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
- target (TKR2 0 (TKScalar r))
xR)) target (TKR2 (1 + 0) (TKScalar r))
target (TKR2 ((0 + 1) + 0) (TKScalar r))
arrVecL target (TKR2 (1 + 0) (TKScalar r))
arrVecR
test_disparityKonst :: Assertion
test_disparityKonst :: Assertion
test_disparityKonst = do
let arrL :: ADReady target => target (TKR 4 Double)
arrL :: forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL = IShR 4 -> target (TKR 0 Double) -> target (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
6] (Double -> target (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.2))
arrR :: ADReady target => target (TKR 4 Double)
arrR :: forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR = IShR 4 -> target (TKR 0 Double) -> target (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
6] (Double -> target (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.3)
arrO :: Concrete (TKR 4 Double)
arrO = forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume @Double Int
0 Int
4 Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR
arrDL :: Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDL = (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Concrete (ADTensorKind (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp (\AstTensor AstMethodLet FullSpan (TKR 4 Double)
aL -> Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 AstTensor AstMethodLet FullSpan (TKR 4 Double)
aL (PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)) Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL Concrete (ADTensorKind (TKR 4 Double))
Concrete (TKR 4 Double)
arrO
arrDR :: Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDR = (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Concrete (ADTensorKind (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp (\AstTensor AstMethodLet FullSpan (TKR 4 Double)
aR -> Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 (PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) AstTensor AstMethodLet FullSpan (TKR 4 Double)
aR) Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR Concrete (ADTensorKind (TKR 4 Double))
Concrete (TKR 4 Double)
arrO
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
4,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
0.4,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0])
Concrete (TKR 4 Double)
arrO
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0,-Double
2.2,-Double
2.8,-Double
3.4,-Double
4.0,-Double
4.0,-Double
4.0])
Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDL
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0])
Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDR
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (\f (TKR 4 Double)
aL -> Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
2 f (TKR 4 Double)
aL f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL)
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
2 f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)
test_disparityKonst2 :: Assertion
test_disparityKonst2 :: Assertion
test_disparityKonst2 = do
let arrL :: (BaseTensor target, GoodScalar r, Differentiable r) => target (TKR 4 r)
arrL :: forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrL = IShR 4 -> [r] -> target (TKR 4 r)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
6] [r
Item [r]
0.4,r
Item [r]
0.4,r
Item [r]
0.4,r
Item [r]
1.0,r
Item [r]
1.0,r
Item [r]
1.0,r
Item [r]
0.4,r
Item [r]
0.4,r
Item [r]
0.4,r
Item [r]
1.0,r
Item [r]
1.0,r
Item [r]
1.0,r
Item [r]
0.4,r
Item [r]
0.4,r
Item [r]
0.4,r
Item [r]
1.0,r
Item [r]
1.0,r
Item [r]
1.0, r
Item [r]
1.7041241452319316,r
Item [r]
1.21999,r
Item [r]
0.21355339059327375,r
Item [r]
0.7867666666666666,r
Item [r]
0.7331698975466578,r
Item [r]
0.6964466094067263,r
Item [r]
1.1,r
Item [r]
1.1041141452319316,r
Item [r]
0.42000000000000004,r
Item [r]
0.3536533905932737,r
Item [r]
0.78,r
Item [r]
1.253169897546658,r
Item [r]
1.1,r
Item [r]
0.50001,r
Item [r]
0.42000000000000004,r
Item [r]
0.2801,r
Item [r]
0.78,r
Item [r]
1.3,r
Item [r]
1.1,r
Item [r]
0.50001,r
Item [r]
0.42000000000000004,r
Item [r]
0.2801,r
Item [r]
0.78,r
Item [r]
1.3,r
Item [r]
2.808238290463863,r
Item [r]
1.21999,-r
0.5672067811865474,r
Item [r]
0.7867666666666666,r
Item [r]
1.986339795093316,r
Item [r]
0.6964466094067263]
arrR :: (BaseTensor target, GoodScalar r, Differentiable r) => target (TKR 4 r)
arrR :: forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrR = IShR 4 -> [r] -> target (TKR 4 r)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
4, Int
Item (IShR 4)
6] [r
Item [r]
0.2, r
Item [r]
0.5, -r
0.2, r
Item [r]
0.0001, r
Item [r]
0.44, r
Item [r]
0.9, -r
0.9, r
Item [r]
0.00001, -r
0.22, -r
0.28, -r
0.34, -r
0.40, -r
0.40,-r
0.22,-r
0.28,-r
0.34, r
Item [r]
0.22360679774997896,r
Item [r]
0.35355339059327373,r
Item [r]
0.20412414523193154,r
Item [r]
0.5, -r
0.35355339059327373,r
Item [r]
0.16666666666666666,r
Item [r]
0.17677669529663687,-r
0.25, -r
2.808238290463863,-r
1.21999,-r
0.5672067811865474,-r
0.7867666666666666,-r
1.986339795093316,-r
0.6964466094067263,r
Item [r]
2.808238290463863,r
Item [r]
1.21999,-r
0.5672067811865474,r
Item [r]
0.7867666666666666,r
Item [r]
0.6964466094067263,r
Item [r]
0.42000000000000004,r
Item [r]
0.3536533905932737,r
Item [r]
0.78,r
Item [r]
1.253169897546658,r
Item [r]
0.50001,r
Item [r]
0.42000000000000004,r
Item [r]
0.2801,r
Item [r]
0.78,r
Item [r]
1.1,r
Item [r]
0.50001,r
Item [r]
0.42000000000000004,r
Item [r]
0.2801,r
Item [r]
0.78]
arrO :: Concrete (TKR 4 Double)
arrO = IShR 4 -> Concrete (TKR 0 Double) -> Concrete (TKR 4 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1, Int
Item (IShR 4)
4, Int
Item (IShR 4)
4, Int
Item (IShR 4)
6] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (Double
1 :: Double))
res1 :: Concrete (TKR 4 Double)
res1 = Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [Double
Item [Double]
4.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
2.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
2.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,-Double
2.0,Double
Item [Double]
0.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
2.0,Double
Item [Double]
0.0,-Double
4.0,Double
Item [Double]
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,-Double
4.0,Double
Item [Double]
2.0,Double
Item [Double]
4.0,Double
Item [Double]
2.0]
res2 :: Concrete (TKR 4 Double)
res2 = Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
4,Int
Item (IShR 4)
6] [-Double
4.0,Double
Item [Double]
0.0,-Double
4.0,-Double
3.0,-Double
2.0,-Double
1.0,-Double
4.0,-Double
4.0,-Double
4.0,-Double
3.0,-Double
2.0,-Double
1.0,-Double
4.0,-Double
4.0,-Double
4.0,-Double
3.0,-Double
2.0,-Double
1.0,-Double
4.0,-Double
2.0,-Double
4.0,-Double
3.0,-Double
2.0,-Double
1.0,-Double
4.0,-Double
4.0,-Double
4.0,-Double
3.0,-Double
2.0,-Double
1.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,-Double
4.0,Double
Item [Double]
1.0,-Double
2.0,-Double
1.0,-Double
2.0,Double
Item [Double]
3.0,Double
Item [Double]
2.0,-Double
1.0,-Double
2.0,-Double
1.0,-Double
2.0,Double
Item [Double]
0.0,-Double
2.0,-Double
3.0,-Double
2.0,Double
Item [Double]
1.0]
arrDL :: Concrete (TKR 4 Double)
arrDL :: Concrete (TKR 4 Double)
arrDL = (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Concrete (ADTensorKind (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp (\AstTensor AstMethodLet FullSpan (TKR 4 Double)
aL -> Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 AstTensor AstMethodLet FullSpan (TKR 4 Double)
aL (PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrR)) Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrL Concrete (ADTensorKind (TKR 4 Double))
Concrete (TKR 4 Double)
arrO
arrDR :: Concrete (TKR 4 Double)
arrDR :: Concrete (TKR 4 Double)
arrDR = (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Concrete (ADTensorKind (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp (Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 (PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrL)) Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrR Concrete (ADTensorKind (TKR 4 Double))
Concrete (TKR 4 Double)
arrO
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
Concrete (TKR 4 Double)
res1
Concrete (TKR 4 Double)
arrDL
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
Concrete (TKR 4 Double)
res2
Concrete (TKR 4 Double)
arrDR
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
Concrete (TKR 4 Double)
res1
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (\f (TKR 4 Double)
aL -> Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 f (TKR 4 Double)
aL (PrimalOf f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal PrimalOf f (TKR 4 Double)
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrR)) Concrete (TKR 4 Double)
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrL)
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
Concrete (TKR 4 Double)
res2
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 (PrimalOf f (TKR 4 Double) -> f (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal PrimalOf f (TKR 4 Double)
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrL)) Concrete (TKR 4 Double)
forall (target :: Target) r.
(BaseTensor target, GoodScalar r, Differentiable r) =>
target (TKR 4 r)
arrR)
test_disparitySmall :: Assertion
test_disparitySmall :: Assertion
test_disparitySmall = do
let arrL :: ADReady target => target (TKR 4 Double)
arrL :: forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL = IShR 4 -> [Double] -> target (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
3, Int
Item (IShR 4)
2] [Double
Item [Double]
0.2, Double
Item [Double]
0.5, -Double
0.2, Double
Item [Double]
0.0001, Double
Item [Double]
0.44, Double
Item [Double]
0.9, -Double
0.9, Double
Item [Double]
0.00001, -Double
0.22, -Double
0.28, -Double
0.34, -Double
0.40]
arrR :: ADReady target => target (TKR 4 Double)
arrR :: forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR = IShR 4 -> [Double] -> target (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
3, Int
Item (IShR 4)
2] [-Double
0.40,-Double
0.22,-Double
0.28,-Double
0.34, Double
Item [Double]
0.22360679774997896,Double
Item [Double]
0.35355339059327373,Double
Item [Double]
0.20412414523193154,Double
Item [Double]
0.5, -Double
0.35355339059327373,Double
Item [Double]
0.16666666666666666,Double
Item [Double]
0.17677669529663687,-Double
0.25]
arrO :: Concrete (TKR 4 Double)
arrO = forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume @Double Int
0 Int
4 Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR
arrDL :: Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDL = (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Concrete (ADTensorKind (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp (\AstTensor AstMethodLet FullSpan (TKR 4 Double)
aL -> Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 AstTensor AstMethodLet FullSpan (TKR 4 Double)
aL (PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)) Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL Concrete (ADTensorKind (TKR 4 Double))
Concrete (TKR 4 Double)
arrO
arrDR :: Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDR = (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Concrete (ADTensorKind (TKR 4 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp (\AstTensor AstMethodLet FullSpan (TKR 4 Double)
aR -> Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 (PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
PrimalOf (AstTensor AstMethodLet FullSpan) (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) AstTensor AstMethodLet FullSpan (TKR 4 Double)
aR) Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR Concrete (ADTensorKind (TKR 4 Double))
Concrete (TKR 4 Double)
arrO
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
4,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [Double
Item [Double]
1.7041241452319316,Double
Item [Double]
1.21999,Double
Item [Double]
0.21355339059327375,Double
Item [Double]
0.7867666666666666,Double
Item [Double]
0.7331698975466578,Double
Item [Double]
0.6964466094067263,Double
Item [Double]
1.1,Double
Item [Double]
1.1041141452319316,Double
Item [Double]
0.42000000000000004,Double
Item [Double]
0.3536533905932737,Double
Item [Double]
0.78,Double
Item [Double]
1.253169897546658,Double
Item [Double]
1.1,Double
Item [Double]
0.50001,Double
Item [Double]
0.42000000000000004,Double
Item [Double]
0.2801,Double
Item [Double]
0.78,Double
Item [Double]
1.3,Double
Item [Double]
1.1,Double
Item [Double]
0.50001,Double
Item [Double]
0.42000000000000004,Double
Item [Double]
0.2801,Double
Item [Double]
0.78,Double
Item [Double]
1.3])
Concrete (TKR 4 Double)
arrO
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [-Double
2.0,-Double
1.0,-Double
2.0,-Double
1.0,-Double
2.0,-Double
1.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0,-Double
2.0,Double
Item [Double]
1.0,Double
Item [Double]
2.0,Double
Item [Double]
1.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
0 Int
4 f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [Double
Item [Double]
5.004124145231932,Double
Item [Double]
3.3241241452319317,-Double
1.0464466094067264,Double
Item [Double]
1.7006200572599404,Double
Item [Double]
3.0731698975466575,Double
Item [Double]
4.5496165069533845,-Double
5.004124145231932,-Double
1.3240841452319316,-Double
1.0464466094067264,-Double
0.9933132760733929,-Double
3.0731698975466575,-Double
4.5496165069533845])
Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDL
Rational
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-7
(Ranked 4 Double -> Concrete (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> Concrete (TKR 4 Double))
-> Ranked 4 Double -> Concrete (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> [Double] -> Ranked 4 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [-Double
2.808238290463863,-Double
1.21999,-Double
0.5672067811865474,-Double
0.7867666666666666,-Double
1.986339795093316,-Double
0.6964466094067263,Double
Item [Double]
2.808238290463863,Double
Item [Double]
1.21999,-Double
0.5672067811865474,Double
Item [Double]
0.7867666666666666,Double
Item [Double]
1.986339795093316,Double
Item [Double]
0.6964466094067263])
Concrete (TKR 4 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 4 Double))
arrDR
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [-Double
1.0,Double
Item [Double]
0.0,-Double
1.0,Double
Item [Double]
0.0,-Double
1.0,Double
Item [Double]
0.0,Double
Item [Double]
1.0,Double
Item [Double]
0.0,-Double
1.0,Double
Item [Double]
0.0,Double
Item [Double]
1.0,Double
Item [Double]
0.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
1 Int
4 f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [Double
Item [Double]
2.0,Double
Item [Double]
2.0,-Double
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,-Double
2.0,Double
Item [Double]
2.0,-Double
2.0,-Double
2.0,-Double
2.0,-Double
2.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (\f (TKR 4 Double)
aL -> Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
2 Int
2 f (TKR 4 Double)
aL f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL)
Rational
-> Concrete (TKR 4 Double)
-> ((Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)),
(Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
AstTensor AstMethodLet PrimalSpan (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double), Concrete (TKR 4 Double),
Concrete (TKR 4 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-7
(IShR 4 -> [Double] -> Concrete (TKR 4 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
2,Int
Item (IShR 4)
3,Int
Item (IShR 4)
2] [-Double
1.0,Double
Item [Double]
0.0,-Double
1.0,Double
Item [Double]
0.0,-Double
1.0,Double
Item [Double]
0.0,Double
Item [Double]
1.0,Double
Item [Double]
0.0,-Double
1.0,Double
Item [Double]
0.0,Double
Item [Double]
1.0,Double
Item [Double]
0.0])
(forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' @Double @4 (Int
-> Int -> f (TKR 4 Double) -> f (TKR 4 Double) -> f (TKR 4 Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
Int
-> Int -> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
costVolume Int
1 Int
2 f (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrL) Concrete (TKR 4 Double)
forall (target :: Target). ADReady target => target (TKR 4 Double)
arrR)
codeTomsSlice :: ADReady target
=> target (TKR 2 Double) -> target (TKR 0 Double)
codeTomsSlice :: forall (target :: Target).
ADReady target =>
target (TKR 2 Double) -> target (TKR 0 Double)
codeTomsSlice target (TKR 2 Double)
a =
let (Int
n, Int
m) = case target (TKR 2 Double) -> IShR 2
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 2 Double)
a of
[Item (IShR 2)
n', Item (IShR 2)
m'] -> (Int
Item (IShR 2)
n', Int
Item (IShR 2)
m')
IShR 2
_ -> String -> (Int, Int)
forall a. HasCallStack => String -> a
error String
"codeTomsSlice"
a1 :: target (TKR2 (2 + 0) (TKScalar Double))
a1 = forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild @2 @0 [Int
Item (IShR 2)
n,Int
mInt -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1] (\[Item (IxR 2 (PrimalOf target (TKScalar Int64)))
i',Item (IxR 2 (PrimalOf target (TKScalar Int64)))
j'] -> target (TKR 2 Double)
-> IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR 0 Double)
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 2 Double)
a [Item (IxR 2 (PrimalOf target (TKScalar Int64)))
i',Item (IxR 2 (PrimalOf target (TKScalar Int64)))
j'])
a2 :: target (TKR2 (2 + 0) (TKScalar Double))
a2 = IShR (2 + 0)
-> (IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR 0 Double))
-> target (TKR2 (2 + 0) (TKScalar Double))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 2)
n,Int
mInt -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1] (\[Item (IxR 2 (PrimalOf target (TKScalar Int64)))
i',Item (IxR 2 (PrimalOf target (TKScalar Int64)))
j'] -> target (TKR 2 Double)
-> IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR 0 Double)
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 2 Double)
a [Item (IxR 2 (PrimalOf target (TKScalar Int64)))
i',Item (IxR 2 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
j' PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1])
in forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @2 (target (TKR 2 Double) -> target (TKR 0 Double))
-> target (TKR 2 Double) -> target (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ IShR (2 + 0)
-> (IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR 0 Double))
-> target (TKR2 (2 + 0) (TKScalar Double))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 2)
n,Int
Item (IShR 2)
m] ((IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR 0 Double))
-> target (TKR2 (2 + 0) (TKScalar Double)))
-> (IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR 0 Double))
-> target (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ \[Item (IxR 2 (PrimalOf target (TKScalar Int64)))
i, Item (IxR 2 (PrimalOf target (TKScalar Int64)))
_j] ->
PrimalOf target (TKScalar Int64) -> target (TKR 0 Double)
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 Item (IxR 2 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
i target (TKR 0 Double)
-> target (TKR 0 Double) -> target (TKR 0 Double)
forall a. Num a => a -> a -> a
* target (TKR 2 Double) -> target (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (target (TKR 2 Double)
target (TKR2 (2 + 0) (TKScalar Double))
a1 target (TKR 2 Double)
-> target (TKR 2 Double) -> target (TKR 2 Double)
forall a. Num a => a -> a -> a
* target (TKR 2 Double)
target (TKR2 (2 + 0) (TKScalar Double))
a2)
testTomsSliceRev :: Assertion
testTomsSliceRev :: Assertion
testTomsSliceRev = do
Rational
-> Concrete (TKR 2 Double) -> Concrete (TKR 2 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-5
(IShR 2 -> [Double] -> Concrete (TKR 2 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 2)
32,Int
Item (IShR 2)
4] [Double
Item [Double]
63686.39999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
121222.4,Double
Item [Double]
79558.40000000002,Double
Item [Double]
192646.40000000005,Double
Item [Double]
223971.0617601984,Double
Item [Double]
228556.80000000005,Double
Item [Double]
116846.33088019838,Double
Item [Double]
63686.39999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
127174.4,Double
Item [Double]
79558.40000000002,Double
Item [Double]
192646.40000000005,Double
Item [Double]
158499.06176019844,Double
Item [Double]
202566.40000000005,Double
Item [Double]
51374.330880198424,Double
Item [Double]
11904.0,Double
Item [Double]
5952.0,Double
Item [Double]
7936.0,Double
Item [Double]
1984.0,Double
Item [Double]
116846.33088019838,Double
Item [Double]
385292.8000000001,Double
Item [Double]
227740.66176039676,Double
Item [Double]
192646.40000000005,Double
Item [Double]
116846.33088019838,Double
Item [Double]
228556.80000000005,Double
Item [Double]
174580.73088019836,Double
Item [Double]
35910.399999999994,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
143244.80000000002,Double
Item [Double]
63686.39999999999,Double
Item [Double]
105152.0,Double
Item [Double]
186683.13088000007,Double
Item [Double]
105151.98016,Double
Item [Double]
107124.73088000003,-Double
396.79999999999995,Double
Item [Double]
26188.8,Double
Item [Double]
17459.2,Double
Item [Double]
25990.399999999998,-Double
7936.0,Double
Item [Double]
73408.0,-Double
1995.2691200000017,Double
Item [Double]
57536.0,Double
Item [Double]
51584.0,-Double
660672.0,Double
Item [Double]
55552.0,Double
Item [Double]
3968.0,Double
Item [Double]
3968.0,Double
Item [Double]
3571.2,Double
Item [Double]
3571.2,-Double
396.79999999999995,-Double
396.79999999999995,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49203.79519999998,-Double
396.79999999999995,-Double
396.79999999999995,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
129158.9952,Double
Item [Double]
65472.59519999998,Double
Item [Double]
79558.40000000002,-Double
5952.0,Double
Item [Double]
73198.33087999995,Double
Item [Double]
51175.930880000036,Double
Item [Double]
51374.33087999995,Double
Item [Double]
51187.20000000001,Double
Item [Double]
1984.0000000000146,Double
Item [Double]
67059.20000000001,Double
Item [Double]
79558.40000000002,-Double
5952.0,Double
Item [Double]
73198.33087999995,Double
Item [Double]
51175.930880000036,Double
Item [Double]
51374.33087999995,Double
Item [Double]
51187.20000000001,-Double
21823.99999999993,Double
Item [Double]
108921.6,Double
Item [Double]
16070.400000000005,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
159116.80000000005,Double
Item [Double]
63686.39999999999,Double
Item [Double]
107124.73088000003,Double
Item [Double]
771974.4,Double
Item [Double]
218019.0617601984,Double
Item [Double]
192646.40000000005,Double
Item [Double]
170414.3308801984,Double
Item [Double]
385292.8000000001,Double
Item [Double]
340828.6617603968,Double
Item [Double]
192646.40000000005,Double
Item [Double]
57734.399999999994,Double
Item [Double]
99596.79999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
63686.39999999999,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
159116.80000000005,Double
Item [Double]
63686.39999999999,Double
Item [Double]
107124.73088000003,Double
Item [Double]
236294.40000000005,Double
Item [Double]
271587.0617601984,Double
Item [Double]
192646.40000000005,Double
Item [Double]
45422.33088019842,Double
Item [Double]
385292.8000000001,Double
Item [Double]
162268.6617603968,Double
Item [Double]
192646.40000000005,Double
Item [Double]
57734.399999999994,Double
Item [Double]
99596.79999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
63686.39999999999,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
159116.80000000005,Double
Item [Double]
63686.39999999999,Double
Item [Double]
107124.73088000003,Double
Item [Double]
369222.4,Double
Item [Double]
220003.0617601984,Double
Item [Double]
192646.40000000005,Double
Item [Double]
104942.33088019838,Double
Item [Double]
385292.8000000001,Double
Item [Double]
215836.66176039676,Double
Item [Double]
192646.40000000005])
((AstTensor AstMethodLet FullSpan (TKR 2 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 2 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 2 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 2 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 2 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 2 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall (target :: Target).
ADReady target =>
target (TKR 2 Double) -> target (TKR 0 Double)
codeTomsSlice) (IShR 2
-> Concrete (TKR2 10 (TKScalar Double)) -> Concrete (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR m -> target (TKR2 n x) -> target (TKR2 m x)
rreshape [Int
Item (IShR 2)
32, Int
Item (IShR 2)
4] Concrete (TKR2 10 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 10 r)
t128))
testTomsSlice :: Assertion
testTomsSlice :: Assertion
testTomsSlice = do
Rational
-> Concrete (TKR 2 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-5
(IShR 2 -> [Double] -> Concrete (TKR 2 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 2)
32,Int
Item (IShR 2)
4] [Double
Item [Double]
63686.39999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
121222.4,Double
Item [Double]
79558.40000000002,Double
Item [Double]
192646.40000000005,Double
Item [Double]
223971.0617601984,Double
Item [Double]
228556.80000000005,Double
Item [Double]
116846.33088019838,Double
Item [Double]
63686.39999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
127174.4,Double
Item [Double]
79558.40000000002,Double
Item [Double]
192646.40000000005,Double
Item [Double]
158499.06176019844,Double
Item [Double]
202566.40000000005,Double
Item [Double]
51374.330880198424,Double
Item [Double]
11904.0,Double
Item [Double]
5952.0,Double
Item [Double]
7936.0,Double
Item [Double]
1984.0,Double
Item [Double]
116846.33088019838,Double
Item [Double]
385292.8000000001,Double
Item [Double]
227740.66176039676,Double
Item [Double]
192646.40000000005,Double
Item [Double]
116846.33088019838,Double
Item [Double]
228556.80000000005,Double
Item [Double]
174580.73088019836,Double
Item [Double]
35910.399999999994,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
143244.80000000002,Double
Item [Double]
63686.39999999999,Double
Item [Double]
105152.0,Double
Item [Double]
186683.13088000007,Double
Item [Double]
105151.98016,Double
Item [Double]
107124.73088000003,-Double
396.79999999999995,Double
Item [Double]
26188.8,Double
Item [Double]
17459.2,Double
Item [Double]
25990.399999999998,-Double
7936.0,Double
Item [Double]
73408.0,-Double
1995.2691200000017,Double
Item [Double]
57536.0,Double
Item [Double]
51584.0,-Double
660672.0,Double
Item [Double]
55552.0,Double
Item [Double]
3968.0,Double
Item [Double]
3968.0,Double
Item [Double]
3571.2,Double
Item [Double]
3571.2,-Double
396.79999999999995,-Double
396.79999999999995,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49203.79519999998,-Double
396.79999999999995,-Double
396.79999999999995,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49203.79519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
49600.59519999998,Double
Item [Double]
129158.9952,Double
Item [Double]
65472.59519999998,Double
Item [Double]
79558.40000000002,-Double
5952.0,Double
Item [Double]
73198.33087999995,Double
Item [Double]
51175.930880000036,Double
Item [Double]
51374.33087999995,Double
Item [Double]
51187.20000000001,Double
Item [Double]
1984.0000000000146,Double
Item [Double]
67059.20000000001,Double
Item [Double]
79558.40000000002,-Double
5952.0,Double
Item [Double]
73198.33087999995,Double
Item [Double]
51175.930880000036,Double
Item [Double]
51374.33087999995,Double
Item [Double]
51187.20000000001,-Double
21823.99999999993,Double
Item [Double]
108921.6,Double
Item [Double]
16070.400000000005,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
159116.80000000005,Double
Item [Double]
63686.39999999999,Double
Item [Double]
107124.73088000003,Double
Item [Double]
771974.4,Double
Item [Double]
218019.0617601984,Double
Item [Double]
192646.40000000005,Double
Item [Double]
170414.3308801984,Double
Item [Double]
385292.8000000001,Double
Item [Double]
340828.6617603968,Double
Item [Double]
192646.40000000005,Double
Item [Double]
57734.399999999994,Double
Item [Double]
99596.79999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
63686.39999999999,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
159116.80000000005,Double
Item [Double]
63686.39999999999,Double
Item [Double]
107124.73088000003,Double
Item [Double]
236294.40000000005,Double
Item [Double]
271587.0617601984,Double
Item [Double]
192646.40000000005,Double
Item [Double]
45422.33088019842,Double
Item [Double]
385292.8000000001,Double
Item [Double]
162268.6617603968,Double
Item [Double]
192646.40000000005,Double
Item [Double]
57734.399999999994,Double
Item [Double]
99596.79999999999,Double
Item [Double]
137292.80000000002,Double
Item [Double]
63686.39999999999,Double
Item [Double]
79558.40000000002,Double
Item [Double]
127372.79999999997,Double
Item [Double]
159116.80000000005,Double
Item [Double]
63686.39999999999,Double
Item [Double]
107124.73088000003,Double
Item [Double]
369222.4,Double
Item [Double]
220003.0617601984,Double
Item [Double]
192646.40000000005,Double
Item [Double]
104942.33088019838,Double
Item [Double]
385292.8000000001,Double
Item [Double]
215836.66176039676,Double
Item [Double]
192646.40000000005])
((forall (target :: Target).
ADReady target =>
target (TKR 2 Double) -> target (TKR 0 Double))
-> Concrete (TKR 2 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' f (TKR 2 Double) -> f (TKR 0 Double)
forall (target :: Target).
ADReady target =>
target (TKR 2 Double) -> target (TKR 0 Double)
codeTomsSlice (IShR 2
-> Concrete (TKR2 10 (TKScalar Double)) -> Concrete (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
IShR m -> target (TKR2 n x) -> target (TKR2 m x)
rreshape [Int
Item (IShR 2)
32, Int
Item (IShR 2)
4] Concrete (TKR2 10 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 10 r)
t128))
testTomsSlicePP :: Assertion
testTomsSlicePP :: Assertion
testTomsSlicePP = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 2 Double))) (TKR 0 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 2 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 2 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 2 Double))) (TKR 0 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 2 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall (target :: Target).
ADReady target =>
target (TKR 2 Double) -> target (TKR 0 Double)
codeTomsSlice (IShR 2
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 2 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 2)
32, Int
Item (IShR 2)
4] FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
AstArtifactRev (TKR 2 Double) (TKR 0 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 2 Double) (TKR 0 Double)
-> AstArtifactRev (TKR 2 Double) (TKR 0 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 2 Double) (TKR 0 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\m1 -> rfromS (sscalar 4.0 * sdot0 (sconcrete (sfromListLinear [32] [0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0])) (sreplicate @32 (sdot0 (sslice (SNat @0) (SNat @3) (str (sfromR m1))) (sslice (SNat @1) (SNat @3) (str (sfromR m1))))))"
AstArtifactRev (TKR 2 Double) (TKR 0 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 2 Double) (TKR 0 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\m1 -> let v8 = sreplicate @32 (ssum @96 (sreshape @[96] (str (sslice (SNat @0) (SNat @3) (str (sfromR m1))) * str (sslice (SNat @1) (SNat @3) (str (sfromR m1)))))) in rfromS (ssum @128 (sreshape @[128] (str (sreplicate @4 (siota (SNat @32) * v8)))))"
AstArtifactRev (TKR 2 Double) (TKR 0 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 2 Double) (TKR 0 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret m1 -> let m10 = sreshape @[32,3] (sreplicate @96 (ssum @32 (siota (SNat @32) * ssum @4 (str (sreshape @[32,4] (sreplicate @128 (sfromR dret))))))) in rfromS (str (sappend (sconcrete (sfromListLinear [0,32] [])) (sappend (str (str (sslice (SNat @1) (SNat @3) (str (sfromR m1))) * m10)) (sconcrete (sreplicate [1,32] 0.0)))) + str (sappend (sconcrete (sreplicate [1,32] 0.0)) (sappend (str (str (sslice (SNat @0) (SNat @3) (str (sfromR m1))) * m10)) (sconcrete (sfromListLinear [0,32] [])))))"
AstArtifactRev (TKR 2 Double) (TKR 0 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 2 Double) (TKR 0 Double)
-> AstArtifactRev (TKR 2 Double) (TKR 0 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 2 Double) (TKR 0 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret m1 -> rfromS (let x10 = sdot0 (sconcrete (sfromListLinear [32] [0.0,4.0,8.0,12.0,16.0,20.0,24.0,28.0,32.0,36.0,40.0,44.0,48.0,52.0,56.0,60.0,64.0,68.0,72.0,76.0,80.0,84.0,88.0,92.0,96.0,100.0,104.0,108.0,112.0,116.0,120.0,124.0])) (sreplicate @32 (sfromR dret)) in str (sappend (sslice (SNat @1) (SNat @3) (str (sfromR m1)) * sreplicate @3 (sreplicate @32 x10)) (sconcrete (sreplicate [1,32] 0.0))) + str (sappend (sconcrete (sreplicate [1,32] 0.0)) (sslice (SNat @0) (SNat @3) (str (sfromR m1)) * sreplicate @3 (sreplicate @32 x10))))"
testCNNOPP0c :: Assertion
testCNNOPP0c :: Assertion
testCNNOPP0c = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCLaborious (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i86, i88] -> [i86 + i88]))) (\\[i40, i41] -> [i40 + i41])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i42, i43, i44, i45] -> [ifH (notB (2 <=. i42 + i44) &&* notB (2 <=. i43 + i45)) 0 1, i42, i43, i44, i45])))))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w46 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i38, i39] -> [i38 + i39]))) (\\[i40, i41] -> [i40 + i41])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i42, i43, i44, i45] -> [ifH (notB (2 <=. i42 + i44) &&* notB (2 <=. i43 + i45)) 0 1, i42, i43, i44, i45])))))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w46 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w46 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i38, i39] -> [i38 + i39]))) (\\[i40, i41] -> [i40 + i41])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i42, i43, i44, i45] -> [ifH (notB (2 <=. i42 + i44) &&* notB (2 <=. i43 + i45)) 0 1, i42, i43, i44, i45])))))) in rfromS (ssum @1 (str (ssum @2 (str (ssum @2 (str (ssum @2 (w46 * sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (ssum @2 (ssum @2 (sdot1In (stranspose @[0,1,2,5,3,4] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,4,2] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i112, i114] -> [i112 + i114]))) (\\[i40, i41] -> [i40 + i41])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i96, i97, i98, i103, i104] -> [ifH (notB (2 <=. i96 + i103) &&* notB (2 <=. i97 + i104)) 0 1, i96, i97, i103, i104]))) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))) !$ [0]))))"
testCNNOPP0b :: Assertion
testCNNOPP0b :: Assertion
testCNNOPP0b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBLaborious (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (sconcrete (sfromListLinear [2,2,2,2,1,2,2,2] [5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0]) * str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i108, i110] -> [i108 + i110]))) (\\[i47, i48] -> [i47 + i48])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i49, i50, i51, i52] -> [ifH (notB (2 <=. i49 + i51) &&* notB (2 <=. i50 + i52)) 0 1, i49, i50, i51, i52]))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w53 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i45, i46] -> [i45 + i46]))) (\\[i47, i48] -> [i47 + i48])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i49, i50, i51, i52] -> [ifH (notB (2 <=. i49 + i51) &&* notB (2 <=. i50 + i52)) 0 1, i49, i50, i51, i52])))))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (sconcrete (sfromListLinear [2,2,2,2,1,2,2,2] [5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0]) * w53))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w59 = sscatter (stranspose @[1,2,4,5,0,3] (ssum @1 (stranspose @[3,0,1,2] (ssum @2 (str (sconcrete (sfromListLinear [2,2,2,2,1,2,2,2] [5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0]) * sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))))))))) (\\[i55, i56, i57, i58] -> [ifH (notB (2 <=. i55 + i57) &&* notB (2 <=. i56 + i58)) 0 1, i55, i56, i57, i58]) in rfromS (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (stranspose @[1,3,4,0,5,2] (w59 !$ [0])) (\\[i60, i61] -> [i60 + i61]))) (\\[i62, i63] -> [i62 + i63])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (stranspose @[0,2,4,5,1,6,3] (sscatter (sdot1In (sconcrete (sfromListLinear [2,2,2,2,2,2,2] [5.0,13.1,-2.0,582934.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,2.0,9.0,0.0,2.99432,6.0,8.0,0.1,-335.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,1.0,-4.0,-0.2,26.0,5.0,13.1,-2.0,582934.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,2.0,9.0,0.0,2.99432,6.0,8.0,0.1,-335.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,1.0,-4.0,-0.2,26.0,5.0,13.1,-2.0,582934.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,2.0,9.0,0.0,2.99432,6.0,8.0,0.1,-335.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,1.0,-4.0,-0.2,26.0,5.0,13.1,-2.0,582934.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,2.0,9.0,0.0,2.99432,6.0,8.0,0.1,-335.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,1.0,-4.0,-0.2,26.0])) (stranspose @[4,2,3,6,7,0,5,1] (sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))) !$ [0])) (\\[i55, i56, i57, i58] -> [ifH (notB (2 <=. i55 + i57) &&* notB (2 <=. i56 + i58)) 0 1, i55, i56, i57, i58])) !$ [0]) (\\[i60, i61] -> [i60 + i61]))) (\\[i62, i63] -> [i62 + i63])))"
testCNNOPP1e :: Assertion
testCNNOPP1e :: Assertion
testCNNOPP1e = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpaddedL (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i93, i95] -> [i93 + i95]))) (\\[i30, i31] -> [i30 + i31])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i32, i33, i34, i35] -> [ifH (notB (2 <=. i32 + i34) &&* notB (2 <=. i33 + i35)) 0 1, i32, i33, i34, i35])))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w36 = str (sreplicate @2 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i28, i29] -> [i28 + i29]))) (\\[i30, i31] -> [i30 + i31])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i32, i33, i34, i35] -> [ifH (notB (2 <=. i32 + i34) &&* notB (2 <=. i33 + i35)) 0 1, i32, i33, i34, i35])))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w36 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX))) (STKProduct (STKS [2,2,2,2] STKScalar) (STKS [2,2,2,2] STKScalar)) (let w38 = sreshape @[2,2,2,2,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (ssum @2 (ssum @2 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @2 (stranspose @[4,0,1,5,2,3] (sgather (sfromVector (fromList [stranspose @[3,0,5,1,2,4] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i124, i126] -> [i124 + i126]))) (\\[i30, i31] -> [i30 + i31])), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i32, i33, i34, i35] -> [ifH (notB (2 <=. i32 + i34) &&* notB (2 <=. i33 + i35)) 0 1, i32, i33, i34, i35]))))) (stranspose @[2,3,1,4,5,6,0] w38)))) (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (stranspose @[0,2,4,5,1,6,3] (sscatter (sdot1In (stranspose @[2,3,5,6,0,4,1] (sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1)))))))) (stranspose @[2,3,5,6,0,4,1] w38)) (\\[i39, i40, i41, i42] -> [ifH (notB (2 <=. i39 + i41) &&* notB (2 <=. i40 + i42)) 0 1, i39, i40, i41, i42])) !$ [0]) (\\[i44, i45] -> [i44 + i45]))) (\\[i46, i47] -> [i46 + i47]))))"
testCNNOPP2 :: Assertion
testCNNOPP2 :: Assertion
testCNNOPP2 = do
Assertion
resetVarCounter
let t :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
t = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded2
(Ranked 4 Double -> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 4 Double -> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> Ranked 4 Double
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ IShR 4 -> Double -> Ranked 4 Double
forall (n :: Nat) a. PrimElt a => IShR n -> a -> Ranked n a
Nested.rreplicateScal (Int
1 Int -> ShR 3 Int -> IShR 4
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> IShR 2 -> ShR 3 Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> IShR 1 -> IShR 2
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> IShR 1
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) Double
1)
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 4 Double)
t)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sreplicate @2 (sreplicate @2 (stranspose @[2,3,1,0] (sappend (sreplicate @1 (sgather (sreplicate @1 (stranspose @[2,0,1] (sgather (sconcrete (sfromListLinear [2,2] [1.0,1.0,1.0,1.0])) (\\[i68, i69] -> [i69 + i68])))) (\\[i44, i35, i8] -> [i8, i8, i8, 2 * i44 + i35]))) (sconcrete (sreplicate [1,2,2,2] 0.0))) !$ [0, 0])))"
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet FullSpan (TKR 4 Double)
t
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sreplicate @2 (sreplicate @2 (let u36 = let u41 = sgather (sgather (sreplicate @1 (let w32 = sgather (stranspose @[3,2,0,1] (sgather (sconcrete (sfromListLinear [2,3,2] [1.0,1.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0])) (\\[i26, i15] -> [i26 + i15]))) (\\[i22, i16] -> [i22 + i16]) in stranspose @[1,2,3,0] (sappend (sreplicate @1 (stranspose @[2,0,4,1,3] w32 !$ [0])) (sconcrete (sreplicate [2,2,2,2,2] 0.0))))) (\\[i20] -> [i20, i20, i20, 0])) (\\[i44, i39, i35, i8] -> [2 * i39 + i8, i39, 2 * i44 + i35]) in str (sappend (sreplicate @1 (str u41 !$ [0])) (sconcrete (sreplicate [1,2,2,2] 0.0))) in stranspose @[2,3,0,1] u36 !$ [0, 0])))"
testCNNOPP2b :: Assertion
testCNNOPP2b :: Assertion
testCNNOPP2b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded2 (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (sreplicate @2 (sreplicate @2 (stranspose @[2,3,1,0] (sappend (sreplicate @1 (sgather (sreplicate @1 (stranspose @[2,0,1] (sgather (sfromR u1 !$ [0, 0]) (\\[i92, i93] -> [i93 + i92])))) (\\[i94, i95, i96] -> [i96, i96, i96, 2 * i94 + i95]))) (sconcrete (sreplicate [1,2,2,2] 0.0))) !$ [0, 0])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (sreplicate @2 (sreplicate @2 (stranspose @[2,3,1,0] (sappend (sreplicate @1 (sgather (sreplicate @1 (stranspose @[2,0,1] (sgather (sfromR u1 !$ [0, 0]) (\\[i92, i93] -> [i93 + i92])))) (\\[i94, i95, i96] -> [i96, i96, i96, 2 * i94 + i95]))) (sconcrete (sreplicate [1,2,2,2] 0.0))) !$ [0, 0])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let u98 = stranspose @[3,2,0,1] (soneHot (ssum @2 (ssum @2 (sfromR dret))) [0, 0]) in rfromS (soneHot (sscatter (stranspose @[1,2,0] (ssum @1 (sscatter (ssum @1 (sslice (SNat @0) (SNat @1) u98)) (\\[i99, i100, i101] -> [i101, i101, i101, 2 * i99 + i100])))) (\\[i102, i103] -> [i103 + i102])) [0, 0])"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (sreplicate @1 (sreplicate @1 (sscatter (sscatter (stranspose @[3,2,0,1] (soneHot (ssum @2 (ssum @2 (sfromR dret))) [0, 0]) !$ [0]) (\\[i99, i100, i101] -> [i101, i101, 2 * i99 + i100, i101]) !$ [0]) (\\[i102, i103] -> [i103 + i102]))))"
maxPool2dUnpadded2
:: (target ~ AstTensor AstMethodLet FullSpan, r ~ Double)
=> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded2 :: forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded2 target (TKR 4 r)
a =
IShR (4 + 0)
-> (IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
_, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
_, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBh, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBw] ->
let arrt :: target (TKR 4 r)
arrt = target (TKR 4 r) -> IxR 4 (IntOf target) -> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type), (n :: Nat) ~ (4 :: Nat)) =>
target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez2 (target (TKR 4 r) -> target (TKR 4 r)
forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded2 target (TKR 4 r)
a) [Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBw, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
1, AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
2 AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
forall a. Num a => a -> a -> a
* Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
iBh, AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
2 AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
forall a. Num a => a -> a -> a
* Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
iBw]
in target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 0 r)
rmaximum2 target (TKR 4 r)
arrt
IxR 4 (IntOf target)
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"maxPool2dUnpadded2: impossible pattern needlessly required"
conv2dUnpadded2
:: (target ~ AstTensor AstMethodLet FullSpan, r ~ Double)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded2 :: forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded2 target (TKR 4 r)
a =
IShR (4 + 0)
-> (IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
3, Int
Item (IShR 4)
3, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iImg, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
_, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBh, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = target (TKR 4 r) -> IxR 4 (IntOf target) -> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type), (n :: Nat) ~ (4 :: Nat)) =>
target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez2 target (TKR 4 r)
a [Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iImg, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBh, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBw]
in target (TKR 4 r)
-> IxR 4 (IntOf target) -> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrAt [Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBw, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
iBw, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0]
IxR 4 (IntOf target)
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dUnpadded2: impossible pattern needlessly required"
slicez2
:: (target ~ AstTensor AstMethodLet FullSpan, r ~ Double, n ~ 4)
=> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez2 :: forall (target :: Target) r (n :: Nat).
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type), (n :: Nat) ~ (4 :: Nat)) =>
target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez2 target (TKR n r)
d IxROf target n
ixBase =
IShR (n + 0)
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
1, Int
Item (IShR 4)
1, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r)))
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IxROf target n
ixResult -> target (TKR n r) -> IxROf target n -> target (TKR2 0 (TKScalar r))
forall (target :: Target) r (n :: Nat).
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type), (n :: Nat) ~ (4 :: Nat)) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz02 target (TKR n r)
d ((AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
-> IxR n (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
-> IxR n (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
-> IxR n (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
forall i j k (n :: Nat).
(i -> j -> k) -> IxR n i -> IxR n j -> IxR n k
ixrZipWith AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
forall a. Num a => a -> a -> a
(+) IxR n (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
IxROf target n
ixBase IxR n (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
IxROf target n
ixResult)
indexz02
:: forall target r n.
(target ~ AstTensor AstMethodLet FullSpan, r ~ Double, n ~ 4)
=> target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz02 :: forall (target :: Target) r (n :: Nat).
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type), (n :: Nat) ~ (4 :: Nat)) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz02 target (TKR n r)
d IxROf target n
ix = BoolOf target
-> target (TKR 0 r) -> target (TKR 0 r) -> target (TKR 0 r)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
1 AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> BoolOf (AstTensor AstMethodLet PrimalSpan)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>. (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
-> [Item
(IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))]
forall l. IsList l => l -> [Item l]
toList IxROf target n
IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64))
ix [AstTensor AstMethodLet PrimalSpan (TKScalar Int64)]
-> Int -> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
forall a. HasCallStack => [a] -> Int -> a
!! Int
0)) (target (TKR n r)
target (TKR2 (n + 0) (TKScalar r))
d target (TKR2 (n + 0) (TKScalar r))
-> IxROf target n -> target (TKR 0 r)
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! IxROf target n
ix) (r -> target (TKR 0 r)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0)
rmaximum2 :: (target ~ AstTensor AstMethodLet FullSpan, r ~ Double)
=> target (TKR 4 r) -> target (TKR 0 r)
rmaximum2 :: forall (target :: Target) r.
((target :: Target) ~ (AstTensor AstMethodLet FullSpan :: Target),
(r :: Type) ~ (Double :: Type)) =>
target (TKR 4 r) -> target (TKR 0 r)
rmaximum2 target (TKR 4 r)
t0 = target (TKR 4 r)
-> (target (TKR 4 r) -> target (TKR 0 r)) -> target (TKR 0 r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR 4 r)
t0 ((target (TKR 4 r) -> target (TKR 0 r)) -> target (TKR 0 r))
-> (target (TKR 4 r) -> target (TKR 0 r)) -> target (TKR 0 r)
forall a b. (a -> b) -> a -> b
$ \target (TKR 4 r)
t -> target (TKR 4 r) -> IxROf target 4 -> target (TKR 0 r)
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
t [Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0, Item (IxR 4 (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)))
AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
0]
testCNNOPP3b :: Assertion
testCNNOPP3b :: Assertion
testCNNOPP3b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded33 (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (stranspose @[2,1,0] (sgather (sgather (sappend (sreplicate @1 (stranspose @[0,4,5,1,2,3] (sgather (sfromVector (fromList [stranspose @[5,2,3,4,0,1] (sreplicate @2 (sreplicate @2 (stranspose @[2,3,1,0] (sgather (stranspose @[3,0,2,1] (sgather (stranspose @[3,0,1,2] (sgather (stranspose @[3,0,2,1] (sfromR u1) !$ [1]) (\\[i191, i193] -> [remH i191 4 + i193]))) (\\[i195, i197] -> [i195 + i197, i195]))) (\\[i128, i129] -> [i128 + i129, i128]))))), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i130, i131, i132, i133] -> [ifH (notB (2 <=. remH i130 4 + i131) &&* (notB (2 <=. i130 + i132) &&* notB (2 <=. i130 + i133))) 0 1, i130, i131, i132, i133])))) (sconcrete (sreplicate [1,2,2,2,2,2,2] 0.0))) (\\[i134, i135, i136, i137] -> [i135, i134, i135, i137, i135, i137, i134])) (\\[i138] -> [remH i138 4])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (stranspose @[2,1,0] (sgather (sgather (sappend (sreplicate @1 (stranspose @[0,4,5,1,2,3] (sgather (sfromVector (fromList [stranspose @[5,2,3,4,0,1] (sreplicate @2 (sreplicate @2 (stranspose @[2,3,1,0] (sgather (stranspose @[3,0,2,1] (sgather (stranspose @[3,0,1,2] (sgather (stranspose @[3,0,2,1] (sfromR u1) !$ [1]) (\\[i124, i125] -> [remH i124 4 + i125]))) (\\[i126, i127] -> [i126 + i127, i126]))) (\\[i128, i129] -> [i128 + i129, i128]))))), sconcrete (sreplicate [2,2,2,2,2,2] 0.0)])) (\\[i130, i131, i132, i133] -> [ifH (notB (2 <=. remH i130 4 + i131) &&* (notB (2 <=. i130 + i132) &&* notB (2 <=. i130 + i133))) 0 1, i130, i131, i132, i133])))) (sconcrete (sreplicate [1,2,2,2,2,2,2] 0.0))) (\\[i134, i135, i136, i137] -> [i135, i134, i135, i137, i135, i137, i134])) (\\[i138] -> [remH i138 4])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w145 = sscatter (sscatter (stranspose @[2,1,0] (sfromR dret)) (\\[i140] -> [remH i140 4])) (\\[i141, i142, i143, i144] -> [i142, i141, i142, i144, i142, i144, i141]) ; w150 = sscatter (stranspose @[0,3,4,5,1,2] (ssum @1 (sslice (SNat @0) (SNat @1) w145))) (\\[i146, i147, i148, i149] -> [ifH (notB (2 <=. remH i146 4 + i147) &&* (notB (2 <=. i146 + i148) &&* notB (2 <=. i146 + i149))) 0 1, i146, i147, i148, i149]) in rfromS (stranspose @[1,3,2,0] (soneHot (sscatter (stranspose @[1,2,3,0] (sscatter (stranspose @[1,3,2,0] (sscatter (stranspose @[3,2,0,1] (ssum @2 (ssum @2 (stranspose @[4,5,1,2,3,0] (w150 !$ [0]))))) (\\[i151, i152] -> [i151 + i152, i151]))) (\\[i153, i154] -> [i153 + i154, i153]))) (\\[i155, i156] -> [remH i155 4 + i156])) [1]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (stranspose @[1,3,2,0] (soneHot (sscatter (stranspose @[1,2,3,0] (sscatter (stranspose @[1,3,2,0] (sscatter (ssum @2 (ssum @2 (stranspose @[0,5,6,1,4,2,3] (sscatter (sscatter (sscatter (stranspose @[2,1,0] (sfromR dret)) (\\[i140] -> [remH i140 4])) (\\[i141, i142, i143, i144] -> [i142, i141, i142, i144, i141, i142, i144]) !$ [0]) (\\[i146, i147, i148, i149] -> [ifH (notB (2 <=. remH i146 4 + i147) &&* (notB (2 <=. i146 + i148) &&* notB (2 <=. i146 + i149))) 0 1, i146, i147, i148, i149])) !$ [0]))) (\\[i151, i152] -> [i151 + i152, i151]))) (\\[i153, i154] -> [i153 + i154, i153]))) (\\[i155, i156] -> [remH i155 4 + i156])) [1]))"
maxPool2dUnpadded3
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3 target (TKR 4 r)
arr =
IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrt :: target (TKR 4 r)
arrt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez3 [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] target (TKR 4 r)
arr [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iBh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`quotH` PrimalOf target (TKScalar Int64)
4, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
in target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Nat) r.
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rmaximum3 target (TKR 4 r)
arrt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"maxPool2dUnpadded3: impossible pattern needlessly required"
maxPool2dUnpadded33
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded33 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded33 target (TKR 4 r)
arr =
IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrt :: target (TKR 4 r)
arrt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez33 [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] target (TKR 4 r)
arr [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iBh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` PrimalOf target (TKScalar Int64)
4, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
in target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Nat) r.
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rmaximum3 target (TKR 4 r)
arrt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"maxPool2dUnpadded33: impossible pattern needlessly required"
conv2dUnpadded3
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3 target (TKR 4 r)
arrA =
let shB :: IShR 4
shB = [Item (IShR 4)
2, Item (IShR 4)
2, Item (IShR 4)
2, Item (IShR 4)
2]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
_, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez33 IShR 4
shB target (TKR 4 r)
arrA [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iImg PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` PrimalOf target (TKScalar Int64)
4, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
1]
in target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrAt [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh]
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dUnpadded3: impossible pattern needlessly required"
slicez3
:: (ADReady target, GoodScalar r, KnownNat n)
=> IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez3 :: forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez3 IShR n
shOut target (TKR n r)
d IxROf target n
ixBase =
IShR (n + 0)
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR n
IShR (n + 0)
shOut ((IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r)))
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IxROf target n
_ -> target (TKR n r) -> IxROf target n -> target (TKR2 0 (TKScalar r))
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz03 target (TKR n r)
d ((PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64))
-> IxROf target n -> IxROf target n -> IxROf target n
forall i j k (n :: Nat).
(i -> j -> k) -> IxR n i -> IxR n j -> IxR n k
ixrZipWith PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
(+) IxROf target n
ixBase IxROf target n
ixBase)
slicez33
:: (ADReady target, GoodScalar r, KnownNat n)
=> IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez33 :: forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez33 IShR n
shOut target (TKR n r)
d IxROf target n
ixBase =
IShR (n + 0)
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR n
IShR (n + 0)
shOut ((IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r)))
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IxROf target n
ixResult -> target (TKR n r) -> IxROf target n -> target (TKR2 0 (TKScalar r))
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz03 target (TKR n r)
d ((PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64))
-> IxROf target n -> IxROf target n -> IxROf target n
forall i j k (n :: Nat).
(i -> j -> k) -> IxR n i -> IxR n j -> IxR n k
ixrZipWith PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
(+) IxROf target n
ixBase IxROf target n
ixResult)
indexz03
:: forall target r n. (ADReady target, GoodScalar r, KnownNat n)
=> target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz03 :: forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz03 target (TKR n r)
d IxROf target n
ix = BoolOf target
-> target (TKR 0 r) -> target (TKR 0 r) -> target (TKR 0 r)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (forall (target :: Target) (n :: Nat).
(ADReady target, KnownNat n) =>
IShR n -> IxROf target n -> BoolOf target
within0 @target (forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape @target target (TKR n r)
d) IxROf target n
ix) (target (TKR n r)
target (TKR2 (n + 0) (TKScalar r))
d target (TKR2 (n + 0) (TKScalar r))
-> IxROf target n -> target (TKR 0 r)
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! IxROf target n
ix) (r -> target (TKR 0 r)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0)
rmaximum3 :: (BaseTensor target, LetTensor target, KnownNat n, GoodScalar r)
=> target (TKR n r) -> target (TKR 0 r)
rmaximum3 :: forall (target :: Target) (n :: Nat) r.
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rmaximum3 target (TKR n r)
t0 = target (TKR n r)
-> (target (TKR n r) -> target (TKR 0 r)) -> target (TKR 0 r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR n r)
t0 ((target (TKR n r) -> target (TKR 0 r)) -> target (TKR 0 r))
-> (target (TKR n r) -> target (TKR 0 r)) -> target (TKR 0 r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
t -> target (TKR n r)
-> IxR n (PrimalOf target (TKScalar Int64)) -> target (TKR 0 r)
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR n r)
t [Item (IxR n (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR n (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR n (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR n (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
testCNNOPP4 :: Assertion
testCNNOPP4 :: Assertion
testCNNOPP4 = do
Assertion
resetVarCounter
let blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph = AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (c :: TK) (a :: AstMethodOfSharing).
AstTensor a PrimalSpan c -> AstTensor a FullSpan c
AstFromPrimal (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ SNat 3
-> SingletonTK
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
3
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double)))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @3) SingletonTK
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
3
(BuildTensorKind
3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
3
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double)))))
forall a b. (a -> b) -> a -> b
$ SNat 3
-> SingletonTK (BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @3) SingletonTK (BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double)))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ SNat 3
-> SingletonTK (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @3) SingletonTK (TKR2 1 (TKScalar Double))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (TKR2 1 (TKScalar Double))))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 3 (TKR2 1 (TKScalar Double)))
forall a b. (a -> b) -> a -> b
$ SNat 3
-> SingletonTK (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet PrimalSpan (BuildTensorKind 3 (TKR 0 Double))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @3) SingletonTK (TKR 0 Double)
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(Ranked 0 Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Double -> Ranked 0 Double
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar Double
7
:: AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded4 AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (str (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sreplicate @1 (stranspose @[2,1,0] (sgather (stranspose @[3,4,5,2,6,1,0] (sgather (stranspose @[4,1,3,0,2] (sgather (stranspose @[3,0,4,1,2] (sgather (sconcrete (sreplicate [2,3,3,3] 7.0)) (\\[i61, i64] -> [i61 + i64]))) (\\[i67, i69] -> [3 + (negate i69 + i67), i69]))) (\\[i71, i73, i76] -> [i71 * i73 + i76])) !$ [1, 0, 0, 0]) (\\[i84] -> [2 * i84]))))))"
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let w19 = sgather (sfromVector (fromList [stranspose @[3,0,5,6,1,2,4] (sgather (stranspose @[6,0,3,1,4,5,2] (sgather (stranspose @[3,0,2,1] (sgather (stranspose @[0,2,1] (sgather (sconcrete (sreplicate [2,3,3,3] 7.0)) (\\[i32, i5] -> [i32 + i5]))) (\\[i31, i6] -> [i31, 3 + (negate i31 + i6)]))) (\\[i36, i26, i7] -> [i36 * i26 + i7]))) (\\[i22, i8] -> [2 * i22 + i8])), sconcrete (sreplicate [2,2,2,2,2,2,2,2] 0.0)])) (\\[i28, i21, i15, i12, i9] -> [ifH (notB (2 <=. i28 + i15) &&* (notB (0 <=. negate i28 + i12) &&* notB (3 <=. 2 * i21 + i9))) 0 1, i28, i21, i15, i12, i9]) in stranspose @[2,3,4,7,5,0,6,1] w19 !$ [0, 0, 0, 0])"
testCNNOPP4b :: Assertion
testCNNOPP4b :: Assertion
testCNNOPP4b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded4 (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
3, Int
Item (IShR 4)
3, Int
Item (IShR 4)
3, Int
Item (IShR 4)
3] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (str (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sreplicate @1 (stranspose @[2,1,0] (sgather (stranspose @[2,3,0,1] (sgather (stranspose @[1,0,3,2] (sreplicate @2 (stranspose @[2,3,0,1] (sreplicate @2 (stranspose @[2,1,0] (sreplicate @2 (sfromR u1 !$ [2, 2]))))))) (\\[i194, i195] -> [i195 * i194, i194, i195]))) (\\[i125] -> [i125, 2 * i125]))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (str (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sreplicate @1 (stranspose @[2,1,0] (sgather (stranspose @[3,5,6,2,4,7,1,0] (sgather (stranspose @[3,4,7,1,5,6,0,2] (sgather (stranspose @[6,0,7,4,3,2,1,5] (sgather (sslice (SNat @1) (SNat @2) (stranspose @[0,2,1] (sfromR u1))) (\\[i115, i116, i117, i118, i119] -> [i115 + i116]))) (\\[i120, i121] -> [3 + (negate i121 + i120), i121]))) (\\[i122, i123, i124] -> [i122, i123, i122 * i123 + i124])) !$ [1, 0, 0, 0]) (\\[i125] -> [i125, 2 * i125]))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (stranspose @[0,2,1] (sappend (sconcrete (sreplicate [1,3,3,3] 0.0)) (sappend (sscatter (stranspose @[1,6,5,4,3,7,0,2] (sscatter (stranspose @[6,3,7,0,1,4,5,2] (sscatter (stranspose @[7,6,3,0,4,1,2,5] (soneHot (sscatter (stranspose @[2,1,0] (ssum @1 (sslice (SNat @1) (SNat @1) (str (sfromR dret))))) (\\[i127] -> [i127, 2 * i127])) [1, 0, 0, 0])) (\\[i128, i129, i130] -> [i128, i129, i128 * i129 + i130]))) (\\[i131, i132] -> [3 + (negate i132 + i131), i132]))) (\\[i133, i134, i135, i136, i137] -> [i133 + i134])) (sconcrete (sfromListLinear [0,3,3,3] [])))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (sappend (sconcrete (sreplicate [1,3,3,3] 0.0)) (stranspose @[0,2,1] (sscatter (stranspose @[1,6,5,4,3,7,0,2] (sscatter (stranspose @[6,3,7,0,1,4,5,2] (sscatter (stranspose @[7,6,3,0,4,1,2,5] (soneHot (sscatter (stranspose @[1,3,2,0] (sfromR dret) !$ [1]) (\\[i127] -> [i127, 2 * i127])) [1, 0, 0, 0])) (\\[i128, i129, i130] -> [i128, i129, i128 * i129 + i130]))) (\\[i131, i132] -> [3 + (negate i132 + i131), i132]))) (\\[i133, i134, i135, i136, i137] -> [i133 + i134]))))"
testCNNOPP5 :: Assertion
testCNNOPP5 :: Assertion
testCNNOPP5 = do
Assertion
resetVarCounter
let blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph = AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (c :: TK) (a :: AstMethodOfSharing).
AstTensor a PrimalSpan c -> AstTensor a FullSpan c
AstFromPrimal (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ SNat 6
-> SingletonTK
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
6
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double)))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @6) SingletonTK
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
6
(BuildTensorKind
6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
6
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double)))))
forall a b. (a -> b) -> a -> b
$ SNat 6
-> SingletonTK (BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @6) SingletonTK (BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double)))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ SNat 6
-> SingletonTK (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @6) SingletonTK (TKR2 1 (TKScalar Double))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (TKR2 1 (TKScalar Double))))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 6 (TKR2 1 (TKScalar Double)))
forall a b. (a -> b) -> a -> b
$ SNat 6
-> SingletonTK (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet PrimalSpan (BuildTensorKind 6 (TKR 0 Double))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @6) SingletonTK (TKR 0 Double)
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(Ranked 0 Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Double -> Ranked 0 Double
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar Double
7
:: AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded4 AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sconcrete (sreplicate [1,1,2,2] 7.0))"
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sconcrete (sreplicate [1,1,2,2] 7.0))"
testCNNOPP5b :: Assertion
testCNNOPP5b :: Assertion
testCNNOPP5b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded4 (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
5, Int
Item (IShR 4)
5, Int
Item (IShR 4)
5, Int
Item (IShR 4)
5] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (sreplicate @1 (sreplicate @1 (str (sslice (SNat @0) (SNat @2) (str (sslice (SNat @0) (SNat @2) (sfromR u1 !$ [0, 0])))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (sreplicate @1 (sreplicate @1 (str (sslice (SNat @0) (SNat @2) (str (sslice (SNat @0) (SNat @2) (sfromR u1 !$ [0, 0])))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (soneHot (sappend (sconcrete (sfromListLinear [0,5] [])) (sappend (str (sappend (sconcrete (sfromListLinear [0,2] [])) (sappend (str (ssum @1 (ssum @1 (sfromR dret)))) (sconcrete (sreplicate [3,2] 0.0))))) (sconcrete (sreplicate [3,5] 0.0)))) [0, 0])"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (soneHot (sappend (str (sappend (stranspose @[0,1,3,2] (sfromR dret) !$ [0, 0]) (sconcrete (sreplicate [3,2] 0.0)))) (sconcrete (sreplicate [3,5] 0.0))) [0, 0])"
maxPool2dUnpadded4
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded4 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded4 target (TKR 4 r)
arr =
IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrt :: target (TKR 4 r)
arrt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez4 [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] target (TKR 4 r)
arr [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
bb PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1, PrimalOf target (TKScalar Int64)
3 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
aa PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iBh, PrimalOf target (TKScalar Int64)
2 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iBw]
in target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Nat) r.
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rmaximum3 target (TKR 4 r)
arrt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"maxPool2dUnpadded4: impossible pattern needlessly required"
conv2dUnpadded4
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded4 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded4 target (TKR 4 r)
arrA =
let shB :: IShR 4
shB = [Item (IShR 4)
1, Item (IShR 4)
1, Item (IShR 4)
2, Item (IShR 4)
2]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
_, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez4 IShR 4
shB target (TKR 4 r)
arrA [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
in target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrAt [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dUnpadded4: impossible pattern needlessly required"
slicez4
:: (ADReady target, GoodScalar r, KnownNat n)
=> IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez4 :: forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez4 IShR n
shOut target (TKR n r)
d IxROf target n
ixBase =
IShR (n + 0)
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR n
IShR (n + 0)
shOut ((IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r)))
-> (IxROf target n -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (n + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IxROf target n
ixResult -> target (TKR n r) -> IxROf target n -> target (TKR2 0 (TKScalar r))
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> IxROf target n -> target (TKR 0 r)
indexz03 target (TKR n r)
d ((PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64))
-> IxROf target n -> IxROf target n -> IxROf target n
forall i j k (n :: Nat).
(i -> j -> k) -> IxR n i -> IxR n j -> IxR n k
ixrZipWith PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
(+) IxROf target n
ixBase IxROf target n
ixResult)
testCNNOPP6 :: Assertion
testCNNOPP6 :: Assertion
testCNNOPP6 = do
Assertion
resetVarCounter
let blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph = AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (c :: TK) (a :: AstMethodOfSharing).
AstTensor a PrimalSpan c -> AstTensor a FullSpan c
AstFromPrimal (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
2
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
2
(BuildTensorKind
2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
2
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))))
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK (TKR2 1 (TKScalar Double))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet PrimalSpan (BuildTensorKind 2 (TKR 0 Double))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK (TKR 0 Double)
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(Ranked 0 Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Double -> Ranked 0 Double
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar Double
7
:: AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3 (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3z AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sconcrete (sfromListLinear [2,2,2,2] [7.0,0.0,7.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]))"
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (stranspose @[1,2,0] (sreplicate @2 (let t30 = sgather (stranspose @[2,1,0] (sgather (str (sgather (sreplicate @2 (str (sreplicate @2 (let m21 = sgather (str (sgather (sconcrete (sreplicate [2,2,2,2] 7.0)) (\\[i9] -> [2 * i9, 2 * i9, 2 * i9]))) (\\[i12] -> [2 * i12]) in sappend (sreplicate @1 (sappend (sreplicate @1 (m21 !$ [0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))))) (\\[i1] -> [2 * i1, 0]))) (\\[i2] -> [2 * i2]))) (\\[i4] -> [2 * i4]) in sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (t30 !$ [0, 0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))) (sconcrete (sreplicate [1,2,2] 0.0)))))"
testCNNOPP6b :: Assertion
testCNNOPP6b :: Assertion
testCNNOPP6b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3 (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3z) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (stranspose @[1,2,0] (sreplicate @2 (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sfromR u1 !$ [0, 0, 0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))) (sconcrete (sreplicate [1,2,2] 0.0)))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (stranspose @[1,2,0] (sreplicate @2 (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sfromR u1 !$ [0, 0, 0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))) (sconcrete (sreplicate [1,2,2] 0.0)))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let t34 = ssum @2 (stranspose @[2,0,1] (sfromR dret)) in rfromS (soneHot (ssum @1 (sslice (SNat @0) (SNat @1) (ssum @1 (sslice (SNat @0) (SNat @1) (ssum @1 (sslice (SNat @0) (SNat @1) t34)))))) [0, 0, 0, 0])"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (soneHot (ssum0 (stranspose @[0,1,3,2] (sfromR dret) !$ [0, 0, 0])) [0, 0, 0, 0])"
conv2dUnpadded3z
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3z :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3z target (TKR 4 r)
arrA =
let shB :: IShR 4
shB = [Item (IShR 4)
2, Item (IShR 4)
2, Item (IShR 4)
2, Item (IShR 4)
2]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
_, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez3 IShR 4
shB target (TKR 4 r)
arrA [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
in target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrAt [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh]
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dUnpadded3z: impossible pattern needlessly required"
testCNNOPP7 :: Assertion
testCNNOPP7 :: Assertion
testCNNOPP7 = do
Assertion
resetVarCounter
let blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph = AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (c :: TK) (a :: AstMethodOfSharing).
AstTensor a PrimalSpan c -> AstTensor a FullSpan c
AstFromPrimal (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
2
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
2
(BuildTensorKind
2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind
2
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))))
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double)))))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK (TKR2 1 (TKScalar Double))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double))))
-> AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double))
-> AstTensor
AstMethodLet
PrimalSpan
(BuildTensorKind 2 (TKR2 1 (TKScalar Double)))
forall a b. (a -> b) -> a -> b
$ SNat 2
-> SingletonTK (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet PrimalSpan (BuildTensorKind 2 (TKR 0 Double))
forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing)
(b :: AstSpanType).
SNat k
-> SingletonTK y
-> AstTensor a b y
-> AstTensor a b (BuildTensorKind k y)
AstReplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK (TKR 0 Double)
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK
(Ranked 0 Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> Ranked 0 Double
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Double -> Ranked 0 Double
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar Double
7
:: AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3y (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3y AstTensor AstMethodLet FullSpan (TKR 4 Double)
blackGlyph
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sconcrete (sfromListLinear [2,2,2,2] [7.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]))"
AstTensor AstMethodLet FullSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet FullSpan (TKR 4 Double)
afcnn2T
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let u27 = sgather (stranspose @[3,2,0,1] (sgather (stranspose @[1,2,0] (sgather (sreplicate @2 (stranspose @[1,2,0] (sreplicate @2 (let m21 = sgather (str (sgather (sconcrete (sreplicate [2,2,2,2] 7.0)) (\\[i9] -> [2 * i9, 2 * i9, 2 * i9]))) (\\[i11] -> [2 * i11]) in sappend (sreplicate @1 (sappend (sreplicate @1 (m21 !$ [0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))))) (\\[i1] -> [2 * i1]))) (\\[i31, i3] -> [2 * i3, 2 * i31]))) (\\[i4] -> [2 * i4]) in stranspose @[1,2,0] (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (u27 !$ [0, 0, 0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))) (sconcrete (sreplicate [1,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2] 0.0))))"
testCNNOPP7b :: Assertion
testCNNOPP7b :: Assertion
testCNNOPP7b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3y (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3y) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (stranspose @[1,2,0] (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sfromR u1 !$ [0, 0, 0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))) (sconcrete (sreplicate [1,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2] 0.0))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (stranspose @[1,2,0] (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sappend (sreplicate @1 (sfromR u1 !$ [0, 0, 0, 0])) (sconcrete (sfromListLinear [1] [0.0])))) (sconcrete (sreplicate [1,2] 0.0)))) (sconcrete (sreplicate [1,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2] 0.0))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (soneHot (ssum @1 (sslice (SNat @0) (SNat @1) (ssum @1 (sslice (SNat @0) (SNat @1) (ssum @1 (sslice (SNat @0) (SNat @1) (ssum @1 (sslice (SNat @0) (SNat @1) (stranspose @[2,0,1] (sfromR dret)))))))))) [0, 0, 0, 0])"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (soneHot (sfromR dret !$ [0, 0, 0, 0]) [0, 0, 0, 0])"
maxPool2dUnpadded3y
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3y :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded3y target (TKR 4 r)
arr =
IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrt :: target (TKR 4 r)
arrt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez3 [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] target (TKR 4 r)
arr [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
aa, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
bb, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
in target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Nat) r.
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rmaximum3 target (TKR 4 r)
arrt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"maxPool2dUnpadded3y: impossible pattern needlessly required"
conv2dUnpadded3y
:: (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3y :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded3y target (TKR 4 r)
arrA =
let shB :: IShR 4
shB = [Item (IShR 4)
2, Item (IShR 4)
2, Item (IShR 4)
2, Item (IShR 4)
2]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
_, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicez3 IShR 4
shB target (TKR 4 r)
arrA [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh]
in target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownSTK x, BaseTensor target) =>
target (TKR2 m x) -> IxROf target m -> target (TKR2 0 x)
rindex0 target (TKR 4 r)
arrAt [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh]
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dUnpadded3y: impossible pattern needlessly required"
_testPaddedCNNOPP0c :: Assertion
_testPaddedCNNOPP0c :: Assertion
_testPaddedCNNOPP0c = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dCPadded (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[5,0,1,4,2,3] (sgather (sconcrete (sfromListLinear [4,4,2,2] [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0])) (\\[i37, i38, i39, i40] -> [i37 + i39, i38 + i40])))))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w41 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[5,0,1,4,2,3] (sgather (sconcrete (sfromListLinear [4,4,2,2] [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0])) (\\[i37, i38, i39, i40] -> [i37 + i39, i38 + i40])))))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w41 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w41 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[5,0,1,4,2,3] (sgather (sconcrete (sfromListLinear [4,4,2,2] [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,13.1,-2.0,582934.0,2.0,9.0,0.0,2.99432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.0,8.0,0.1,-335.0,1.0,-4.0,-0.2,26.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0])) (\\[i37, i38, i39, i40] -> [i37 + i39, i38 + i40])))))) in rfromS (ssum @1 (str (ssum @2 (str (ssum @2 (str (ssum @2 (w41 * sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (ssum @2 (ssum @2 (sdot1In (stranspose @[0,1,2,6,3,4,5] (sgather (sconcrete (sfromListLinear [4,4,2,2] [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,-2.0,13.1,582934.0,2.0,0.0,9.0,2.99432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.0,0.1,8.0,-335.0,1.0,-0.2,-4.0,26.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0])) (\\[i66, i67, i68, i73, i74] -> [i66 + i73, i67 + i74]))) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))) !$ [0]))))"
_testPaddedCNNOPP0b :: Assertion
_testPaddedCNNOPP0b :: Assertion
_testPaddedCNNOPP0b = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dBPadded (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2, Int
Item (IShR 4)
2] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (sconcrete (sfromListLinear [2,2,2,2,1,2,2,2] [5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0]) * str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (sgather (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (stranspose @[9,2,5,1,3,4,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0)) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,0,7,8,6] (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR u1)) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))))))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0))))))) (\\[i50, i51, i52, i53, i54, i55] -> [i51 + i54, i51, i54, i50, i52, i53, i55, i50, i53, i52 + i55])))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w56 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (sgather (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (stranspose @[9,2,5,1,3,4,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0)) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,0,7,8,6] (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR u1)) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))))))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0))))))) (\\[i50, i51, i52, i53, i54, i55] -> [i51 + i54, i51, i54, i50, i52, i53, i55, i50, i53, i52 + i55]))))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (sconcrete (sfromListLinear [2,2,2,2,1,2,2,2] [5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0]) * w56))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w64 = sscatter (ssum @1 (stranspose @[3,0,1,2] (ssum @2 (str (sconcrete (sfromListLinear [2,2,2,2,1,2,2,2] [5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,5.0,2.0,6.0,1.0,-2.0,0.0,0.1,-0.2,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0,13.1,9.0,8.0,-4.0,582934.0,2.99432,-335.0,26.0]) * sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))))))) (\\[i58, i59, i60, i61, i62, i63] -> [i59 + i62, i59, i62, i58, i60, i61, i63, i58, i61, i60 + i63]) ; u65 = ssum @2 (ssum @2 (ssum @2 (ssum @2 (ssum @2 (ssum @2 (stranspose @[6,1,2,3,4,5,9,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)) (sappend (sslice (SNat @0) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @0) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @3) (stranspose @[9,3,1,4,5,2,6,7,8,0] (sslice (SNat @1) (SNat @3) w64))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)))))))))) in rfromS (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) (sslice (SNat @1) (SNat @3) u65))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (stranspose @[1,2,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @1) (SNat @2) (ssum @2 (ssum @2 (ssum @2 (ssum @2 (ssum @2 (ssum @2 (stranspose @[6,1,2,3,4,5,9,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)) (sappend (sslice (SNat @0) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @0) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @3) (stranspose @[9,3,1,4,5,2,6,7,8,0] (sslice (SNat @1) (SNat @3) (sscatter (sdot1In (sconcrete (sfromListLinear [2,2,2,2,2,2,2] [5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0,5.0,13.1,2.0,9.0,6.0,8.0,1.0,-4.0,-2.0,582934.0,0.0,2.99432,0.1,-335.0,-0.2,26.0])) (stranspose @[4,0,2,3,5,6,7,1] (sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret)))) !$ [0])) (\\[i58, i59, i60, i61, i62, i63] -> [i59 + i62, i59, i62, i58, i60, i61, i63, i58, i61, i60 + i63]))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)))))))))))))))"
_testPaddedCNNOPP1e :: Assertion
_testPaddedCNNOPP1e :: Assertion
_testPaddedCNNOPP1e = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (sgather (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (stranspose @[9,2,5,1,3,4,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0)) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,0,7,8,6] (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))))))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0))))))) (\\[i44, i75, i45, i46, i76, i47] -> [i75 + i76, i75, i76, i44, i45, i46, i47, i44, i46, i45 + i47]))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let u41 = sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0))) ; w48 = str (sreplicate @2 (stranspose @[0,4,1,2,5,3] (sgather (stranspose @[2,3,4,5,6,7,8,0,1] (sgather (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (stranspose @[9,2,5,1,3,4,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0)) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,0,7,8,6] (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 u41)))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0))))))) (\\[i42, i43] -> [i42 + i43, i42, i43]))) (\\[i44, i45, i46, i47] -> [i44, i45, i46, i47, i44, i46, i45 + i47])))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w48 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX))) (STKProduct (STKS [2,2,2,2] STKScalar) (STKS [2,2,2,2] STKScalar)) (let w50 = sreshape @[2,2,2,2,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (ssum @2 (ssum @2 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @2 (sgather (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (stranspose @[9,2,5,1,3,4,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0)) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @2) (stranspose @[9,1,2,3,4,5,0,7,8,6] (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sreplicate @2 (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))))))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,3] 0.0))))))) (\\[i44, i84, i45, i46, i85, i47] -> [i84 + i85, i84, i85, i44, i45, i46, i47, i44, i46, i45 + i47])))) (stranspose @[2,3,1,4,5,6,0] w50)))) (stranspose @[1,2,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @1) (SNat @2) (ssum @2 (ssum @2 (ssum @2 (ssum @2 (ssum @2 (ssum @2 (stranspose @[6,1,2,3,4,5,9,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0)) (sappend (stranspose @[9,1,2,3,4,5,6,7,8,0] (sappend (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0)) (sappend (sslice (SNat @0) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @0) (SNat @2) (stranspose @[9,1,2,3,4,5,6,7,8,0] (sslice (SNat @1) (SNat @3) (stranspose @[9,3,1,4,5,2,6,7,8,0] (sslice (SNat @1) (SNat @3) (sscatter (stranspose @[7,8,0,1,2,3,4,5,6] (sscatter (sdot1In (sreplicate @2 (stranspose @[2,3,5,0,4,1] (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))) (stranspose @[0,3,4,6,2,5,1] w50)) (\\[i51, i52, i53, i54] -> [i51, i52, i53, i54, i51, i53, i52 + i54]))) (\\[i55, i56] -> [i55 + i56, i55, i56]))))))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,2,2,2,2,2,2,4] 0.0))))))))))))))))"
testPaddedCNNOPP1b :: Assertion
testPaddedCNNOPP1b :: Assertion
testPaddedCNNOPP1b = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dShrinking (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
6 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
6 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
6 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[6,2,4,4,8] (str (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i64, i66] -> [i64 + i66]))) (\\[i24, i25] -> [i24 + i25])))) * sreplicate @6 (str (sreplicate @4 (str (sreplicate @4 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w26 = str (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i22, i23] -> [i22 + i23]))) (\\[i24, i25] -> [i24 + i25])))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[6,2,4,4,8] (w26 * sreplicate @6 (str (sreplicate @4 (str (sreplicate @4 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w26 = str (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i22, i23] -> [i22 + i23]))) (\\[i24, i25] -> [i24 + i25])))) ; w28 = sreshape @[6,2,4,4,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (rfromS (ssum @4 (str (ssum @4 (str (ssum @6 (w26 * w28))))))) (rfromS (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (stranspose @[2,5,0,1,3,4] (ssum @2 (str (sreplicate @6 (str (sreplicate @4 (str (sreplicate @4 (sfromR (tproject1 u1)))))) * w28)))) (\\[i29, i30] -> [i29 + i30]))) (\\[i31, i32] -> [i31 + i32]))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [6,2,6,6] FTKScalar)) ConvSX))) (STKProduct (STKS [2,2,2,2] STKScalar) (STKS [6,2,6,6] STKScalar)) (let w28 = sreshape @[6,2,4,4,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (ssum @4 (ssum @4 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i81, i83] -> [i81 + i83]))) (\\[i24, i25] -> [i24 + i25]))))) (stranspose @[2,3,1,4,5,6,0] w28)))) (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (sdot1In (stranspose @[3,6,0,2,4,5,1] (sreplicate @6 (str (sreplicate @4 (str (sreplicate @4 (sfromR (tproject1 u1)))))))) (stranspose @[3,6,0,2,4,5,1] w28)) (\\[i29, i30] -> [i29 + i30]))) (\\[i31, i32] -> [i31 + i32]))))"
testPaddedCNNOPPLet :: Assertion
testPaddedCNNOPPLet :: Assertion
testPaddedCNNOPPLet = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPaddedLet (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,3] 0.0)) (stranspose @[0,2,3,1] (sgather (sslice (SNat @1) (SNat @3) (stranspose @[3,0,4,1,2] (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,4,0] (sfromVector (fromList [stranspose @[1,2,3,0] (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))), sconcrete (sreplicate [2,2,4,4] 0.0)])))))) (\\[i36, i37] -> [i36, i37, ifH (notB (2 <=. i37) &&* notB (2 <=. i36)) 0 1])))))) (\\[i81, i83] -> [i81 + i83]))) (\\[i41, i42] -> [i41 + i42])))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let u35 = sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0))) ; u38 = stranspose @[1,2,0] (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,3] 0.0)) (stranspose @[0,2,3,1] (sgather (sslice (SNat @1) (SNat @3) (stranspose @[3,0,4,1,2] (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,4,0] (sfromVector (fromList [stranspose @[1,2,3,0] u35, sconcrete (sreplicate [2,2,4,4] 0.0)])))))) (\\[i36, i37] -> [i36, i37, ifH (notB (2 <=. i37) &&* notB (2 <=. i36)) 0 1])))))) ; w43 = str (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] u38) (\\[i39, i40] -> [i39 + i40]))) (\\[i41, i42] -> [i41 + i42])))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w43 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX))) (STKProduct (STKS [2,2,2,2] STKScalar) (STKS [2,2,2,2] STKScalar)) (let w45 = sreshape @[2,2,2,2,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (ssum @2 (ssum @2 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @2 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,3] 0.0)) (stranspose @[0,2,3,1] (sgather (sslice (SNat @1) (SNat @3) (stranspose @[3,0,4,1,2] (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,4,0] (sfromVector (fromList [stranspose @[1,2,3,0] (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))), sconcrete (sreplicate [2,2,4,4] 0.0)])))))) (\\[i36, i37] -> [i36, i37, ifH (notB (2 <=. i37) &&* notB (2 <=. i36)) 0 1])))))) (\\[i100, i102] -> [i100 + i102]))) (\\[i41, i42] -> [i41 + i42]))))) (stranspose @[2,3,1,4,5,6,0] w45)))) (stranspose @[3,1,2,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,2,1,4,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,2,1,0] (sappend (sconcrete (sreplicate [1,2,2,4,2] 0.0)) (stranspose @[1,3,4,0,2] (sappend (sconcrete (sreplicate [1,3,2,2,2] 0.0)) (sscatter (sslice (SNat @1) (SNat @3) (stranspose @[3,0,1,2] (sslice (SNat @1) (SNat @3) (sscatter (stranspose @[2,4,1,3,0] (sscatter (sdot1In (stranspose @[3,6,0,2,4,5,1] (sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1)))))))) (stranspose @[3,6,0,2,4,5,1] w45)) (\\[i46, i47] -> [i46 + i47]))) (\\[i48, i49] -> [i48 + i49]))))) (\\[i51, i52] -> [i51, i52, ifH (notB (2 <=. i52) &&* notB (2 <=. i51)) 0 1]))))))))) !$ [0]))"
conv2dPaddedLet
:: forall target r. (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPaddedLet :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPaddedLet target (TKR 4 r)
arrK target (TKR 4 r)
arrA =
let [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Item (IShR 4)
nAh, Item (IShR 4)
nAw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrA
[Item (IShR 4)
nCoutK, Item (IShR 4)
nCinpK, Item (IShR 4)
nKh, Item (IShR 4)
nKw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrK
shAPadded :: IShR 4
shAPadded = [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh, Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw]
arrAPadded :: target (TKR2 (4 + 0) (TKScalar r))
arrAPadded = forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild @4 @0 @(TKScalar r) @target IShR 4
IShR (4 + 0)
shAPadded ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPw] ->
BoolOf target
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2))
(r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0)
(target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrA target (TKR2 (4 + 0) (TKScalar r))
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! [ Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2) ])
nCinp :: Int
nCinp = Bool -> Int -> Int
forall a. HasCallStack => Bool -> a -> a
assert (Int
Item (IShR 4)
nCinpA Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
Item (IShR 4)
nCinpK Bool -> (Int, Int) -> Bool
forall v. Show v => Bool -> v -> Bool
`blame` (Int
Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nCinpK)) Int
Item (IShR 4)
nCinpA
shB :: IShR 4
shB = [Item (IShR 4)
nImgs, Item (IShR 4)
nCoutK, Item (IShR 4)
nAh, Item (IShR 4)
nAw]
shK1 :: IShR 4
shK1 = [Int
Item (IShR 4)
1, Int
Item (IShR 4)
nCinp, Item (IShR 4)
nKh, Item (IShR 4)
nKw]
in target (TKR 4 r)
-> (target (TKR 4 r) -> target (TKR 4 r)) -> target (TKR 4 r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrAPadded ((target (TKR 4 r) -> target (TKR 4 r)) -> target (TKR 4 r))
-> (target (TKR 4 r) -> target (TKR 4 r)) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ \target (TKR 4 r)
arrAPadded2 -> IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrAPadded2 [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
arrKt :: target (TKR 4 r)
arrKt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrK [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
in target (TKR 4 r)
-> target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (n :: Nat) r (target :: Target).
(KnownNat n, GoodScalar r, BaseTensor target) =>
target (TKR n r) -> target (TKR n r) -> target (TKR 0 r)
rdot0 target (TKR 4 r)
arrAt target (TKR 4 r)
arrKt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dPaddedLet: impossible pattern needlessly required"
testPaddedCNNOPPLet2 :: Assertion
testPaddedCNNOPPLet2 :: Assertion
testPaddedCNNOPPLet2 = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPaddedLet2 (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[3,5,2,0,4,1] (sgather (stranspose @[1,2,0] (sreplicate @2 (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,3] 0.0)) (stranspose @[0,2,3,1] (sgather (sslice (SNat @1) (SNat @3) (stranspose @[3,0,4,1,2] (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,4,0] (sfromVector (fromList [stranspose @[1,2,3,0] (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))), sconcrete (sreplicate [2,2,4,4] 0.0)])))))) (\\[i53, i54] -> [i53, i54, ifH (notB (2 <=. i54) &&* notB (2 <=. i53)) 0 1])))))))) (\\[i180, i182] -> [i180 + i182]))) (\\[i62, i63] -> [i62, i62 + i63])))))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR (tproject1 u1))))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let u52 = sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0))) ; u55 = stranspose @[1,2,0] (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,3] 0.0)) (stranspose @[0,2,3,1] (sgather (sslice (SNat @1) (SNat @3) (stranspose @[3,0,4,1,2] (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,4,0] (sfromVector (fromList [stranspose @[1,2,3,0] u52, sconcrete (sreplicate [2,2,4,4] 0.0)])))))) (\\[i53, i54] -> [i53, i54, ifH (notB (2 <=. i54) &&* notB (2 <=. i53)) 0 1])))))) ; w64 = str (sreplicate @2 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[3,5,2,0,4,1] (sgather (stranspose @[1,2,0] (sgather (stranspose @[1,5,0,2,3,4] (sreplicate @2 (stranspose @[3,0,1,2] (sgather (stranspose @[2,3,0,1] (sreplicate @2 u55)) (\\[i56, i57, i58] -> [i58, i56]))))) (\\[i59] -> [i59, i59]))) (\\[i60, i61] -> [i60, i60 + i61]))) (\\[i62, i63] -> [i62, i62 + i63])))))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w64 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR (tproject1 u1))))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX))) (STKProduct (STKS [2,2,2,2] STKScalar) (STKS [2,2,2,2] STKScalar)) (let w66 = sreshape @[2,2,2,2,1,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (ssum @2 (ssum @2 (sdot1In (stranspose @[5,0,1,4,3,2] (sgather (stranspose @[2,4,0,3,1] (sgather (str (sreplicate @2 (sappend (sconcrete (sreplicate [1,2,4,2] 0.0)) (stranspose @[3,2,0,1] (sappend (sconcrete (sreplicate [1,2,2,3] 0.0)) (stranspose @[0,2,3,1] (sgather (sslice (SNat @1) (SNat @3) (stranspose @[3,0,4,1,2] (sslice (SNat @1) (SNat @3) (stranspose @[3,1,2,4,0] (sfromVector (fromList [stranspose @[1,2,3,0] (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))), sconcrete (sreplicate [2,2,4,4] 0.0)])))))) (\\[i53, i54] -> [i53, i54, ifH (notB (2 <=. i54) &&* notB (2 <=. i53)) 0 1])))))))) (\\[i253, i255] -> [i255 + i253]))) (\\[i222, i223, i229] -> [i222, i222 + i229]))) (stranspose @[4,2,3,1,5,6,7,0] w66 !$ [0])))) (stranspose @[3,1,2,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,2,1,4,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,2,1,0] (sappend (sconcrete (sreplicate [1,2,2,4,2] 0.0)) (stranspose @[1,3,4,0,2] (sappend (sconcrete (sreplicate [1,3,2,2,2] 0.0)) (sscatter (sslice (SNat @1) (SNat @3) (stranspose @[3,0,1,2] (sslice (SNat @1) (SNat @3) (ssum @2 (stranspose @[2,1,3,0] (sscatter (ssum @2 (stranspose @[2,3,4,5,0,1] (sscatter (stranspose @[2,0,1] (sscatter (stranspose @[3,5,2,0,4,1] (sscatter (sdot1In (sreplicate @2 (stranspose @[2,0,1,4,3] (sreplicate @2 (sreplicate @2 (stranspose @[3,2,1,0] (sfromR (tproject1 u1))))))) (stranspose @[4,3,7,0,2,5,6,1] w66 !$ [0])) (\\[i67, i68] -> [i67, i67 + i68]))) (\\[i69, i70] -> [i69, i69 + i70]))) (\\[i71] -> [i71, i71])))) (\\[i72, i73, i74] -> [i74, i72]))))))) (\\[i76, i77] -> [i76, i77, ifH (notB (2 <=. i77) &&* notB (2 <=. i76)) 0 1]))))))))) !$ [0]))"
conv2dPaddedLet2
:: forall target r. (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPaddedLet2 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPaddedLet2 target (TKR 4 r)
arrK target (TKR 4 r)
arrA =
let [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Item (IShR 4)
nAh, Item (IShR 4)
nAw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrA
[Item (IShR 4)
nCoutK, Item (IShR 4)
nCinpK, Item (IShR 4)
nKh, Item (IShR 4)
nKw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrK
shAPadded :: IShR 4
shAPadded = [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh, Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw]
arrAPadded :: target (TKR2 (4 + 0) (TKScalar r))
arrAPadded = forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild @4 @0 @(TKScalar r) @target IShR 4
IShR (4 + 0)
shAPadded ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPw] ->
BoolOf target
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
||* Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2))
(r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0)
(target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrA target (TKR2 (4 + 0) (TKScalar r))
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! [ Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2) ])
nCinp :: Int
nCinp = Bool -> Int -> Int
forall a. HasCallStack => Bool -> a -> a
assert (Int
Item (IShR 4)
nCinpA Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
Item (IShR 4)
nCinpK Bool -> (Int, Int) -> Bool
forall v. Show v => Bool -> v -> Bool
`blame` (Int
Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nCinpK)) Int
Item (IShR 4)
nCinpA
shB :: IShR 4
shB = [Item (IShR 4)
nImgs, Item (IShR 4)
nCoutK, Item (IShR 4)
nAh, Item (IShR 4)
nAw]
shK1 :: IShR 4
shK1 = [Int
Item (IShR 4)
1, Int
Item (IShR 4)
nCinp, Item (IShR 4)
nKh, Item (IShR 4)
nKw]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = target (TKR 4 r)
-> (target (TKR 4 r) -> target (TKR 4 r)) -> target (TKR 4 r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrAPadded ((target (TKR 4 r) -> target (TKR 4 r)) -> target (TKR 4 r))
-> (target (TKR 4 r) -> target (TKR 4 r)) -> target (TKR 4 r)
forall a b. (a -> b) -> a -> b
$ \target (TKR 4 r)
arrAPadded2 ->
IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrAPadded2 [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
arrKt :: target (TKR 4 r)
arrKt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrK [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
in target (TKR 4 r)
-> target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (n :: Nat) r (target :: Target).
(KnownNat n, GoodScalar r, BaseTensor target) =>
target (TKR n r) -> target (TKR n r) -> target (TKR 0 r)
rdot0 target (TKR 4 r)
arrAt target (TKR 4 r)
arrKt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dPaddedLet2: impossible pattern needlessly required"
_testPaddedCNNOPP2 :: Assertion
_testPaddedCNNOPP2 :: Assertion
_testPaddedCNNOPP2 = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded2 (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (str (sreplicate @2 (stranspose @[5,0,1,4,2,3] (sgather (sappend (sconcrete (sreplicate [1,4,2,2] 0.0)) (sappend (stranspose @[3,0,2,1] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,4,2,2] 0.0)))) (\\[i24, i25, i27, i28] -> [i25 + i28, i24 + i27])))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w29 = str (sreplicate @2 (sgather (sappend (sconcrete (sreplicate [1,2,2,4] 0.0)) (sappend (stranspose @[3,1,2,0] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,2,2,4] 0.0)))) (\\[i23, i24, i25, i26, i27, i28] -> [i25 + i28, i23, i26, i24 + i27]))) in rfromS (ssum @8 (stranspose @[4,0,1,2,3] (sreshape @[2,2,2,2,8] (w29 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [2,2,2,2] FTKScalar)) ConvSX))) (STKProduct (STKS [2,2,2,2] STKScalar) (STKS [2,2,2,2] STKScalar)) (let w31 = sreshape @[2,2,2,2,2,2,2] (stranspose @[1,2,3,4,0] (sreplicate @8 (sfromR dret))) in tpair (ssum @2 (ssum @2 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @2 (stranspose @[5,0,1,4,2,3] (sgather (sappend (sconcrete (sreplicate [1,4,2,2] 0.0)) (sappend (stranspose @[3,0,2,1] (sappend (sconcrete (sreplicate [1,2,2,2] 0.0)) (sappend (stranspose @[2,0,1] (sfromR (tproject2 u1))) (sconcrete (sreplicate [1,2,2,2] 0.0))))) (sconcrete (sreplicate [1,4,2,2] 0.0)))) (\\[i24, i25, i27, i28] -> [i25 + i28, i24 + i27]))))) (stranspose @[2,3,1,4,5,6,0] w31)))) (stranspose @[1,2,0] (sslice (SNat @1) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @1) (SNat @2) (sscatter (sdot1In (sreplicate @2 (sreplicate @2 (sreplicate @2 (stranspose @[1,2,3,0] (sfromR (tproject1 u1)))))) (stranspose @[0,2,3,4,5,6,1] w31)) (\\[i32, i33, i34, i35, i36, i37] -> [i34 + i37, i32, i35, i33 + i36])))))))"
conv2dPadded2
:: forall target r. (ADReady target, GoodScalar r)
=> target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded2 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dPadded2 target (TKR 4 r)
arrK target (TKR 4 r)
arrA =
let [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Item (IShR 4)
nAh, Item (IShR 4)
nAw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrA
[Item (IShR 4)
nCoutK, Item (IShR 4)
nCinpK, Item (IShR 4)
nKh, Item (IShR 4)
nKw] = target (TKR 4 r) -> IShR 4
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR 4 r)
arrK
shAPadded :: IShR 4
shAPadded = [Item (IShR 4)
nImgs, Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nAh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKh, Int
Item (IShR 4)
nAw Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
Item (IShR 4)
nKw]
arrAPadded :: target (TKR2 (4 + 0) (TKScalar r))
arrAPadded = forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild @4 @0 @(TKScalar r) @target IShR 4
IShR (4 + 0)
shAPadded ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iPw] ->
target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrA target (TKR2 (4 + 0) (TKScalar r))
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! [ Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCinp
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPh PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKh Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2)
, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
iPw PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- Int -> PrimalOf target (TKScalar Int64)
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
Item (IShR 4)
nKw Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2) ]
nCinp :: Int
nCinp = Bool -> Int -> Int
forall a. HasCallStack => Bool -> a -> a
assert (Int
Item (IShR 4)
nCinpA Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
Item (IShR 4)
nCinpK Bool -> (Int, Int) -> Bool
forall v. Show v => Bool -> v -> Bool
`blame` (Int
Item (IShR 4)
nCinpA, Int
Item (IShR 4)
nCinpK)) Int
Item (IShR 4)
nCinpA
shB :: IShR 4
shB = [Item (IShR 4)
nImgs, Item (IShR 4)
nCoutK, Item (IShR 4)
nAh, Item (IShR 4)
nAw]
shK1 :: IShR 4
shK1 = [Int
Item (IShR 4)
1, Int
Item (IShR 4)
nCinp, Item (IShR 4)
nKh, Item (IShR 4)
nKw]
in IShR (4 + 0)
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall (m :: Nat) (n :: Nat) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild IShR 4
IShR (4 + 0)
shB ((IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r)))
-> (IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (4 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
[Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw] ->
let arrAt :: target (TKR 4 r)
arrAt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
target (TKR2 (4 + 0) (TKScalar r))
arrAPadded [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iImg, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBh, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iBw]
arrKt :: target (TKR 4 r)
arrKt = IShR 4
-> target (TKR 4 r)
-> IxR 4 (PrimalOf target (TKScalar Int64))
-> target (TKR 4 r)
forall (target :: Target) r (n :: Nat).
(ADReady target, GoodScalar r, KnownNat n) =>
IShR n -> target (TKR n r) -> IxROf target n -> target (TKR n r)
slicezL IShR 4
shK1 target (TKR 4 r)
arrK [Item (IxR 4 (PrimalOf target (TKScalar Int64)))
iCout, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0, Item (IxR 4 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
0]
in target (TKR 4 r)
-> target (TKR 4 r) -> target (TKR2 0 (TKScalar r))
forall (n :: Nat) r (target :: Target).
(KnownNat n, GoodScalar r, BaseTensor target) =>
target (TKR n r) -> target (TKR n r) -> target (TKR 0 r)
rdot0 target (TKR 4 r)
arrAt target (TKR 4 r)
arrKt
IxR 4 (PrimalOf target (TKScalar Int64))
_ -> String -> target (TKR2 0 (TKScalar r))
forall a. HasCallStack => String -> a
error String
"conv2dPadded2: impossible pattern needlessly required"
testCNNOPP0cW :: Assertion
testCNNOPP0cW :: Assertion
testCNNOPP0cW = do
Assertion
resetVarCounter
let ftk :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftk = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
varName :: AstVarName s (TKR 4 Double)
varName = FullShapeTK (TKR 4 Double)
-> Maybe (Int64, Int64) -> AstVarId -> AstVarName s (TKR 4 Double)
forall (s :: AstSpanType) (y :: TK).
FullShapeTK y -> Maybe (Int64, Int64) -> AstVarId -> AstVarName s y
mkAstVarName FullShapeTK (TKR 4 Double)
ftk Maybe (Int64, Int64)
forall a. Maybe a
Nothing (AstVarId -> AstVarName s (TKR 4 Double))
-> (Int -> AstVarId) -> Int -> AstVarName s (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> AstVarId
intToAstVarId (Int -> AstVarName s (TKR 4 Double))
-> Int -> AstVarName s (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ Int
100000000
var :: AstTensor a b (TKR 4 Double)
var = AstVarName b (TKR 4 Double) -> AstTensor a b (TKR 4 Double)
forall (b :: AstSpanType) (c :: TK) (a :: AstMethodOfSharing).
AstVarName b c -> AstTensor a b c
AstVar AstVarName b (TKR 4 Double)
forall {s :: AstSpanType}. AstVarName s (TKR 4 Double)
varName
ftk2 :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftk2 = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
5 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
f :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b c. (a -> b -> c) -> b -> a -> c
flip AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall {a :: AstMethodOfSharing} {b :: AstSpanType}.
AstTensor a b (TKR 4 Double)
var
env :: AstEnv (ADVal (AstRaw s))
env =
AstVarName (ZonkAny @AstSpanType 1) (TKR 4 Double)
-> ADVal (AstRaw s) (TKR 4 Double)
-> AstEnv (ADVal (AstRaw s))
-> AstEnv (ADVal (AstRaw s))
forall (target :: Target) (s :: AstSpanType) (y :: TK).
AstVarName s y -> target y -> AstEnv target -> AstEnv target
extendEnv AstVarName (ZonkAny @AstSpanType 1) (TKR 4 Double)
forall {s :: AstSpanType}. AstVarName s (TKR 4 Double)
varName (AstRaw s (TKR 4 Double)
-> Delta (AstRaw s) (TKR 4 Double)
-> ADVal (AstRaw s) (TKR 4 Double)
forall (f :: Target) (z :: TK). f z -> Delta f z -> ADVal f z
dDnotShared (AstTensor AstMethodShare s (TKR 4 Double)
-> AstRaw s (TKR 4 Double)
forall (s :: AstSpanType) (y :: TK).
AstTensor AstMethodShare s y -> AstRaw s y
AstRaw AstTensor AstMethodShare s (TKR 4 Double)
forall {a :: AstMethodOfSharing} {b :: AstSpanType}.
AstTensor a b (TKR 4 Double)
var) (FullShapeTK (TKR 4 Double) -> Delta (AstRaw s) (TKR 4 Double)
forall (b :: TK) (a :: Target). FullShapeTK b -> Delta a b
DeltaZero FullShapeTK (TKR 4 Double)
ftk)) AstEnv (ADVal (AstRaw s))
forall (target :: Target). AstEnv target
emptyEnv
(AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan (TKR 4 Double)
-> AstVarName FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKR 4 Double)
-> (AstArtifactRev (TKR 4 Double) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan (TKR 4 Double)
-> AstVarName FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall {s :: AstSpanType}. AstEnv (ADVal (AstRaw s))
env) FullShapeTK (TKR 4 Double)
ftk2
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\u1 -> rfromS (ssum @125 (stranspose @[4,0,1,2,3] (sreshape @[7,5,7,7,125] (str (sreplicate @5 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u0)) (\\[i81, i83] -> [i81 + i83]))) (\\[i41, i42] -> [i41 + i42])))) * sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR u1)))))))))"
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\u1 -> let w43 = str (sreplicate @5 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u0)) (\\[i39, i40] -> [i39 + i40]))) (\\[i41, i42] -> [i41 + i42])))) in rfromS (ssum @125 (stranspose @[4,0,1,2,3] (sreshape @[7,5,7,7,125] (w43 * sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR u1)))))))))"
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\dret u1 -> let w43 = str (sreplicate @5 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u0)) (\\[i39, i40] -> [i39 + i40]))) (\\[i41, i42] -> [i41 + i42])))) ; w45 = sreshape @[7,5,7,7,5,5,5] (stranspose @[1,2,3,4,0] (sreplicate @125 (sfromR dret))) in rfromS (ssum @7 (str (ssum @7 (str (ssum @7 (w43 * w45))))))"
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\dret u1 -> rfromS (ssum @7 (ssum @7 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @5 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u0)) (\\[i98, i100] -> [i98 + i100]))) (\\[i41, i42] -> [i41 + i42]))))) (stranspose @[2,3,1,4,5,6,0] (sreshape @[7,5,7,7,5,5,5] (stranspose @[1,2,3,4,0] (sreplicate @125 (sfromR dret))))))))"
testCNNOPP0bW :: Assertion
testCNNOPP0bW :: Assertion
testCNNOPP0bW = do
Assertion
resetVarCounter
let ftk :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftk = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
5 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
varName :: AstVarName s (TKR 4 Double)
varName = FullShapeTK (TKR 4 Double)
-> Maybe (Int64, Int64) -> AstVarId -> AstVarName s (TKR 4 Double)
forall (s :: AstSpanType) (y :: TK).
FullShapeTK y -> Maybe (Int64, Int64) -> AstVarId -> AstVarName s y
mkAstVarName FullShapeTK (TKR 4 Double)
ftk Maybe (Int64, Int64)
forall a. Maybe a
Nothing (AstVarId -> AstVarName s (TKR 4 Double))
-> (Int -> AstVarId) -> Int -> AstVarName s (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> AstVarId
intToAstVarId (Int -> AstVarName s (TKR 4 Double))
-> Int -> AstVarName s (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ Int
100000000
var :: AstTensor a b (TKR 4 Double)
var = AstVarName b (TKR 4 Double) -> AstTensor a b (TKR 4 Double)
forall (b :: AstSpanType) (c :: TK) (a :: AstMethodOfSharing).
AstVarName b c -> AstTensor a b c
AstVar AstVarName b (TKR 4 Double)
forall {s :: AstSpanType}. AstVarName s (TKR 4 Double)
varName
ftk2 :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftk2 = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
f :: AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall {a :: AstMethodOfSharing} {b :: AstSpanType}.
AstTensor a b (TKR 4 Double)
var
env :: AstEnv (ADVal (AstRaw s))
env =
AstVarName (ZonkAny @AstSpanType 0) (TKR 4 Double)
-> ADVal (AstRaw s) (TKR 4 Double)
-> AstEnv (ADVal (AstRaw s))
-> AstEnv (ADVal (AstRaw s))
forall (target :: Target) (s :: AstSpanType) (y :: TK).
AstVarName s y -> target y -> AstEnv target -> AstEnv target
extendEnv AstVarName (ZonkAny @AstSpanType 0) (TKR 4 Double)
forall {s :: AstSpanType}. AstVarName s (TKR 4 Double)
varName (AstRaw s (TKR 4 Double)
-> Delta (AstRaw s) (TKR 4 Double)
-> ADVal (AstRaw s) (TKR 4 Double)
forall (f :: Target) (z :: TK). f z -> Delta f z -> ADVal f z
dDnotShared (AstTensor AstMethodShare s (TKR 4 Double)
-> AstRaw s (TKR 4 Double)
forall (s :: AstSpanType) (y :: TK).
AstTensor AstMethodShare s y -> AstRaw s y
AstRaw AstTensor AstMethodShare s (TKR 4 Double)
forall {a :: AstMethodOfSharing} {b :: AstSpanType}.
AstTensor a b (TKR 4 Double)
var) (FullShapeTK (TKR 4 Double) -> Delta (AstRaw s) (TKR 4 Double)
forall (b :: TK) (a :: Target). FullShapeTK b -> Delta a b
DeltaZero FullShapeTK (TKR 4 Double)
ftk)) AstEnv (ADVal (AstRaw s))
forall (target :: Target). AstEnv target
emptyEnv
(AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan (TKR 4 Double)
-> AstVarName FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKR 4 Double)
-> (AstArtifactRev (TKR 4 Double) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan (TKR 4 Double)
-> AstVarName FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall {s :: AstSpanType}. AstEnv (ADVal (AstRaw s))
env) FullShapeTK (TKR 4 Double)
ftk2
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\u1 -> rfromS (ssum @125 (stranspose @[4,0,1,2,3] (sreshape @[7,5,7,7,125] (str (sreplicate @5 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i64, i66] -> [i64 + i66]))) (\\[i41, i42] -> [i41 + i42])))) * sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR u0)))))))))"
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\u1 -> let w43 = str (sreplicate @5 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i39, i40] -> [i39 + i40]))) (\\[i41, i42] -> [i41 + i42])))) in rfromS (ssum @125 (stranspose @[4,0,1,2,3] (sreshape @[7,5,7,7,125] (w43 * sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR u0)))))))))"
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\dret u1 -> let w45 = sreshape @[7,5,7,7,5,5,5] (stranspose @[1,2,3,4,0] (sreplicate @125 (sfromR dret))) in rfromS (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (stranspose @[2,5,0,1,3,4] (ssum @5 (str (sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR u0))))) * w45)))) (\\[i46, i47] -> [i46 + i47]))) (\\[i48, i49] -> [i48 + i49])))"
String
"\\u0 -> " String -> String -> String
forall a. [a] -> [a] -> [a]
++ AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u0 -> \\dret u1 -> rfromS (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (sdot1In (stranspose @[3,6,0,2,4,5,1] (sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR u0))))))) (stranspose @[3,6,0,2,4,5,1] (sreshape @[7,5,7,7,5,5,5] (stranspose @[1,2,3,4,0] (sreplicate @125 (sfromR dret)))))) (\\[i46, i47] -> [i46 + i47]))) (\\[i48, i49] -> [i48 + i49])))"
testCNNOPP1bW :: Assertion
testCNNOPP1bW :: Assertion
testCNNOPP1bW = do
Assertion
resetVarCounter
let f :: AstTensor AstMethodLet FullSpan
(TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan
(TKR 4 Double)
f :: AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v = AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 4 r) -> target (TKR 4 r) -> target (TKR 4 r)
conv2dUnpadded (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v) (AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan (TKProduct x z)
-> AstTensor AstMethodLet FullSpan z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
v)
ftk :: FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
ftk = FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev, Delta (AstRaw PrimalSpan) (TKR 4 Double)
_) =
IncomingCotangentHandling
-> (AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double))
-> FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
-> (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double),
Delta (AstRaw PrimalSpan) (TKR 4 Double))
forall (x :: TK) (z :: TK).
IncomingCotangentHandling
-> (AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z)
-> FullShapeTK x
-> (AstArtifactRev x z, Delta (AstRaw PrimalSpan) z)
revArtifactFromForwardPass
IncomingCotangentHandling
UseIncomingCotangent ((AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor
AstMethodShare PrimalSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstVarName FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> ADVal (AstRaw PrimalSpan) (TKR 4 Double)
forall (x :: TK) (z :: TK).
(AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z)
-> AstEnv (ADVal (AstRaw PrimalSpan))
-> AstTensor AstMethodShare PrimalSpan x
-> AstVarName FullSpan x
-> AstTensor AstMethodLet FullSpan x
-> ADVal (AstRaw PrimalSpan) z
forwardPassByInterpretation AstTensor
AstMethodLet FullSpan (TKProduct (TKR 4 Double) (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
f AstEnv (ADVal (AstRaw PrimalSpan))
forall (target :: Target). AstEnv target
emptyEnv) FullShapeTK (TKProduct (TKR 4 Double) (TKR 4 Double))
ftk
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (ssum @343 (stranspose @[4,0,1,2,3] (sreshape @[7,7,7,7,343] (str (sreplicate @7 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i81, i83] -> [i81 + i83]))) (\\[i41, i42] -> [i41 + i42])))) * sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w43 = str (sreplicate @7 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i39, i40] -> [i39 + i40]))) (\\[i41, i42] -> [i41 + i42])))) in rfromS (ssum @343 (stranspose @[4,0,1,2,3] (sreshape @[7,7,7,7,343] (w43 * sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR (tproject1 u1))))))))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w43 = str (sreplicate @7 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i39, i40] -> [i39 + i40]))) (\\[i41, i42] -> [i41 + i42])))) ; w45 = sreshape @[7,7,7,7,7,7,7] (stranspose @[1,2,3,4,0] (sreplicate @343 (sfromR dret))) in tpair (rfromS (ssum @7 (str (ssum @7 (str (ssum @7 (w43 * w45))))))) (rfromS (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (stranspose @[2,5,0,1,3,4] (ssum @7 (str (sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR (tproject1 u1)))))) * w45)))) (\\[i46, i47] -> [i46 + i47]))) (\\[i48, i49] -> [i48 + i49]))))"
AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
-> AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev
(TKProduct (TKR 4 Double) (TKR 4 Double)) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [7,7,7,7] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [7,7,7,7] FTKScalar)) ConvSX))) (STKProduct (STKS [7,7,7,7] STKScalar) (STKS [7,7,7,7] STKScalar)) (let w45 = sreshape @[7,7,7,7,7,7,7] (stranspose @[1,2,3,4,0] (sreplicate @343 (sfromR dret))) in tpair (ssum @7 (ssum @7 (sdot1In (stranspose @[2,3,0,4,5,6,1] (sreplicate @7 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (stranspose @[2,0,1] (sfromR (tproject2 u1))) (\\[i98, i100] -> [i98 + i100]))) (\\[i41, i42] -> [i41 + i42]))))) (stranspose @[2,3,1,4,5,6,0] w45)))) (stranspose @[1,2,0] (sscatter (stranspose @[2,4,1,3,0] (sscatter (sdot1In (stranspose @[3,6,0,2,4,5,1] (sreplicate @7 (str (sreplicate @7 (str (sreplicate @7 (sfromR (tproject1 u1)))))))) (stranspose @[3,6,0,2,4,5,1] w45)) (\\[i46, i47] -> [i46 + i47]))) (\\[i48, i49] -> [i48 + i49]))))"
testCNNOPP4bW :: Assertion
testCNNOPP4bW :: Assertion
testCNNOPP4bW = do
Assertion
resetVarCounter
let !artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
Int -> Int -> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded Int
4 Int
2) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
7, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
!artSimp :: AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp = AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
let ftk1 :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftk1 = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
ftkDt :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftkDt = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
env :: AstEnv Concrete
env = AstVarName PrimalSpan (TKR 4 Double)
-> Concrete (TKR 4 Double) -> AstEnv Concrete -> AstEnv Concrete
forall (target :: Target) (s :: AstSpanType) (y :: TK).
AstVarName s y -> target y -> AstEnv target -> AstEnv target
extendEnv (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstVarName PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstVarName PrimalSpan (ADTensorKind z)
artVarDtRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
(FullShapeTK (TKR 4 Double)
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK). FullShapeTK y -> Concrete y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
FullShapeTK y -> Concrete y -> target y
tconcrete FullShapeTK (TKR 4 Double)
ftkDt ((forall r. GoodScalar r => r)
-> FullShapeTK (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK).
(forall r. GoodScalar r => r) -> FullShapeTK y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
(forall r. GoodScalar r => r) -> FullShapeTK y -> target y
treplTarget r
forall r. GoodScalar r => r
7 FullShapeTK (TKR 4 Double)
ftkDt))
(AstEnv Concrete -> AstEnv Concrete)
-> AstEnv Concrete -> AstEnv Concrete
forall a b. (a -> b) -> a -> b
$ AstVarName PrimalSpan (TKR 4 Double)
-> Concrete (TKR 4 Double) -> AstEnv Concrete -> AstEnv Concrete
forall (target :: Target) (s :: AstSpanType) (y :: TK).
AstVarName s y -> target y -> AstEnv target -> AstEnv target
extendEnv (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstVarName PrimalSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstVarName PrimalSpan x
artVarDomainRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
(FullShapeTK (TKR 4 Double)
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK). FullShapeTK y -> Concrete y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
FullShapeTK y -> Concrete y -> target y
tconcrete FullShapeTK (TKR 4 Double)
ftk1 ((forall r. GoodScalar r => r)
-> FullShapeTK (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK).
(forall r. GoodScalar r => r) -> FullShapeTK y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
(forall r. GoodScalar r => r) -> FullShapeTK y -> target y
treplTarget r
forall r. GoodScalar r => r
42 FullShapeTK (TKR 4 Double)
ftk1)) AstEnv Concrete
forall (target :: Target). AstEnv target
emptyEnv
forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstTensor AstMethodLet PrimalSpan z
artPrimalRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstTensor AstMethodLet PrimalSpan z
artPrimalRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (let w47 = sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i137, i138] -> [2 * i137 + i138]))) (\\[i45, i46] -> [2 * i45 + i46]))) in sgather w47 (\\[i48, i49, i50, i51] -> [i48, i49, i50, i51, kfromS (smaxIndex (w47 !$ [i48, i49, i50, i51]))]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w47 = sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i43, i44] -> [2 * i43 + i44]))) (\\[i45, i46] -> [2 * i45 + i46]))) in rfromS (sgather w47 (\\[i48, i49, i50, i51] -> [i48, i49, i50, i51, kfromS (smaxIndex (w47 !$ [i48, i49, i50, i51]))]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w47 = sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i43, i44] -> [2 * i43 + i44]))) (\\[i45, i46] -> [2 * i45 + i46]))) in rfromS (stranspose @[1,2,0] (sscatter (stranspose @[3,4,1,2,0] (sscatter (stranspose @[3,5,0,1,2,4] (sreshape @[7,7,3,3,4,4] (sscatter (sfromR dret) (\\[i53, i54, i55, i56] -> [i53, i54, i55, i56, kfromS (smaxIndex (w47 !$ [i53, i54, i55, i56]))])))) (\\[i57, i58] -> [2 * i57 + i58]))) (\\[i59, i60] -> [2 * i59 + i60])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (stranspose @[1,2,0] (sscatter (stranspose @[3,4,1,2,0] (sscatter (stranspose @[3,5,0,1,2,4] (sreshape @[7,7,3,3,4,4] (sscatter (sfromR dret) (\\[i53, i54, i55, i56] -> [i53, i54, i55, i56, kfromS (smaxIndex (sgather (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i159, i160] -> [2 * i159 + i160]))) (\\[i45, i46] -> [2 * i45 + i46])) (\\[i151] -> [remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i151) 16) 3, remH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i151) 4, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i151) 1008) 7, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i151) 144) 7, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i151) 48) 3, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i151) 4) 4])))])))) (\\[i57, i58] -> [2 * i57 + i58]))) (\\[i59, i60] -> [2 * i59 + i60])))"
AstTensor AstMethodLet PrimalSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContractNoExpand (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (stranspose @[1,2,0] (sscatter (stranspose @[3,4,1,2,0] (sscatter (stranspose @[3,5,0,1,2,4] (sreshape @[7,7,3,3,4,4] (sscatter (sfromR u52) (\\[i53, i54, i55, i56] -> [i53, i54, i55, i56, kfromS (smaxIndex (sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i43, i44] -> [2 * i43 + i44]))) (\\[i45, i46] -> [2 * i45 + i46]))) !$ [i53, i54, i55, i56]))])))) (\\[i57, i58] -> [2 * i57 + i58]))) (\\[i59, i60] -> [2 * i59 + i60])))"
testCNNOPP4bD :: Assertion
testCNNOPP4bD :: Assertion
testCNNOPP4bD = do
Assertion
resetVarCounter
Bool -> Assertion
setTotalSharing Bool
True
let !artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
Int -> Int -> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded Int
4 Int
2) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
7, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
!artSimp :: AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp = AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
Bool -> Assertion
setTotalSharing Bool
False
let ftk1 :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftk1 = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
ftkDt :: FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
ftkDt = IShR ((((0 + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((((0 + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
7 Int
-> ShR (((0 + 1) + 1) + 1) Int -> IShR ((((0 + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
7 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> ShR 0 Int -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double)
env :: AstEnv Concrete
env = AstVarName PrimalSpan (TKR 4 Double)
-> Concrete (TKR 4 Double) -> AstEnv Concrete -> AstEnv Concrete
forall (target :: Target) (s :: AstSpanType) (y :: TK).
AstVarName s y -> target y -> AstEnv target -> AstEnv target
extendEnv (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstVarName PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstVarName PrimalSpan (ADTensorKind z)
artVarDtRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
(FullShapeTK (TKR 4 Double)
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK). FullShapeTK y -> Concrete y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
FullShapeTK y -> Concrete y -> target y
tconcrete FullShapeTK (TKR 4 Double)
ftkDt ((forall r. GoodScalar r => r)
-> FullShapeTK (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK).
(forall r. GoodScalar r => r) -> FullShapeTK y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
(forall r. GoodScalar r => r) -> FullShapeTK y -> target y
treplTarget r
forall r. GoodScalar r => r
7 FullShapeTK (TKR 4 Double)
ftkDt))
(AstEnv Concrete -> AstEnv Concrete)
-> AstEnv Concrete -> AstEnv Concrete
forall a b. (a -> b) -> a -> b
$ AstVarName PrimalSpan (TKR 4 Double)
-> Concrete (TKR 4 Double) -> AstEnv Concrete -> AstEnv Concrete
forall (target :: Target) (s :: AstSpanType) (y :: TK).
AstVarName s y -> target y -> AstEnv target -> AstEnv target
extendEnv (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstVarName PrimalSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstVarName PrimalSpan x
artVarDomainRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
(FullShapeTK (TKR 4 Double)
-> Concrete (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK). FullShapeTK y -> Concrete y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
FullShapeTK y -> Concrete y -> target y
tconcrete FullShapeTK (TKR 4 Double)
ftk1 ((forall r. GoodScalar r => r)
-> FullShapeTK (TKR 4 Double) -> Concrete (TKR 4 Double)
forall (y :: TK).
(forall r. GoodScalar r => r) -> FullShapeTK y -> Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
(forall r. GoodScalar r => r) -> FullShapeTK y -> target y
treplTarget r
forall r. GoodScalar r => r
42 FullShapeTK (TKR 4 Double)
ftk1)) AstEnv Concrete
forall (target :: Target). AstEnv target
emptyEnv
forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstTensor AstMethodLet PrimalSpan z
artPrimalRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstTensor AstMethodLet PrimalSpan z
artPrimalRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
Concrete (TKR 4 Double) -> Concrete (TKR 4 Double) -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= forall (target :: Target) (y :: TK).
ADReady target =>
AstEnv target
-> AstTensor AstMethodLet PrimalSpan y -> PrimalOf target y
interpretAstPrimal @Concrete AstEnv Concrete
env (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp)
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (let w47 = sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i98, i99] -> [2 * i98 + i99]))) (\\[i45, i46] -> [2 * i45 + i46]))) in sgather w47 (\\[i48, i49, i50, i51] -> [i48, i49, i50, i51, kfromS (smaxIndex (w47 !$ [i48, i49, i50, i51]))]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w47 = sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i43, i44] -> [2 * i43 + i44]))) (\\[i45, i46] -> [2 * i45 + i46]))) in rfromS (sgather w47 (\\[i48, i49, i50, i51] -> [i48, i49, i50, i51, kfromS (smaxIndex (w47 !$ [i48, i49, i50, i51]))]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w47 = sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i43, i44] -> [2 * i43 + i44]))) (\\[i45, i46] -> [2 * i45 + i46]))) in rfromS (stranspose @[1,2,0] (sscatter (stranspose @[3,4,1,2,0] (sscatter (stranspose @[3,5,0,1,2,4] (sreshape @[7,7,3,3,4,4] (sscatter (sfromR dret) (\\[i53, i54, i55, i56] -> [i53, i54, i55, i56, kfromS (smaxIndex (w47 !$ [i53, i54, i55, i56]))])))) (\\[i57, i58] -> [2 * i57 + i58]))) (\\[i59, i60] -> [2 * i59 + i60])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artSimp
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (stranspose @[1,2,0] (sscatter (stranspose @[3,4,1,2,0] (sscatter (stranspose @[3,5,0,1,2,4] (sreshape @[7,7,3,3,4,4] (sscatter (sfromR dret) (\\[i53, i54, i55, i56] -> [i53, i54, i55, i56, kfromS (smaxIndex (sgather (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i81, i82] -> [2 * i81 + i82]))) (\\[i45, i46] -> [2 * i45 + i46])) (\\[i73] -> [remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i73) 16) 3, remH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i73) 4, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i73) 1008) 7, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i73) 144) 7, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i73) 48) 3, remH (quotH ((((1008 * i53 + 144 * i54) + 48 * i55) + 16 * i56) + i73) 4) 4])))])))) (\\[i57, i58] -> [2 * i57 + i58]))) (\\[i59, i60] -> [2 * i59 + i60])))"
AstTensor AstMethodLet PrimalSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContractNoExpand (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (stranspose @[1,2,0] (sscatter (stranspose @[3,4,1,2,0] (sscatter (stranspose @[3,5,0,1,2,4] (sreshape @[7,7,3,3,4,4] (sscatter (sfromR u52) (\\[i53, i54, i55, i56] -> [i53, i54, i55, i56, kfromS (smaxIndex (sreshape @[7,7,3,3,16] (stranspose @[2,3,4,0,5,1] (sgather (stranspose @[4,2,3,0,1] (sgather (stranspose @[2,0,1] (sfromR u1)) (\\[i43, i44] -> [2 * i43 + i44]))) (\\[i45, i46] -> [2 * i45 + i46]))) !$ [i53, i54, i55, i56]))])))) (\\[i57, i58] -> [2 * i57 + i58]))) (\\[i59, i60] -> [2 * i59 + i60])))"
testCNNOPP5aW :: Assertion
testCNNOPP5aW :: Assertion
testCNNOPP5aW = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
Int -> Int -> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded Int
4 Int
2 (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
7, Int
Item (IShR 4)
2, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (let t49 = sreshape @[2,7,16] (ssum @98 (stranspose @[4,1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i109, i111] -> [i109 + i111]))) (\\[i46, i47] -> [i46 + i47])))))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) (sconcrete (sreplicate [2,2,7,2,98] 0.0)))) (sconcrete (sreplicate [2,2,7,4,98] 0.0))))) in stranspose @[1,2,0] (sreplicate @1 (stranspose @[1,2,0] (sreplicate @1 (sgather t49 (\\[i50, i51] -> [i50, i51, kfromS (smaxIndex (t49 !$ [i50, i51]))]))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w48 = str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i44, i45] -> [i44 + i45]))) (\\[i46, i47] -> [i46 + i47])))))) ; t49 = sreshape @[2,7,16] (ssum @98 (stranspose @[4,1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] (sreshape @[2,7,2,2,98] (w48 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) (sconcrete (sreplicate [2,2,7,2,98] 0.0)))) (sconcrete (sreplicate [2,2,7,4,98] 0.0))))) in rfromS (stranspose @[1,2,0] (sreplicate @1 (stranspose @[1,2,0] (sreplicate @1 (sgather t49 (\\[i50, i51] -> [i50, i51, kfromS (smaxIndex (t49 !$ [i50, i51]))]))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w48 = str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i44, i45] -> [i44 + i45]))) (\\[i46, i47] -> [i46 + i47])))))) ; t49 = sreshape @[2,7,16] (ssum @98 (stranspose @[4,1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] (sreshape @[2,7,2,2,98] (w48 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) (sconcrete (sreplicate [2,2,7,2,98] 0.0)))) (sconcrete (sreplicate [2,2,7,4,98] 0.0))))) ; w55 = stranspose @[4,1,2,3,0] (sreplicate @98 (sreshape @[2,7,4,4] (sscatter (ssum @1 (stranspose @[2,0,1] (ssum @1 (stranspose @[2,0,1] (sfromR dret))))) (\\[i53, i54] -> [i53, i54, kfromS (smaxIndex (t49 !$ [i53, i54]))])))) in rfromS (ssum @1 (str (ssum @2 (str (ssum @2 (str (ssum @2 (w48 * sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) w55))))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (let w48 = sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i155, i157] -> [i155 + i157]))) (\\[i46, i47] -> [i46 + i47]) in ssum @2 (ssum @2 (sdot1In (stranspose @[1,6,0,4,5,3,2] (sreplicate @7 (stranspose @[3,2,1,4,5,0] w48))) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[4,1,2,3,0] (sreplicate @98 (sreshape @[2,7,4,4] (sscatter (stranspose @[2,3,0,1] (sfromR dret) !$ [0, 0]) (\\[i53, i54] -> [i53, i54, kfromS (smaxIndex (ssum @98 (str (sgather (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w48)))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) (sconcrete (sreplicate [2,2,7,2,98] 0.0)))) (sconcrete (sreplicate [2,2,7,4,98] 0.0))) (\\[i129] -> [remH ((112 * i53 + 16 * i54) + i129) 4, remH (quotH ((112 * i53 + 16 * i54) + i129) 112) 2, remH (quotH ((112 * i53 + 16 * i54) + i129) 16) 7, remH (quotH ((112 * i53 + 16 * i54) + i129) 4) 4])))))])))))))))) !$ [0]))))"
AstTensor AstMethodLet PrimalSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContractNoExpand (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let w48 = sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i44, i45] -> [i44 + i45]))) (\\[i46, i47] -> [i46 + i47]) in ssum @2 (ssum @2 (sdot1In (stranspose @[4,2,3,0,5,6,7,1] (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w48)))) !$ [0]) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[4,1,2,3,0] (sreplicate @98 (sreshape @[2,7,4,4] (sscatter (stranspose @[2,3,0,1] (sfromR u52) !$ [0, 0]) (\\[i53, i54] -> [i53, i54, kfromS (smaxIndex (sreshape @[2,7,16] (ssum @98 (stranspose @[4,1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w48)))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) (sconcrete (sreplicate [2,2,7,2,98] 0.0)))) (sconcrete (sreplicate [2,2,7,4,98] 0.0))))) !$ [i53, i54]))])))))))))) !$ [0]))))"
testCNNOPP5bW :: Assertion
testCNNOPP5bW :: Assertion
testCNNOPP5bW = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
Int -> Int -> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded Int
4 Int
2 (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
relu) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
7, Int
Item (IShR 4)
2, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (let w75 = sreshape @[7,2,3,3,16] (stranspose @[4,5,0,1,2,3] (sgather (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i61, i62, i63, i64] -> [ifH (sscalar -0.0 <=. negate (sfromR u1 !$ [i63, i64, i61, i62])) 0 1])) (\\[i65, i66, i67, i68] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i65, i67]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i66, i68])])) * stranspose @[4,5,0,1,2,3] (sgather (stranspose @[2,3,0,1] (sfromR u1)) (\\[i69, i70, i71, i72] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i69, i71]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i70, i72])]))) in sgather w75 (\\[i76, i77, i78, i79] -> [i76, i77, i78, i79, kfromS (smaxIndex (w75 !$ [i76, i77, i78, i79]))]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let m59 = str (sreplicate @4 (sconcrete (sreplicate [3] 2) * siota (SNat @3))) + sreplicate @3 (siota (SNat @4)) ; m60 = str (sreplicate @4 (sconcrete (sreplicate [3] 2) * siota (SNat @3))) + sreplicate @3 (siota (SNat @4)) ; w73 = stranspose @[4,5,0,1,2,3] (sgather (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i61, i62, i63, i64] -> [ifH (sscalar -0.0 <=. negate (sfromR u1 !$ [i63, i64, i61, i62])) 0 1])) (\\[i65, i66, i67, i68] -> [kfromS (m59 !$ [i65, i67]), kfromS (m60 !$ [i66, i68])])) ; w74 = stranspose @[4,5,0,1,2,3] (sgather (stranspose @[2,3,0,1] (sfromR u1)) (\\[i69, i70, i71, i72] -> [kfromS (m59 !$ [i69, i71]), kfromS (m60 !$ [i70, i72])])) ; w75 = sreshape @[7,2,3,3,16] (w73 * w74) in rfromS (sgather w75 (\\[i76, i77, i78, i79] -> [i76, i77, i78, i79, kfromS (smaxIndex (w75 !$ [i76, i77, i78, i79]))]))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let m59 = str (sreplicate @4 (sconcrete (sreplicate [3] 2) * siota (SNat @3))) + sreplicate @3 (siota (SNat @4)) ; m60 = str (sreplicate @4 (sconcrete (sreplicate [3] 2) * siota (SNat @3))) + sreplicate @3 (siota (SNat @4)) ; w73 = stranspose @[4,5,0,1,2,3] (sgather (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i61, i62, i63, i64] -> [ifH (sscalar -0.0 <=. negate (sfromR u1 !$ [i63, i64, i61, i62])) 0 1])) (\\[i65, i66, i67, i68] -> [kfromS (m59 !$ [i65, i67]), kfromS (m60 !$ [i66, i68])])) ; w74 = stranspose @[4,5,0,1,2,3] (sgather (stranspose @[2,3,0,1] (sfromR u1)) (\\[i69, i70, i71, i72] -> [kfromS (m59 !$ [i69, i71]), kfromS (m60 !$ [i70, i72])])) ; w75 = sreshape @[7,2,3,3,16] (w73 * w74) in rfromS (stranspose @[2,3,0,1] (sscatter (stranspose @[2,3,4,5,0,1] (w73 * sreshape @[7,2,3,3,4,4] (sscatter (sfromR dret) (\\[i81, i82, i83, i84] -> [i81, i82, i83, i84, kfromS (smaxIndex (w75 !$ [i81, i82, i83, i84]))])))) (\\[i85, i86, i87, i88] -> [kfromS (m59 !$ [i85, i87]), kfromS (m60 !$ [i86, i88])])))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (let w73 = sgather (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i61, i62, i63, i64] -> [ifH (sscalar -0.0 <=. negate (sfromR u1 !$ [i63, i64, i61, i62])) 0 1])) (\\[i65, i66, i67, i68] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i65, i67]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i66, i68])]) in stranspose @[2,3,0,1] (sscatter (w73 * stranspose @[2,3,4,5,0,1] (sreshape @[7,2,3,3,4,4] (sscatter (sfromR dret) (\\[i81, i82, i83, i84] -> [i81, i82, i83, i84, kfromS (smaxIndex (sgather (stranspose @[4,5,0,1,2,3] w73 * stranspose @[4,5,0,1,2,3] (sgather (stranspose @[2,3,0,1] (sfromR u1)) (\\[i69, i70, i71, i72] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i69, i71]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i70, i72])]))) (\\[i118] -> [remH (quotH ((((288 * i81 + 144 * i82) + 48 * i83) + 16 * i84) + i118) 288) 7, remH (quotH ((((288 * i81 + 144 * i82) + 48 * i83) + 16 * i84) + i118) 144) 2, remH (quotH ((((288 * i81 + 144 * i82) + 48 * i83) + 16 * i84) + i118) 48) 3, remH (quotH ((((288 * i81 + 144 * i82) + 48 * i83) + 16 * i84) + i118) 16) 3, remH (quotH ((((288 * i81 + 144 * i82) + 48 * i83) + 16 * i84) + i118) 4) 4, remH ((((288 * i81 + 144 * i82) + 48 * i83) + 16 * i84) + i118) 4])))])))) (\\[i85, i86, i87, i88] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i85, i87]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i86, i88])])))"
AstTensor AstMethodLet PrimalSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContractNoExpand (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let w73 = sgather (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i61, i62, i63, i64] -> [ifH (sscalar -0.0 <=. negate (sfromR u1 !$ [i63, i64, i61, i62])) 0 1])) (\\[i65, i66, i67, i68] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i65, i67]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i66, i68])]) in stranspose @[2,3,0,1] (sscatter (w73 * stranspose @[2,3,4,5,0,1] (sreshape @[7,2,3,3,4,4] (sscatter (sfromR u80) (\\[i81, i82, i83, i84] -> [i81, i82, i83, i84, kfromS (smaxIndex (sreshape @[7,2,3,3,16] (stranspose @[4,5,0,1,2,3] w73 * stranspose @[4,5,0,1,2,3] (sgather (stranspose @[2,3,0,1] (sfromR u1)) (\\[i69, i70, i71, i72] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i69, i71]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i70, i72])]))) !$ [i81, i82, i83, i84]))])))) (\\[i85, i86, i87, i88] -> [kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i85, i87]), kfromS (sconcrete (sfromListLinear [3,4] [0,1,2,3,2,3,4,5,4,5,6,7]) !$ [i86, i88])])))"
testCNNOPP5cW :: Assertion
testCNNOPP5cW :: Assertion
testCNNOPP5cW = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
relu (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
7, Int
Item (IShR 4)
2, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (let u45 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i114, i116] -> [i114 + i116]))) (\\[i42, i43] -> [i42 + i43])))))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) in sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i46, i47, i48, i49] -> [ifH (sscalar -0.0 <=. negate (u45 !$ [i46, i47, i48, i49])) 0 1]) * u45)"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w44 = str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i40, i41] -> [i40 + i41]))) (\\[i42, i43] -> [i42 + i43])))))) ; u45 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (w44 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; u50 = sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i46, i47, i48, i49] -> [ifH (sscalar -0.0 <=. negate (u45 !$ [i46, i47, i48, i49])) 0 1]) in rfromS (u50 * u45)"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w44 = str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i40, i41] -> [i40 + i41]))) (\\[i42, i43] -> [i42 + i43])))))) ; u45 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (w44 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; u50 = sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i46, i47, i48, i49] -> [ifH (sscalar -0.0 <=. negate (u45 !$ [i46, i47, i48, i49])) 0 1]) in rfromS (ssum @1 (str (ssum @2 (str (ssum @2 (str (ssum @2 (w44 * sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,3,4,0] (sreplicate @98 (u50 * sfromR dret)))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (let w44 = sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i169, i171] -> [i169 + i171]))) (\\[i42, i43] -> [i42 + i43]) in ssum @2 (ssum @2 (sdot1In (stranspose @[1,6,0,4,5,3,2] (sreplicate @7 (stranspose @[3,2,1,4,5,0] w44))) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,3,4,0] (sreplicate @98 (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i46, i47, i48, i49] -> [ifH (sscalar -0.0 <=. negate (ssum0 (sgather (stranspose @[6,1,0,2,4,5,3] (sreplicate @7 (stranspose @[3,2,1,4,5,0] w44)) * sreplicate @2 (sreplicate @2 (str (sreplicate @2 (sfromR u1))))) (\\[i132] -> [remH (quotH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 98) 2, remH (quotH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 196) 2, remH (quotH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 392) 7, remH (quotH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 2744) 2, remH (quotH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 49) 2, remH (quotH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 7) 7, remH ((((2744 * i46 + 392 * i47) + 196 * i48) + 98 * i49) + i132) 7])))) 0 1]) * sfromR dret)))) !$ [0]))))"
AstTensor AstMethodLet PrimalSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContractNoExpand (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let w44 = sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i40, i41] -> [i40 + i41]))) (\\[i42, i43] -> [i42 + i43]) in ssum @2 (ssum @2 (sdot1In (stranspose @[4,2,3,0,5,6,7,1] (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w44)))) !$ [0]) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,3,4,0] (sreplicate @98 (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i46, i47, i48, i49] -> [ifH (sscalar -0.0 <=. negate (ssum0 (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w44)))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))) !$ [i46, i47, i48, i49]))) 0 1]) * sfromR u51)))) !$ [0]))))"
testCNNOPP5dW :: Assertion
testCNNOPP5dW :: Assertion
testCNNOPP5dW = do
Assertion
resetVarCounter
let artifactRev :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
artifactRev = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 4 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 4 Double))) (TKR 4 Double)
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt IncomingCotangentHandling
UseIncomingCotangent (Int
-> Int
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
Int -> Int -> target (TKR 4 r) -> target (TKR 4 r)
maxPool2dUnpadded Int
4 Int
2 (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) (n :: Nat) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
relu (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double))
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 4 Double)
-> AstTensor AstMethodLet FullSpan (TKR 4 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r, Differentiable r) =>
target (TKR 4 r) -> target (TKR 4 r)
conv2dC) (IShR 4
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 4 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR [Int
Item (IShR 4)
7, Int
Item (IShR 4)
2, Int
Item (IShR 4)
7, Int
Item (IShR 4)
7] (forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar @Double))
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> rfromS (let u67 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i130, i132] -> [i130 + i132]))) (\\[i64, i65] -> [i64 + i65])))))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; t74 = sreshape @[2,7,16] (stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i68, i69, i70, i71] -> [ifH (sscalar -0.0 <=. negate (u67 !$ [i69, i70, i68, i71])) 0 1])) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0))) * stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] u67) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0)))) in stranspose @[1,2,0] (sreplicate @1 (stranspose @[1,2,0] (sreplicate @1 (sgather t74 (\\[i75, i76] -> [i75, i76, kfromS (smaxIndex (t74 !$ [i75, i76]))]))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPrimalPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\u1 -> let w66 = str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i62, i63] -> [i62 + i63]))) (\\[i64, i65] -> [i64 + i65])))))) ; u67 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (w66 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; u72 = stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i68, i69, i70, i71] -> [ifH (sscalar -0.0 <=. negate (u67 !$ [i69, i70, i68, i71])) 0 1])) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0))) ; u73 = stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] u67) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0))) ; t74 = sreshape @[2,7,16] (u72 * u73) in rfromS (stranspose @[1,2,0] (sreplicate @1 (stranspose @[1,2,0] (sreplicate @1 (sgather t74 (\\[i75, i76] -> [i75, i76, kfromS (smaxIndex (t74 !$ [i75, i76]))]))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> let w66 = str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] (sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i62, i63] -> [i62 + i63]))) (\\[i64, i65] -> [i64 + i65])))))) ; u67 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (w66 * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; u72 = stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i68, i69, i70, i71] -> [ifH (sscalar -0.0 <=. negate (u67 !$ [i69, i70, i68, i71])) 0 1])) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0))) ; u73 = stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] u67) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0))) ; t74 = sreshape @[2,7,16] (u72 * u73) ; u80 = stranspose @[3,0,1,2] (u72 * sreshape @[2,7,4,4] (sscatter (ssum @1 (stranspose @[2,0,1] (ssum @1 (stranspose @[2,0,1] (sfromR dret))))) (\\[i78, i79] -> [i78, i79, kfromS (smaxIndex (t74 !$ [i78, i79]))]))) in rfromS (ssum @1 (str (ssum @2 (str (ssum @2 (str (ssum @2 (w66 * sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,3,4,0] (sreplicate @98 (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) u80))))))))))))))"
AstArtifactRev (TKR 4 Double) (TKR 4 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstArtifactRev (TKR 4 Double) (TKR 4 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret u1 -> rfromS (let w66 = sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i172, i174] -> [i172 + i174]))) (\\[i64, i65] -> [i64 + i65]) ; u67 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w66)))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; u72 = sappend (stranspose @[3,1,2,0] (sappend (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i68, i69, i70, i71] -> [ifH (sscalar -0.0 <=. negate (u67 !$ [i69, i70, i68, i71])) 0 1])) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0)) in ssum @2 (ssum @2 (sdot1In (stranspose @[1,6,0,4,5,3,2] (sreplicate @7 (stranspose @[3,2,1,4,5,0] w66))) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,3,4,0] (sreplicate @98 (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) u72))) * stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,0,1,2] (sreshape @[2,7,4,4] (sscatter (stranspose @[2,3,0,1] (sfromR dret) !$ [0, 0]) (\\[i78, i79] -> [i78, i79, kfromS (smaxIndex (sgather (stranspose @[1,2,3,0] u72 * stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] u67) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0)))) (\\[i146] -> [remH (quotH ((112 * i78 + 16 * i79) + i146) 112) 2, remH (quotH ((112 * i78 + 16 * i79) + i146) 16) 7, remH (quotH ((112 * i78 + 16 * i79) + i146) 4) 4, remH ((112 * i78 + 16 * i79) + i146) 4])))]))))))))))) !$ [0]))))"
AstTensor AstMethodLet PrimalSpan (TKR 4 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContractNoExpand (AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 4 Double)
forall a b. (a -> b) -> a -> b
$ AstArtifactRev (TKR 4 Double) (TKR 4 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 4 Double))
forall (x :: TK) (z :: TK).
AstArtifactRev x z
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind x)
artDerivativeRev AstArtifactRev (TKR 4 Double) (TKR 4 Double)
artifactRev)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let w66 = sgather (stranspose @[4,2,0,3,1] (sgather (sconcrete (sfromListLinear [2,2,2,2] [5.0,2.0,-2.0,0.0,13.1,9.0,582934.0,2.99432,6.0,1.0,0.1,-0.2,8.0,-4.0,-335.0,26.0])) (\\[i62, i63] -> [i62 + i63]))) (\\[i64, i65] -> [i64 + i65]) ; u67 = ssum @98 (stranspose @[4,0,1,2,3] (sreshape @[2,7,2,2,98] (str (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w66)))) * sreplicate @2 (str (sreplicate @2 (str (sreplicate @2 (str (sreplicate @1 (sfromR u1)))))))))) ; u72 = sappend (stranspose @[3,1,2,0] (sappend (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i68, i69, i70, i71] -> [ifH (sscalar -0.0 <=. negate (u67 !$ [i69, i70, i68, i71])) 0 1])) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0)) in ssum @2 (ssum @2 (sdot1In (stranspose @[4,2,3,0,5,6,7,1] (sreplicate @7 (stranspose @[1,2,3,0] (sreplicate @1 (stranspose @[2,3,0,4,5,1] w66)))) !$ [0]) (stranspose @[4,2,3,1,5,6,7,0] (sreshape @[2,7,2,2,1,2,7,7] (stranspose @[1,2,3,4,0] (sreplicate @98 (stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) u72))) * stranspose @[1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,1,2,0] (sslice (SNat @0) (SNat @2) (stranspose @[3,0,1,2] (sreshape @[2,7,4,4] (sscatter (stranspose @[2,3,0,1] (sfromR u77) !$ [0, 0]) (\\[i78, i79] -> [i78, i79, kfromS (smaxIndex (sreshape @[2,7,16] (stranspose @[1,2,3,0] u72 * stranspose @[1,2,3,0] (sappend (stranspose @[3,1,2,0] (sappend (stranspose @[2,0,1] u67) (sconcrete (sreplicate [2,2,7,2] 0.0)))) (sconcrete (sreplicate [2,2,7,4] 0.0)))) !$ [i78, i79]))]))))))))))) !$ [0]))))"