{"id":15639978,"url":"https://github.com/blinkdl/blinkdl","last_synced_at":"2025-07-13T15:33:25.008Z","repository":{"id":105074108,"uuid":"111312456","full_name":"BlinkDL/BlinkDL","owner":"BlinkDL","description":"A minimalist deep learning library in Javascript using WebGL + asm.js. Run convolutional neural network in your browser.","archived":false,"fork":false,"pushed_at":"2017-11-21T11:43:00.000Z","size":6576,"stargazers_count":84,"open_issues_count":1,"forks_count":19,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-30T13:51:16.192Z","etag":null,"topics":["alphago","deep-learning","deep-neural-networks","deeplearning","neural-network","neural-networks"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BlinkDL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-19T16:30:44.000Z","updated_at":"2025-03-10T15:02:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"5dd7054e-6d15-4b25-ae0e-707cd7e6d2e7","html_url":"https://github.com/BlinkDL/BlinkDL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlinkDL%2FBlinkDL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlinkDL%2FBlinkDL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlinkDL%2FBlinkDL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlinkDL%2FBlinkDL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlinkDL","download_url":"https://codeload.github.com/BlinkDL/BlinkDL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251659440,"owners_count":21623048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alphago","deep-learning","deep-neural-networks","deeplearning","neural-network","neural-networks"],"created_at":"2024-10-03T11:29:22.964Z","updated_at":"2025-04-30T07:24:52.246Z","avatar_url":"https://github.com/BlinkDL.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BlinkDL\n\nA minimalist deep learning library in Javascript using WebGL + asm.js. Runs in your browser. \n\nCurrently it is a proof-of-concept (inference only). Note: Convolution is buggy when memories overlap.\n\nThe WebGL backend is powered by weblas: https://github.com/waylonflinn/weblas.\n\n## Example\n\nhttps://withablink.coding.me/goPolicyNet/ : a weiqi (baduk, go) policy network in AlphaGo style:\n\n\u003cimg alt=\"board_image\" width=\"600\" src=\"https://user-images.githubusercontent.com/33809201/33018072-db52dd4e-ce2f-11e7-84e7-c20428e2ba8b.png\"\u003e\n\n    const N = 19;\n    const NN = N * N;\n    const nFeaturePlane = 8;\n    const nFilter = 128;\n\n    const x = new BlinkArray();\n    x.Init('weblas');\n    x.nChannel = nFeaturePlane;\n    x.data = new Float32Array(nFeaturePlane * NN);\n    for (var i = 0; i \u003c NN; i++)\n        x.data[5 * NN + i] = 1; // set feature plane for empty board\n    \n    // pre-act residual network with 6 residual blocks\n    const bak = new Float32Array(nFilter * NN);\n    x.Convolution(nFilter, 3);\n    x.CopyTo(bak);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.Add(bak).CopyTo(bak);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.Add(bak).CopyTo(bak);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.Add(bak).CopyTo(bak);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.Add(bak).CopyTo(bak);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.Add(bak).CopyTo(bak);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.BatchNorm().ReLU().Convolution(nFilter, 3);\n    x.Add(bak);\n    x.BatchNorm().ReLU().Convolution(1, 1).Softmax();\n\n\u003cimg alt=\"performance_image\" width=\"600\" src=\"https://user-images.githubusercontent.com/33809201/33012320-7659cb1e-ce1b-11e7-8c10-f63c56c1279d.png\"\u003e\n    \n## Usage\n\n    \u003cscript src='weblas.js' type='text/javascript'\u003e\u003c/script\u003e\n    \u003cscript src='BlinkDL.js' type='text/javascript'\u003e\u003c/script\u003e\n \n## Todo\n- [x] Convolution (3x3_pad_1 and 1x1), BatchNorm, ReLU, Softmax\n- [ ] Pooling layer\n- [ ] FC layer\n- [ ] Strided convolution\n- [ ] Transposed convolution\n- [ ] Webworker and async\n- [ ] Faster inference with weblas pipeline, WebGPU, WebAssembly\n- [ ] Memory manager\n- [ ] Training\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblinkdl%2Fblinkdl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblinkdl%2Fblinkdl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblinkdl%2Fblinkdl/lists"}