#pragma once #include "Buffer.hpp" #include "DataAnalysisCommon.hpp" namespace tp { class FullyConnectedNN { struct Layer { struct Neuron { struct Parameter { Parameter() = default; Parameter(halnf in) : val(in) {} halnf val = 0; halnf grad = 0; }; Parameter bias; Buffer weights; halnf activationValue = 0; halnf activationValueLinear = 0; halnf cache; }; Buffer neurons; }; public: FullyConnectedNN() = default; void initializeRandom(const Buffer& description); void evaluate(const Buffer& input, Buffer& output); halnf calcCost(const Buffer& output); void calcGrad(const Buffer& output); void applyGrad(halnf step); public: Buffer mLayers; halni mAvgCount = 0; }; };