From 064ba402925c5f37483de5c5fe0897b23ee8e778 Mon Sep 17 00:00:00 2001 From: AIboy996 <2207854887@qq.com> Date: Wed, 17 Apr 2024 23:32:11 +0800 Subject: [PATCH] release on pypi --- dist/npnn-0.0.1-py3-none-any.whl | Bin 0 -> 11407 bytes dist/npnn-0.0.1.tar.gz | Bin 0 -> 10640 bytes pyproject.toml | 2 +- readme.md | 8 ++- requirements.txt | 2 +- src/npnn.egg-info/PKG-INFO | 68 +++++++++++++++++++++++++ src/npnn.egg-info/SOURCES.txt | 15 ++++++ src/npnn.egg-info/dependency_links.txt | 1 + src/npnn.egg-info/requires.txt | 4 ++ src/npnn.egg-info/top_level.txt | 1 + src/{ => npnn}/__init__.py | 0 src/{ => npnn}/autograd.py | 0 src/{ => npnn}/base.py | 0 src/{ => npnn}/functional.py | 0 src/{ => npnn}/nn.py | 0 src/{ => npnn}/optim.py | 0 src/{ => npnn}/test_autograd.py | 0 17 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 dist/npnn-0.0.1-py3-none-any.whl create mode 100644 dist/npnn-0.0.1.tar.gz create mode 100644 src/npnn.egg-info/PKG-INFO create mode 100644 src/npnn.egg-info/SOURCES.txt create mode 100644 src/npnn.egg-info/dependency_links.txt create mode 100644 src/npnn.egg-info/requires.txt create mode 100644 src/npnn.egg-info/top_level.txt rename src/{ => npnn}/__init__.py (100%) rename src/{ => npnn}/autograd.py (100%) rename src/{ => npnn}/base.py (100%) rename src/{ => npnn}/functional.py (100%) rename src/{ => npnn}/nn.py (100%) rename src/{ => npnn}/optim.py (100%) rename src/{ => npnn}/test_autograd.py (100%) diff --git a/dist/npnn-0.0.1-py3-none-any.whl b/dist/npnn-0.0.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..277696da694f9ce94f8714959810c0402a8d0d85 GIT binary patch literal 11407 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 Jfr)^F{VxZmCw2e; literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 2bc9c2e..ffae6e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ requires-python = ">=3.10" authors = [ { name="Yang Zhang", email="mail@yangzhang.site" }, ] -description = "Numpy Neural Network" +description = "NumPy Neural Network" readme = "readme.md" license = {file = "LICENSE"} keywords = ["numpy", "neural network", "machine learning", "autograd"] diff --git a/readme.md b/readme.md index dd82c39..ace0343 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,12 @@ -# NPNN +# [npnn](https://pypi.org/project/npnn/0.0.1/) > NumPy Neural Network +[![PyPI - Version](https://img.shields.io/pypi/v/npnn)](https://pypi.org/project/npnn/0.0.1/) +![PyPI - Implementation](https://img.shields.io/pypi/implementation/npnn) +![PyPI - Python Version](https://img.shields.io/pypi/pyversions/npnn) + + + ## What's `npnn`? > `npnn` is a a torch-like Python module for **gradient descent based machine learning** implemented with NumPy. diff --git a/requirements.txt b/requirements.txt index 34bf268..3532da8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -./npnn \ No newline at end of file +npnn \ No newline at end of file diff --git a/src/npnn.egg-info/PKG-INFO b/src/npnn.egg-info/PKG-INFO new file mode 100644 index 0000000..7c01d27 --- /dev/null +++ b/src/npnn.egg-info/PKG-INFO @@ -0,0 +1,68 @@ +Metadata-Version: 2.1 +Name: npnn +Version: 0.0.1 +Summary: NumPy Neural Network +Author-email: Yang Zhang +License: MIT License + + Copyright (c) 2024 Yang Zhang + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Project-URL: Homepage, https://github.com/AIboy996/npnn +Keywords: numpy,neural network,machine learning,autograd +Classifier: Development Status :: 3 - Alpha +Classifier: Intended Audience :: Developers +Classifier: Programming Language :: Python :: 3.10 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Requires-Python: >=3.10 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: numpy +Provides-Extra: cuda +Requires-Dist: cupy; extra == "cuda" + +# NPNN +> NumPy Neural Network + +## What's `npnn`? +> `npnn` is a a torch-like Python module for **gradient descent based machine learning** implemented with NumPy. + + +## Work with `npnn`! +> construct a image classification neural network with npnn + +BTW, this is a course assignment of *DATA620004, School of Data Science, Fudan University*. + +### Task +Construct and Train a neural network on [Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist) to do image classification. + +- Implement gradient backpropagation algorithm by hand,you can use `numpy` but **DO NOT** use `pytorch` or `tensorflow` to do autograd. + +- Submit source code including at least four parts: `model definition`, `training`, `parameters searching` and `testing`. + +### Implementation + +- `dataset.py`: provide Fashion MNIST dataset +- `model.py`: model definition +- `train.py`: model training +- `search.py`: parameters searching +- `test.py`: model testing +- `utils.py`: some misc function, such as `save_mode` diff --git a/src/npnn.egg-info/SOURCES.txt b/src/npnn.egg-info/SOURCES.txt new file mode 100644 index 0000000..53e0b7c --- /dev/null +++ b/src/npnn.egg-info/SOURCES.txt @@ -0,0 +1,15 @@ +LICENSE +pyproject.toml +readme.md +src/npnn/__init__.py +src/npnn/autograd.py +src/npnn/base.py +src/npnn/functional.py +src/npnn/nn.py +src/npnn/optim.py +src/npnn/test_autograd.py +src/npnn.egg-info/PKG-INFO +src/npnn.egg-info/SOURCES.txt +src/npnn.egg-info/dependency_links.txt +src/npnn.egg-info/requires.txt +src/npnn.egg-info/top_level.txt \ No newline at end of file diff --git a/src/npnn.egg-info/dependency_links.txt b/src/npnn.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/npnn.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/src/npnn.egg-info/requires.txt b/src/npnn.egg-info/requires.txt new file mode 100644 index 0000000..4596ca4 --- /dev/null +++ b/src/npnn.egg-info/requires.txt @@ -0,0 +1,4 @@ +numpy + +[cuda] +cupy diff --git a/src/npnn.egg-info/top_level.txt b/src/npnn.egg-info/top_level.txt new file mode 100644 index 0000000..5005dce --- /dev/null +++ b/src/npnn.egg-info/top_level.txt @@ -0,0 +1 @@ +npnn diff --git a/src/__init__.py b/src/npnn/__init__.py similarity index 100% rename from src/__init__.py rename to src/npnn/__init__.py diff --git a/src/autograd.py b/src/npnn/autograd.py similarity index 100% rename from src/autograd.py rename to src/npnn/autograd.py diff --git a/src/base.py b/src/npnn/base.py similarity index 100% rename from src/base.py rename to src/npnn/base.py diff --git a/src/functional.py b/src/npnn/functional.py similarity index 100% rename from src/functional.py rename to src/npnn/functional.py diff --git a/src/nn.py b/src/npnn/nn.py similarity index 100% rename from src/nn.py rename to src/npnn/nn.py diff --git a/src/optim.py b/src/npnn/optim.py similarity index 100% rename from src/optim.py rename to src/npnn/optim.py diff --git a/src/test_autograd.py b/src/npnn/test_autograd.py similarity index 100% rename from src/test_autograd.py rename to src/npnn/test_autograd.py