https://github.com/blinkdl/blinkdl
A minimalist deep learning library in Javascript using WebGL + asm.js. Run convolutional neural network in your browser.
https://github.com/blinkdl/blinkdl
alphago deep-learning deep-neural-networks deeplearning neural-network neural-networks
Last synced: 21 days ago
JSON representation
A minimalist deep learning library in Javascript using WebGL + asm.js. Run convolutional neural network in your browser.
- Host: GitHub
- URL: https://github.com/blinkdl/blinkdl
- Owner: BlinkDL
- License: apache-2.0
- Created: 2017-11-19T16:30:44.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-11-21T11:43:00.000Z (over 7 years ago)
- Last Synced: 2025-03-30T13:51:16.192Z (about 2 months ago)
- Topics: alphago, deep-learning, deep-neural-networks, deeplearning, neural-network, neural-networks
- Language: JavaScript
- Homepage:
- Size: 6.27 MB
- Stars: 84
- Watchers: 8
- Forks: 19
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# BlinkDL
A minimalist deep learning library in Javascript using WebGL + asm.js. Runs in your browser.
Currently it is a proof-of-concept (inference only). Note: Convolution is buggy when memories overlap.
The WebGL backend is powered by weblas: https://github.com/waylonflinn/weblas.
## Example
https://withablink.coding.me/goPolicyNet/ : a weiqi (baduk, go) policy network in AlphaGo style:
const N = 19;
const NN = N * N;
const nFeaturePlane = 8;
const nFilter = 128;const x = new BlinkArray();
x.Init('weblas');
x.nChannel = nFeaturePlane;
x.data = new Float32Array(nFeaturePlane * NN);
for (var i = 0; i < NN; i++)
x.data[5 * NN + i] = 1; // set feature plane for empty board
// pre-act residual network with 6 residual blocks
const bak = new Float32Array(nFilter * NN);
x.Convolution(nFilter, 3);
x.CopyTo(bak);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.Add(bak).CopyTo(bak);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.Add(bak).CopyTo(bak);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.Add(bak).CopyTo(bak);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.Add(bak).CopyTo(bak);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.Add(bak).CopyTo(bak);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.BatchNorm().ReLU().Convolution(nFilter, 3);
x.Add(bak);
x.BatchNorm().ReLU().Convolution(1, 1).Softmax();
![]()
## Usage
## Todo
- [x] Convolution (3x3_pad_1 and 1x1), BatchNorm, ReLU, Softmax
- [ ] Pooling layer
- [ ] FC layer
- [ ] Strided convolution
- [ ] Transposed convolution
- [ ] Webworker and async
- [ ] Faster inference with weblas pipeline, WebGPU, WebAssembly
- [ ] Memory manager
- [ ] Training