Một công cụ thực thi (inference engine) tối giản cho mạng thần kinh nhân tạo (CNN), được viết bằng C thuần. Dự án cho phép chạy các mô hình đã huấn luyện (định dạng JSON/BIN) trên CPU với sự hỗ trợ của đa luồng OpenMP.
- Kiến trúc linh hoạt: Đọc cấu trúc mạng từ tệp
.jsonvà trọng số từ tệp.bin. - Hỗ trợ đa lớp (Operators):
- Convolution (Conv2D)
- Max Pooling
- Fully Connected (Gemm)
- Activation Functions: ReLU, PReLU, Sigmoid, Softmax.
- Batch Normalization & Reshape.
- Tối ưu hóa: Tận dụng xử lý song song trên CPU bằng OpenMP.
- Không phụ thuộc thư viện nặng: Chỉ yêu cầu
cJSONđể xử lý file cấu hình.
main.c: Luồng chính của chương trình, nạp dữ liệu MNIST và thực hiện test.cJSON.h/c: Thư viện xử lý dữ liệu JSON.model.json: Tệp định dạng cấu trúc các layer của mô hình.model.bin: Tệp nhị phân chứa trọng số (weights) và định hướng (bias).
- Trình biên dịch C (GCC, Clang hoặc MSVC).
- Thư viện OpenMP được cài đặt sẵn.
gcc -O3 -fopenmp main.c cJSON.c -lm -o cnn_inference