14 : in_features_(in_features), out_features_(out_features), has_bias_(bias),
15 weight_(
Matrix<T>(out_features, in_features), true),
16 bias_(
Matrix<T>(out_features, 1), true) {
17 initialize_parameters();
28 std::random_device rd;
29 std::mt19937 gen(rd());
30 T std_dev = std::sqrt(2.0 / (in_features_ + out_features_));
31 std::normal_distribution<T> dist(0.0, std_dev);
48 output = output + bias_;
55 std::vector<Variable<T>*> params;
56 params.push_back(&weight_);
58 params.push_back(&bias_);
102 if (!this->is_training()) {
117 modules_.push_back(module);
126 for (
auto& module : modules_) {
127 output =
module->forward(output);
134 std::vector<Variable<T>*> all_params;
135 for (
auto& module : modules_) {
136 auto module_params =
module->parameters();
137 all_params.insert(all_params.end(), module_params.begin(), module_params.end());
144 for (
auto& module : modules_) {
152 for (
auto& module : modules_) {
153 module->train(training);
Dropout layer for regularization.
Variable< T > forward(const Variable< T > &input) override
Forward pass through the module.
Linear (fully connected) layer: y = xW^T + b.
Linear(size_t in_features, size_t out_features, bool bias=true)
Constructor.
Variable< T > forward(const Variable< T > &input) override
Forward pass: y = xW^T + b.
std::vector< Variable< T > * > parameters() override
Get parameters (weight and bias)
Base class for all neural network modules (PyTorch-like nn.Module)
virtual void train(bool training=true)
Set training mode.
ReLU activation function.
Variable< T > forward(const Variable< T > &input) override
Forward pass through the module.
Sequential container for chaining modules.
Variable< T > forward(const Variable< T > &input) override
Forward pass through all modules in sequence.
void add_module(std::shared_ptr< Module< T > > module)
Add a module to the sequence.
std::vector< Variable< T > * > parameters() override
Get parameters from all modules.
void train(bool training=true) override
Set training mode for all modules.
void zero_grad() override
Zero gradients for all modules.
Sigmoid activation function.
Variable< T > forward(const Variable< T > &input) override
Forward pass through the module.
Tanh activation function.
Variable< T > forward(const Variable< T > &input) override
Forward pass through the module.
Variable class that supports automatic differentiation.
Variable< T > sigmoid() const
Variable< T > dot(const Variable< T > &other) const
Variable< T > tanh() const
Variable< T > relu() const
PyTorch-like neural network layers with automatic differentiation.