33 void AddLayer(
int inChannels,
int outChannels,
34 int inHeight,
int inWidth,
35 int kernelH,
int kernelW,
36 int strideH = 1,
int strideW = 1,
37 int padH = 0,
int padW = 0,
38 float lr = 1e-6f,
float ir = 0.1f,
39 float pr = 0.01f,
float lmbda = 1e-2f,
53 void Clamp(const std::vector<
float> &input) noexcept;
67 const auto &
GetLayers() const noexcept {
return layers; }
73 float TrainStep(
const std::vector<float> &x,
const std::vector<float> &y,
int inferenceSteps);
76 std::vector<float>
Predict(
const std::vector<float> &x,
int inferenceSteps);
Convolutional counterpart to DiscriminativePCLayer.
A 64-byte-aligned bump-pointer allocator over a single heap-allocated block, used to pack every layer...
Convolutional Predictive Coding layer (im2col-based). See the file-level warning above before enablin...
Definition ConvPCLayer.h:46
ConvPCLayer * GetTerminalLayer() noexcept
Returns the last layer (outChannels==0, the terminal one).
Definition ConvPCNetwork.h:65
float TrainStepWithProjection(const std::vector< float > &x, const std::vector< float > &y, int inferenceSteps)
Full train step with forward-projection init: clamp input, project forward, clamp target,...
Definition ConvPCNetwork.cpp:131
friend class PCNDiagnostics
Definition ConvPCNetwork.h:96
void RandomizeWeights(std::mt19937 &rng) noexcept
Initializes every layer's weights randomly.
Definition ConvPCNetwork.cpp:39
std::vector< float > PredictWithProjection(const std::vector< float > &x, int inferenceSteps)
Inference-only counterpart to TrainStepWithProjection(): clamp input, project forward,...
Definition ConvPCNetwork.cpp:151
ConvPCNetwork(int batchSize) noexcept
Constructs an empty network; add layers via AddLayer(), then Compile() before use.
Definition ConvPCNetwork.cpp:5
void Clamp(const std::vector< float > &input) noexcept
Clamps the flattened, batched input to the first (input) layer.
Definition ConvPCNetwork.cpp:51
ConvPCNetwork & operator=(const ConvPCNetwork &)=delete
void UpdatePrecision() noexcept
Applies precision updates to every layer.
Definition ConvPCNetwork.cpp:76
float CalculateState() noexcept
Computes and returns the network's total energy at the current state, without changing it.
Definition ConvPCNetwork.cpp:56
void Compile()
Sums every layer's required float count into a single contiguous arena and binds each layer into it....
Definition ConvPCNetwork.cpp:28
float TrainStep(const std::vector< float > &x, const std::vector< float > &y, int inferenceSteps)
Full train step: clamp input+target, settle for inferenceSteps, update weights once,...
Definition ConvPCNetwork.cpp:82
void AddLayer(int inChannels, int outChannels, int inHeight, int inWidth, int kernelH, int kernelW, int strideH=1, int strideW=1, int padH=0, int padW=0, float lr=1e-6f, float ir=0.1f, float pr=0.01f, float lmbda=1e-2f, ActivationType aType=ActivationType::RELU, ActivationType dType=ActivationType::dRELU)
Adds a convolutional layer. Pass outChannels=0 to mark a terminal layer (no outgoing prediction).
Definition ConvPCNetwork.cpp:7
void UpdateWeights() noexcept
Applies weight updates to every layer.
Definition ConvPCNetwork.cpp:70
const auto & GetLayers() const noexcept
Returns every layer in the network, in the order they were added.
Definition ConvPCNetwork.h:67
ConvPCNetwork(const ConvPCNetwork &)=delete
std::vector< float > Predict(const std::vector< float > &x, int inferenceSteps)
Clamps input only, settles, and returns the terminal layer's settled beliefs (flattened,...
Definition ConvPCNetwork.cpp:101
int GetBatchSize() const noexcept
Returns the batch size given at construction.
Definition ConvPCNetwork.h:69
void UpdateState() noexcept
Runs one settling step on every layer.
Definition ConvPCNetwork.cpp:64
void ResetState() noexcept
Resets the beliefs (z) on every layer.
Definition ConvPCNetwork.cpp:45
void ProjectForward() noexcept
Seeds hidden layers from a genuine forward pass through current weights, instead of zero-init....
Definition ConvPCNetwork.cpp:119
A 64-byte-aligned bump-pointer allocator over a single contiguous block of host memory....
Definition MemoryArena.h:141
This file exists to provide both Tensor.h and IComputeBackend.h with device types without introducing...
Definition Backend.cpp:10
ActivationType
Identifies an activation function or its derivative, for dispatch tables and layer/backend APIs that ...
Definition ActivationType.h:25
@ RELU
Definition ActivationType.h:26
@ dRELU
Definition ActivationType.h:27