goal-geometry-0.20: The basic geometric type system of Goal
Safe HaskellNone
LanguageHaskell2010

Goal.Geometry.Map.Linear.Convolutional

Description

Manifolds of Convolutional operators. This is hardly used, but could in theory power conv nets. One day.

Synopsis

Convolutional Manifolds

data Convolutional (rd :: Nat) (r :: Nat) (c :: Nat) :: Type -> Type -> Type Source #

A Manifold of correlational/convolutional transformations, defined by the number of kernels, their radius, the depth of the input, and its number of rows and columns.

Instances

Instances details
KnownConvolutional rd r c z x => Map a (Convolutional rd r c) z x Source # 
Instance details

Defined in Goal.Geometry.Map.Linear.Convolutional

Methods

(>.>) :: (a # Convolutional rd r c z x) -> (a #* x) -> a # z Source #

(>$>) :: (a # Convolutional rd r c z x) -> [a #* x] -> [a # z] Source #

KnownConvolutional rd r c z x => Propagate a (Convolutional rd r c) z x Source # 
Instance details

Defined in Goal.Geometry.Map.Linear.Convolutional

Methods

propagate :: [a #* z] -> [a #* x] -> (a # Convolutional rd r c z x) -> (a #* Convolutional rd r c z x, [a # z]) Source #

KnownConvolutional rd r c z x => Bilinear (Convolutional rd r c) z x Source # 
Instance details

Defined in Goal.Geometry.Map.Linear.Convolutional

Methods

(>.<) :: (c0 # z) -> (c0 # x) -> c0 # Convolutional rd r c z x Source #

(>$<) :: [c0 # z] -> [c0 # x] -> c0 # Convolutional rd r c z x Source #

transpose :: (c0 # Convolutional rd r c z x) -> c0 # Convolutional rd r c x z Source #

(1 <= (r * c), Manifold x, Manifold y, KnownNat r, KnownNat c, KnownNat rd, KnownNat (Div (Dimension x) (r * c)), KnownNat (Div (Dimension y) (r * c))) => Manifold (Convolutional rd r c y x) Source # 
Instance details

Defined in Goal.Geometry.Map.Linear.Convolutional

Associated Types

type Dimension (Convolutional rd r c y x) :: Nat Source #

type Dimension (Convolutional rd r c y x) Source # 
Instance details

Defined in Goal.Geometry.Map.Linear.Convolutional

type Dimension (Convolutional rd r c y x) = Div (Dimension y) (r * c) * ((Div (Dimension x) (r * c) * ((2 * rd) + 1)) * ((2 * rd) + 1))

type KnownConvolutional rd r c z x = (KnownNat rd, KnownNat r, KnownNat c, 1 <= (r * c), Dimension x ~ ((Div (Dimension x) (r * c) * r) * c), Dimension z ~ ((Div (Dimension z) (r * c) * r) * c), Manifold (Convolutional rd r c z x), Manifold x, Manifold z, KnownNat (Div (Dimension x) (r * c)), KnownNat (Div (Dimension z) (r * c))) Source #

A convenience type for ensuring that all the type-level Nats of a Convolutional Manifolds are KnownNats.