forked from Alescontrela/Numpy-CNN
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a071aab
commit b9f3fb9
Showing
1 changed file
with
29 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,31 @@ | ||
# Numpy-CNN | ||
*** | ||
A numpy-only implementation of a Convolutional Neural Network, from the ground up. | ||
|
||
*Written by Alejandro Escontrela* | ||
|
||
## Purpose | ||
|
||
To gain a quality understanding of convolutional neural networks and what makes them peform so well, I constructed one from scratch with NumPy. This CNN is in no way intended to replace popular DL frameworks such as Tensorflow or Torch, it is instead meant to serve as an instructional tool by anyone who wishes to understand the underlying mechinery of a CNN. | ||
|
||
## Training the network | ||
|
||
To train the network on your machine, first install all necessary dependencies using: | ||
|
||
`pip install -r requirements.txt` | ||
|
||
Afterwards, you can train the network using the following command: | ||
|
||
`python3 train_cnn.py '<file_name>.pkl'` | ||
|
||
Replace <file_name> with whatever file name you would like. The terminal should display the following progress bar to indicate the training progress, as well as the cost for the current training batch. | ||
|
||
After the CNN has finished training, a .pkl file containing the network's parameters is saved to the directory where the script was run. | ||
|
||
The network takes about 5 hours to train on my macbook pro. I included the trained params in the GitHub repo under the name params.pkl . To use them, replace <file_name> with params.pkl. | ||
|
||
## Measuring Performance | ||
To measure the network's accuracy, run the following command in the terminal: | ||
|
||
`python3 measure_performance.py '<file_name>.pkl'` | ||
|
||
This command will use the trained parameters to run predictions on all 10,000 digits in the test dataset. After all predictions are made, a value displaying the network's accuracy will appear in the command prompt |