Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

nomadsdev/rnn-model-with-c

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 RNN in C

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.


📁 Project Structure

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

🧪 Requirements

  • GCC or compatible C compiler (e.g. gcc, clang)
  • make (for building the project)

⚙️ Build Instructions

1. Clone or download the project:

git clone https://github.com/nomadsdev/rnn-model-with-c.git
cd rnn-c

2. Build the project using make:

make

This compiles all .c files and generates an executable named rnn.


🚀 Running the Program

./rnn

Expected Output:

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.


🧰 How to Modify Inputs

To change the input sequence:

  1. Open main.c
  2. Modify the inputs[] array:
float inputs[] = {0.2f, 0.4f, 0.6f, 0.8f};
  1. Rebuild the project:
make clean && make
./rnn

🛠️ How to Extend This Project

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

About

model rnn with c

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.