std1.0.0-beta-7 SafeC docs

std :: ml::cnn

Struct std::Conv2D

#include <std/ml/cnn.h> source

struct Conv2D {
    &heap float weight;
    &heap float bias;
    unsigned long inChannels;
    unsigned long outChannels;
    unsigned long kH;
    unsigned long kW;
    unsigned long stride;
    unsigned long padding;
}

out[oc][oh][ow] = bias[oc] + sum_ic sum_kh sum_kw weight[oc][ic][kh][kw] * in[ic][ohstride+kh-padding][owstride+kw-padding] (input positions outside [0,height)x[0,width) — i.e. inside the zero padding — contribute 0). Output spatial size is (dim + 2*padding - kernel)/stride + 1; caller must choose dimensions that divide evenly (no implicit ceil/floor rounding surprises).

Fields

§&heap float weightsource

[outChannels, inChannels, kH, kW]

§&heap float biassource

[outChannels]

§unsigned long inChannelssource
§unsigned long outChannelssource
§unsigned long kHsource
§unsigned long kWsource
§unsigned long stridesource
§unsigned long paddingsource

Methods

§struct FeatureMap forward(const &FeatureMap input) constsource · definition

Convolution + bias, computed as im2col + sgemm (std/simd/gemm.h): SIMD on any target, and split across std/sync/parallel.h's thread pool when the layer is large enough.

§struct FeatureMap relu_forward(const &FeatureMap input) constsource · definition

relu(layer.forward(input)), in one pass.

§void drop()source · definition
§void free() consumesource · definition

= drop()

§static struct Conv2D new( unsigned long inChannels, unsigned long outChannels, unsigned long kH, unsigned long kW, unsigned long stride, unsigned long padding, )source · definition