micrograd 0.1.0
Small C implementation of micrograd
Loading...
Searching...
No Matches
layer.h
Go to the documentation of this file.
1#pragma once
2
8#include <stdbool.h>
9#include <stddef.h>
10
11#include "micrograd/neuron.h"
12
22typedef struct {
23 size_t n_in;
24 size_t n_out;
26} mg_layer;
27
40 mg_layer* l,
41 size_t n_in,
42 size_t n_out,
43 bool non_linear);
44
55
62
70
77void mg_layer_params(const mg_layer* l, mg_value** out);
78
size_t mg_layer_param_count(const mg_layer *l)
Get the number of trainable parameters in a layer.
bool mg_layer_init(mg_graph *g, mg_layer *l, size_t n_in, size_t n_out, bool non_linear)
Initialize a layer.
void mg_layer_free(mg_layer *l)
Free memory owned by a layer.
void mg_layer_params(const mg_layer *l, mg_value **out)
Copy a layer's parameters into a flat array.
bool mg_layer_call(mg_graph *g, mg_layer *l, mg_value **x, mg_value **out)
Evaluate a layer with the given input values.
struct mg_graph mg_graph
Opaque owner of a linked list of mg_value nodes.
Definition value.h:22
struct mg_value mg_value
Opaque scalar node in a computation graph.
Definition value.h:30
Fully connected neuron API.
Layer of neurons in a neural network.
Definition layer.h:22
size_t n_out
Definition layer.h:24
mg_neuron * neurons
Definition layer.h:25
size_t n_in
Definition layer.h:23
Fully connected neuron in a neural network.
Definition neuron.h:22