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