{"_id":"@andypai/neuroflow","_rev":"4-1ee28b13f6f533d3e3715bcee5b0c1e8","name":"@andypai/neuroflow","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.0-dev":{"name":"@andypai/neuroflow","version":"0.0.0-dev","keywords":["micrograd","autograd","neural","network"],"author":{"url":"https://andypai.me","name":"Andy Pai","email":"andy@r2pi.co"},"license":"MIT","_id":"@andypai/neuroflow@0.0.0-dev","maintainers":[{"name":"andypai.me","email":"andy@r2pi.co"}],"homepage":"https://github.com/abpai/neuroflow-js#readme","bugs":{"url":"https://github.com/abpai/neuroflow-js/issues"},"dist":{"shasum":"7c49a3b7eb13fe2aacc1ab1a16cea4edddc05a14","tarball":"https://registry.npmjs.org/@andypai/neuroflow/-/neuroflow-0.0.0-dev.tgz","fileCount":16,"integrity":"sha512-ia7pocqUyeiNnbWmJvd+c6d2OwNiR4x4fUPxhQhTk5VNKd04Kk1YE6UWZxzkQJOlSDSnPZL3oi00VJTdwJuGHA==","signatures":[{"sig":"MEYCIQD5islKuT7gHZPdmkEQFg0qka9euZvikQoPpNLyz4Y2tQIhAJerj+jtHflUPDW/FNDHvqVyWujf1A8KkxcRX7uFxKJl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20869},"main":"src/index.js","type":"module","husky":{"hooks":{"pre-push":"NO_TTY=true make test","pre-commit":"lint-staged"}},"engines":{"node":">=22"},"gitHead":"29bc84da593d947b4922a3d83c962089687ec3b0","scripts":{"fix":"npm run lint -- --fix","lint":"eslint .","test":"NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest","prepare":"husky install","test:watch":"npm run test -- --watch","postversion":"git push --follow-tags --no-verify"},"_npmUser":{"name":"andypai.me","email":"andy@r2pi.co"},"repository":{"url":"git+https://github.com/abpai/neuroflow-js.git","type":"git"},"_npmVersion":"10.7.0","description":"simple neural network library inspired by karpathy/micrograd and tfjs","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"22.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"^9.0.11","eslint":"8.46.0","prettier":"3.2.5","lint-staged":"15.2.2","eslint-plugin-import":"2.28.0","@tensorflow/tfjs-node":"4.19.0","eslint-config-prettier":"8.9.0","eslint-plugin-flowtype":"8.0.3","eslint-plugin-prettier":"5.0.0","eslint-config-airbnb-base":"15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/neuroflow_0.0.0-dev_1716516349716_0.22298338820072283","host":"s3://npm-registry-packages"}},"0.0.1-dev":{"name":"@andypai/neuroflow","version":"0.0.1-dev","keywords":["micrograd","autograd","neural","network"],"author":{"url":"https://andypai.me","name":"Andy Pai","email":"andy@r2pi.co"},"license":"MIT","_id":"@andypai/neuroflow@0.0.1-dev","maintainers":[{"name":"andypai.me","email":"andy@r2pi.co"}],"homepage":"https://github.com/abpai/neuroflow-js#readme","bugs":{"url":"https://github.com/abpai/neuroflow-js/issues"},"dist":{"shasum":"3424ad367301a6466b0d17380d2b140b5994c744","tarball":"https://registry.npmjs.org/@andypai/neuroflow/-/neuroflow-0.0.1-dev.tgz","fileCount":16,"integrity":"sha512-kQhCivZoAO4iHhcbyg3uDxm4RTOCB73pZRHvrSW2aClUW44OvCdjiBzqb4KksxkxS4saeicUCNjcdYQq2qRhVw==","signatures":[{"sig":"MEUCIBCDvtc4SUcSW5NTFKsPu6uYKUggkn/Ak1nEPJKMQb6CAiEAqOvx3MlQrycKnfAgtbyw1XL8YyDMi1Fh9cFOjvGCHNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21054},"main":"src/index.js","type":"module","husky":{"hooks":{"pre-push":"NO_TTY=true make test","pre-commit":"lint-staged"}},"engines":{"node":">=22"},"gitHead":"066a60f9d4a9686d29c6369c073c1ce9b84a1a83","scripts":{"fix":"npm run lint -- --fix","lint":"eslint .","test":"NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest","prepare":"husky install","test:watch":"npm run test -- --watch","postversion":"git push --follow-tags --no-verify"},"_npmUser":{"name":"andypai.me","email":"andy@r2pi.co"},"repository":{"url":"git+https://github.com/abpai/neuroflow-js.git","type":"git"},"_npmVersion":"10.7.0","description":"simple neural network library inspired by karpathy/micrograd and tfjs","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"22.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"^9.0.11","eslint":"8.46.0","prettier":"3.2.5","lint-staged":"15.2.2","eslint-plugin-import":"2.28.0","@tensorflow/tfjs-node":"4.19.0","eslint-config-prettier":"8.9.0","eslint-plugin-flowtype":"8.0.3","eslint-plugin-prettier":"5.0.0","eslint-config-airbnb-base":"15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/neuroflow_0.0.1-dev_1716516735965_0.6352901135744462","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"@andypai/neuroflow","version":"0.0.1","keywords":["micrograd","autograd","neural","network"],"author":{"url":"https://andypai.me","name":"Andy Pai","email":"andy@r2pi.co"},"license":"MIT","_id":"@andypai/neuroflow@0.0.1","maintainers":[{"name":"andypai.me","email":"andy@r2pi.co"}],"homepage":"https://github.com/abpai/neuroflow-js#readme","bugs":{"url":"https://github.com/abpai/neuroflow-js/issues"},"dist":{"shasum":"b14b91fdcc78f16a9309cc88b452d3821a1a83e4","tarball":"https://registry.npmjs.org/@andypai/neuroflow/-/neuroflow-0.0.1.tgz","fileCount":19,"integrity":"sha512-XgBxGZEoMAtcDQQmALPerfFVVdJIqLB987AK6IYpttX80/dybPrt/uqm5EhjyLuHMIUsviU7RPvjeJpDApAMLA==","signatures":[{"sig":"MEYCIQCWvxwz7xnvkRGmtpIkbjXlcQLu7CJ1jEQ3y8wBZ2roAAIhAJEkzTI+bNs9qAWm+MOyU8Uylq7vC62hUhCb/sByIdf7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32414},"main":"src/index.js","type":"module","husky":{"hooks":{"pre-push":"NO_TTY=true make test","pre-commit":"lint-staged"}},"engines":{"node":">=22"},"gitHead":"43b58718d8fab3011df502797d601e03905ba289","scripts":{"fix":"npm run lint -- --fix","lint":"eslint .","test":"NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest","prepare":"husky install","test:watch":"npm run test -- --watch","postversion":"git push --follow-tags --no-verify"},"_npmUser":{"name":"andypai.me","email":"andy@r2pi.co"},"repository":{"url":"git+https://github.com/abpai/neuroflow-js.git","type":"git"},"_npmVersion":"10.7.0","description":"simple neural network library inspired by karpathy/micrograd and tfjs","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"22.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"^9.0.11","eslint":"8.46.0","prettier":"3.2.5","lint-staged":"15.2.2","eslint-plugin-import":"2.28.0","@tensorflow/tfjs-node":"4.19.0","eslint-config-prettier":"8.9.0","eslint-plugin-flowtype":"8.0.3","eslint-plugin-prettier":"5.0.0","eslint-config-airbnb-base":"15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/neuroflow_0.0.1_1717336252026_0.02441937676719097","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@andypai/neuroflow","version":"0.0.2","keywords":["micrograd","autograd","neural","network"],"author":{"url":"https://andypai.me","name":"Andy Pai","email":"andy@r2pi.co"},"license":"MIT","_id":"@andypai/neuroflow@0.0.2","maintainers":[{"name":"andypai.me","email":"andy@r2pi.co"}],"homepage":"https://github.com/abpai/neuroflow-js#readme","bugs":{"url":"https://github.com/abpai/neuroflow-js/issues"},"dist":{"shasum":"f01021e430bad0b9d0585a5e506b35a6b841e367","tarball":"https://registry.npmjs.org/@andypai/neuroflow/-/neuroflow-0.0.2.tgz","fileCount":31,"integrity":"sha512-t5OqIpn7AOlS7yL2iqpFJuBkAxSTFT7dYJ8S7QQZbhw+MRVTWlokMjLFmKA+a+Z9eBoUjstyjGWQudafv/9Q3Q==","signatures":[{"sig":"MEYCIQD+8pSPo5q3emo4FczcBrN4+mgtlGSNQc5a8lerN+Q66AIhAM6/3jxyn7iIUAqlfs21qH2NvpdXVzR1MtfzFWgB9usI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6289902},"main":"src/index.js","type":"module","husky":{"hooks":{"pre-push":"NO_TTY=true make test","pre-commit":"lint-staged"}},"engines":{"node":">=22"},"gitHead":"c362de6252ff2afdfb78411b5fbb1926cdcd6268","scripts":{"fix":"npm run lint -- --fix","lint":"eslint .","test":"NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest","prepare":"husky install","test:watch":"npm run test -- --watch","postversion":"git push --follow-tags --no-verify"},"_npmUser":{"name":"andypai.me","email":"andy@r2pi.co"},"repository":{"url":"git+https://github.com/abpai/neuroflow-js.git","type":"git"},"_npmVersion":"10.7.0","description":"simple neural network library inspired by karpathy/micrograd and tfjs","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"22.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","husky":"^9.0.11","eslint":"8.46.0","prettier":"3.2.5","lint-staged":"15.2.2","eslint-plugin-import":"2.28.0","@tensorflow/tfjs-node":"4.19.0","eslint-config-prettier":"8.9.0","eslint-plugin-flowtype":"8.0.3","eslint-plugin-prettier":"5.0.0","eslint-config-airbnb-base":"15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/neuroflow_0.0.2_1717812346599_0.29571257321890654","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@andypai/neuroflow","version":"0.0.3","main":"src/index.js","type":"module","engines":{"node":">=22"},"author":{"name":"Andy Pai","email":"andy@r2pi.co","url":"https://andypai.me"},"license":"MIT","lint-staged":{"*.js":["eslint --fix","git add"]},"scripts":{"lint":"eslint .","fix":"npm run lint -- --fix","test":"NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest","test:watch":"npm run test -- --watch","postversion":"git push --follow-tags --no-verify","prepare":"husky install"},"devDependencies":{"@tensorflow/tfjs-node":"4.19.0","eslint":"8.46.0","eslint-config-airbnb-base":"15.0.0","eslint-config-prettier":"8.9.0","eslint-plugin-flowtype":"8.0.3","eslint-plugin-import":"2.28.0","eslint-plugin-prettier":"5.0.0","husky":"^9.0.11","jest":"29.7.0","lint-staged":"15.2.2","prettier":"3.2.5"},"husky":{"hooks":{"pre-commit":"lint-staged","pre-push":"NO_TTY=true make test"}},"description":"simple neural network library inspired by karpathy/micrograd and tfjs","repository":{"type":"git","url":"git+https://github.com/abpai/neuroflow-js.git"},"keywords":["micrograd","autograd","neural","network"],"bugs":{"url":"https://github.com/abpai/neuroflow-js/issues"},"homepage":"https://github.com/abpai/neuroflow-js#readme","_id":"@andypai/neuroflow@0.0.3","gitHead":"1c5b706148f0f91a7b41f438d4a538b2c1e3852a","_nodeVersion":"22.1.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-m5vv9rq5ybEa9+49suyXXTzDYCZEdiQEX7JBRc7mDUQapSfuw+s5IbCmkdF9wvSGE5MhSglUXJITYuO+2kwLxw==","shasum":"9c42c5be39b3b2f5f114af21a9d2cace7b28570c","tarball":"https://registry.npmjs.org/@andypai/neuroflow/-/neuroflow-0.0.3.tgz","fileCount":45,"unpackedSize":8098138,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBaHTGDeUgfwU8giqTm6fuAa/9vLT+LtdOzCBGfaJfWAiBRMcmO9x9IQ+BC0jbVOy1FXlFCeizRwPCG0ZrYGvi64A=="}]},"_npmUser":{"name":"andypai.me","email":"andy@r2pi.co"},"directories":{},"maintainers":[{"name":"andypai.me","email":"andy@r2pi.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neuroflow_0.0.3_1722659741504_0.5840621713146417"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-24T02:05:49.575Z","modified":"2024-08-03T04:35:41.911Z","0.0.0-dev":"2024-05-24T02:05:49.908Z","0.0.1-dev":"2024-05-24T02:12:16.090Z","0.0.1":"2024-06-02T13:50:52.173Z","0.0.2":"2024-06-08T02:05:46.775Z","0.0.3":"2024-08-03T04:35:41.719Z"},"bugs":{"url":"https://github.com/abpai/neuroflow-js/issues"},"author":{"name":"Andy Pai","email":"andy@r2pi.co","url":"https://andypai.me"},"license":"MIT","homepage":"https://github.com/abpai/neuroflow-js#readme","keywords":["micrograd","autograd","neural","network"],"repository":{"type":"git","url":"git+https://github.com/abpai/neuroflow-js.git"},"description":"simple neural network library inspired by karpathy/micrograd and tfjs","maintainers":[{"name":"andypai.me","email":"andy@r2pi.co"}],"readme":"# NeuroFlow\n\n[![NPM Version](https://img.shields.io/npm/v/@andypai/neuroflow.svg)](https://www.npmjs.com/package/@andypai/neuroflow)\n[![License](https://img.shields.io/npm/l/@andypai/neuroflow.svg)](https://github.com/yourusername/neuroflow/blob/main/LICENSE)\n\nNeuroFlow is a JavaScript library that allows you to implement neural network layers and architectures from scratch, similar to the [Linear](https://pytorch.org/docs/stable/generated/torch.nn.Linear.html#torch.nn.Linear) layer in PyTorch. It provides a foundation for reimplementing arbitrary parts of other libraries like PyTorch and TensorFlow, and includes a host module to execute the code as part of a neural network.\n\nThis project started as a port of [karpathy/micrograd](https://github.com/karpathy/micrograd) to JavaScript for educational purposes. The API has been tweaked to prioritize readability and understanding, making it suitable for learning and experimentation. However, it does not take performance considerations into account and is not recommended for production applications. For production use cases, consider using libraries like [TensorFlow.js](https://www.tensorflow.org/js/guide) instead.\n\nDemos: https://neuroflow.andypai.me/\n\n## Installation\n\nYou can install NeuroFlow using npm:\n\n```bash\nnpm install @andypai/neuroflow\n```\n\n## Basic Usage\n\nHere's an example of how you can train a simple neural network using the `Layer` and `Sequential` classes for a regression problem:\n\n```js\nimport { Sequential, Layer } from 'neuroflow'\n\n// Specify the architecture\nconst layer1 = new Layer({ numOfInputs: 3, numOfNeurons: 4 })\nconst layer2 = new Layer({ numOfInputs: 4, numOfNeurons: 3 })\nconst layer3 = new Layer({\n  numOfInputs: 3,\n  numOfNeurons: 1,\n  activation: 'linear',\n})\nconst model = new Sequential({\n  layers: [layer1, layer2, layer3],\n})\n\n// Training data\nconst xs = [\n  [2.0, 3.0, -1.0],\n  [3.0, -1.0, 0.5],\n  [0.5, 1.0, 1.0],\n  [1.0, 1.0, -1.0],\n]\nconst ys = [1.0, -1.0, -1.0, 1.0]\n\n// Training loop\nconst epochs = 15\nfor (let epoch = 0; epoch < epochs; epoch++) {\n  // Forward pass\n  const yPredictions = xs.map((x) => model.forward(x))\n\n  // Mean squared error (MSE) loss\n  const loss = ys.reduce(\n    (acc, yTarget, i) => yPredictions[i].sub(yTarget).pow(2).add(acc),\n    0,\n  )\n\n  // Backward pass\n  model.zeroGrad()\n  loss.backward()\n\n  // Update weights\n  const learningRate = 0.01\n  model.parameters().forEach((p) => {\n    p.data -= learningRate * p.grad\n  })\n\n  console.info(`Epoch: ${epoch + 1}, Loss: ${loss.data}`)\n}\n\n// Inference\nmodel.forward([2.0, 3.0, -1.0]) // Output: 1\n```\n\nThe full example is available [here](./src/examples/linear-regression.js)\n\n## Examples\n\n- [x] [Regression](./src/examples/linear-regression.js)\n- [x] [Binary Classification](./src/examples/binary-classification.js)\n- [x] [Multi-class Classification](./src/examples/multiclass-classification.js)\n- [x] [MNIST Classifier](./src/examples/mnist-classifier.js)\n- [x] [MNIST Autoencoder](./src/examples/mnist-autoencoder.js)\n\n## License\n\nThis project is licensed under the MIT License.\n","readmeFilename":"README.md"}