Home

Awesome

winograd minimal filtering for Convolutional Neural Network

I'm going to use the Winograd’s minimal filtering algorithms to introduce a new class of fast algorithms for convolutional neural networks using C and OpenBLAS. It is a first implementation of the Fast Algorithms for Convolutional Neural Networks - Paper

Theoretical Background

The algorithm that we are going to implement relize the operation in the image below. Convolutional NN layer - kernel and tile

We have extended the algorithm by using more dimension: <br/> Image

Parameters

Getting Started

These instructions allow you to run the program on your computer.

Prerequisites

Installing

We need to compile the program, you should give to the compiler the path of the openBLAS library. I use this line:

cc -static -o test main.c -I /opt/OpenBLAS/include/ -L/opt/OpenBLAS/lib -lopenblas -lpthread -lgfortran

Running an example

To run an example of the program you should follow these steps:

python calcMc.py M R
python createInput.py W H CHANNEL input.txt
python createKernel.py R CHANNEL K kernel.txt
./test M R CHANNEL K W H kernel.txt input.txt

Contributing

This project has been developed by Me and Andrea Facchini