Convolution

Parametric chains convolution operator

struct Convolution (
T
size_t dim
alias Storage
) {
Variable!(T, dim + 2, Storage) weight;
Variable!(T, dim + 2, Storage) bias;
int nInput;
int nOutput;
bool useBias;
int[dim] kernel;
int[dim] stride;
int[dim] pad;
int[dim] dilation;
}

Constructors

this
this(int nInput, int nOutput, int[dim] kernel, bool useBias = true)
this
this(int nInput, int nOutput, int[dim] kernel, int[dim] stride, int[dim] pad, int[dim] dilation, bool useBias = true)

Members

Functions

opCall
auto opCall(Variable!(T, dim + 2, Storage) x)
resetParameters
void resetParameters()

pytorch style init (LeCun uniform init)

Examples

1 import grain.testing;
2 import grain.utility;
3 import numir;
4 import mir.ndslice;
5 
6 auto conv = Convolution!(float, 2, HostStorage)(3, 4, [3, 3]);
7 auto x = uniform!float(2, 3, 4, 4).slice.variable(true);
8 auto y = conv(x);
9 auto gy = uniform!float(y.shape.castArray!size_t).slice.variable;
10 gradCheckChain!conv(x, gy, 1e-3, 5e-2, 5e-2);

Meta