This is a simple implementation of a Recurrent Neural Network (RNN) in pure C.
It demonstrates the concept of forward propagation over a sequence of time-series inputs without using any external libraries.
rnn-c/
โโโ include/ # Header files
โ โโโ rnn.h # RNN structure and declarations
โ โโโ utils.h # Utility functions (e.g., matrix multiplication)
โโโ src/ # Source code
โ โโโ rnn.c # RNN logic (init, forward, print)
โ โโโ utils.c # Math utility implementation
โโโ data/ # Example input data (optional)
โ โโโ sample_input.txt
โโโ main.c # Program entry point
โโโ Makefile # Build configuration
โโโ README.md # This file
- GCC or compatible C compiler (e.g.
gcc
,clang
) make
(for building the project)
git clone https://github.com/nomadsdev/rnn-model-with-c.git
cd rnn-c
make
This compiles all .c
files and generates an executable named rnn
.
./rnn
Time step 0: Output: 0.4938
Time step 1: Output: 0.4962
Time step 2: Output: 0.4975
The program performs forward propagation across 3 time steps using a hardcoded input sequence (0.1
, 0.5
, 0.9
) and prints the output of the RNN at each step.
To change the input sequence:
- Open
main.c
- Modify the
inputs[]
array:
float inputs[] = {0.2f, 0.4f, 0.6f, 0.8f};
- Rebuild the project:
make clean && make
./rnn
Here are some ideas for improving this base project:
- โ Add Backpropagation Through Time (BPTT)
- ๐ Loss function and training loop
- ๐ Load input from file (
sample_input.txt
) - ๐ง Increase model complexity (e.g., stacked RNN layers)
- ๐พ Save and load weights to/from file