grenade-0.1.0: Practical Deep Learning in Haskell

Copyright(c) Huw Campbell 2016-2017
LicenseBSD2
Stabilityexperimental
Safe HaskellNone
LanguageHaskell98

Grenade.Layers.Deconvolution

Description

A deconvolution layer is in many ways a convolution layer in reverse. It learns a kernel to apply to each pixel location, spreading it out into a larger layer.

This layer is important for image generation tasks, such as GANs on images.

Synopsis

Documentation

data Deconvolution :: Nat -> Nat -> Nat -> Nat -> Nat -> Nat -> * where Source #

A Deconvolution layer for a neural network. This uses the im2col Convolution trick popularised by Caffe.

The Deconvolution layer is a way of spreading out a single response into a larger image, and is useful in generating images.

Constructors

Deconvolution :: (KnownNat channels, KnownNat filters, KnownNat kernelRows, KnownNat kernelColumns, KnownNat strideRows, KnownNat strideColumns, KnownNat kernelFlattened, kernelFlattened ~ ((kernelRows * kernelColumns) * filters)) => !(L kernelFlattened channels) -> !(L kernelFlattened channels) -> Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns 

Instances

Show (Deconvolution c f k k' s s') Source # 

Methods

showsPrec :: Int -> Deconvolution c f k k' s s' -> ShowS #

show :: Deconvolution c f k k' s s' -> String #

showList :: [Deconvolution c f k k' s s'] -> ShowS #

(KnownNat channels, KnownNat filters, KnownNat kernelRows, KnownNat kernelColumns, KnownNat strideRows, KnownNat strideColumns, KnownNat (* (* kernelRows kernelColumns) filters)) => Serialize (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) Source # 

Methods

put :: Putter (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) #

get :: Get (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) #

(KnownNat channels, KnownNat filters, KnownNat kernelRows, KnownNat kernelColumns, KnownNat strideRows, KnownNat strideColumns, KnownNat (* (* kernelRows kernelColumns) filters)) => UpdateLayer (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) Source # 

Associated Types

type Gradient (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) :: * Source #

Methods

runUpdate :: LearningParameters -> Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns -> Gradient (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) -> Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns Source #

createRandom :: MonadRandom m => m (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) Source #

runUpdates :: LearningParameters -> Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns -> [Gradient (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns)] -> Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns Source #

(KnownNat kernelRows, KnownNat kernelCols, KnownNat strideRows, KnownNat strideCols, KnownNat inputRows, KnownNat inputCols, KnownNat outputRows, KnownNat outputCols, (~) Nat (* ((-) inputRows 1) strideRows) ((-) outputRows kernelRows), (~) Nat (* ((-) inputCols 1) strideCols) ((-) outputCols kernelCols), KnownNat (* (* kernelRows kernelCols) 1), KnownNat (* outputRows 1)) => Layer (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D2 outputRows outputCols) Source #

A two dimentional image may have a Deconvolution filter applied to it

Associated Types

type Tape (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols :: Shape) (D2 outputRows outputCols :: Shape) :: * Source #

Methods

runForwards :: Deconvolution 1 1 kernelRows kernelCols strideRows strideCols -> S (D2 inputRows inputCols) -> (Tape (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D2 outputRows outputCols), S (D2 outputRows outputCols)) Source #

runBackwards :: Deconvolution 1 1 kernelRows kernelCols strideRows strideCols -> Tape (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D2 outputRows outputCols) -> S (D2 outputRows outputCols) -> (Gradient (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols), S (D2 inputRows inputCols)) Source #

(KnownNat kernelRows, KnownNat kernelCols, KnownNat filters, KnownNat strideRows, KnownNat strideCols, KnownNat inputRows, KnownNat inputCols, KnownNat outputRows, KnownNat outputCols, (~) Nat (* ((-) inputRows 1) strideRows) ((-) outputRows kernelRows), (~) Nat (* ((-) inputCols 1) strideCols) ((-) outputCols kernelCols), KnownNat (* (* kernelRows kernelCols) filters), KnownNat (* outputRows filters)) => Layer (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D3 outputRows outputCols filters) Source #

A two dimentional image may have a Deconvolution filter applied to it

Associated Types

type Tape (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols :: Shape) (D3 outputRows outputCols filters :: Shape) :: * Source #

Methods

runForwards :: Deconvolution 1 filters kernelRows kernelCols strideRows strideCols -> S (D2 inputRows inputCols) -> (Tape (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D3 outputRows outputCols filters), S (D3 outputRows outputCols filters)) Source #

runBackwards :: Deconvolution 1 filters kernelRows kernelCols strideRows strideCols -> Tape (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D3 outputRows outputCols filters) -> S (D3 outputRows outputCols filters) -> (Gradient (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols), S (D2 inputRows inputCols)) Source #

(KnownNat kernelRows, KnownNat kernelCols, KnownNat strideRows, KnownNat strideCols, KnownNat inputRows, KnownNat inputCols, KnownNat outputRows, KnownNat outputCols, (~) Nat (* ((-) inputRows 1) strideRows) ((-) outputRows kernelRows), (~) Nat (* ((-) inputCols 1) strideCols) ((-) outputCols kernelCols), KnownNat (* (* kernelRows kernelCols) 1), KnownNat (* outputRows 1), KnownNat channels) => Layer (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D2 outputRows outputCols) Source #

A two dimentional image may have a Deconvolution filter applied to it

Associated Types

type Tape (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels :: Shape) (D2 outputRows outputCols :: Shape) :: * Source #

Methods

runForwards :: Deconvolution channels 1 kernelRows kernelCols strideRows strideCols -> S (D3 inputRows inputCols channels) -> (Tape (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D2 outputRows outputCols), S (D2 outputRows outputCols)) Source #

runBackwards :: Deconvolution channels 1 kernelRows kernelCols strideRows strideCols -> Tape (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D2 outputRows outputCols) -> S (D2 outputRows outputCols) -> (Gradient (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols), S (D3 inputRows inputCols channels)) Source #

(KnownNat kernelRows, KnownNat kernelCols, KnownNat filters, KnownNat strideRows, KnownNat strideCols, KnownNat inputRows, KnownNat inputCols, KnownNat outputRows, KnownNat outputCols, KnownNat channels, (~) Nat (* ((-) inputRows 1) strideRows) ((-) outputRows kernelRows), (~) Nat (* ((-) inputCols 1) strideCols) ((-) outputCols kernelCols), KnownNat (* (* kernelRows kernelCols) filters), KnownNat (* outputRows filters)) => Layer (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D3 outputRows outputCols filters) Source #

A three dimensional image (or 2d with many channels) can have an appropriately sized Deconvolution filter run across it.

Associated Types

type Tape (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels :: Shape) (D3 outputRows outputCols filters :: Shape) :: * Source #

Methods

runForwards :: Deconvolution channels filters kernelRows kernelCols strideRows strideCols -> S (D3 inputRows inputCols channels) -> (Tape (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D3 outputRows outputCols filters), S (D3 outputRows outputCols filters)) Source #

runBackwards :: Deconvolution channels filters kernelRows kernelCols strideRows strideCols -> Tape (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D3 outputRows outputCols filters) -> S (D3 outputRows outputCols filters) -> (Gradient (Deconvolution channels filters kernelRows kernelCols strideRows strideCols), S (D3 inputRows inputCols channels)) Source #

type Gradient (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) Source # 
type Gradient (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) = Deconvolution' channels filters kernelRows kernelCols strideRows strideCols
type Tape (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D2 outputRows outputCols) Source # 
type Tape (Deconvolution 1 1 kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D2 outputRows outputCols) = S (D3 inputRows inputCols 1)
type Tape (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D3 outputRows outputCols filters) Source # 
type Tape (Deconvolution 1 filters kernelRows kernelCols strideRows strideCols) (D2 inputRows inputCols) (D3 outputRows outputCols filters) = S (D3 inputRows inputCols 1)
type Tape (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D2 outputRows outputCols) Source # 
type Tape (Deconvolution channels 1 kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D2 outputRows outputCols) = S (D3 inputRows inputCols channels)
type Tape (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D3 outputRows outputCols filters) Source # 
type Tape (Deconvolution channels filters kernelRows kernelCols strideRows strideCols) (D3 inputRows inputCols channels) (D3 outputRows outputCols filters) = S (D3 inputRows inputCols channels)

data Deconvolution' :: Nat -> Nat -> Nat -> Nat -> Nat -> Nat -> * where Source #

Constructors

Deconvolution' :: (KnownNat channels, KnownNat filters, KnownNat kernelRows, KnownNat kernelColumns, KnownNat strideRows, KnownNat strideColumns, KnownNat kernelFlattened, kernelFlattened ~ ((kernelRows * kernelColumns) * filters)) => !(L kernelFlattened channels) -> Deconvolution' channels filters kernelRows kernelColumns strideRows strideColumns 

randomDeconvolution :: (MonadRandom m, KnownNat channels, KnownNat filters, KnownNat kernelRows, KnownNat kernelColumns, KnownNat strideRows, KnownNat strideColumns, KnownNat kernelFlattened, kernelFlattened ~ ((kernelRows * kernelColumns) * filters)) => m (Deconvolution channels filters kernelRows kernelColumns strideRows strideColumns) Source #