├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── compare_dent.py ├── compare_lr.py ├── compare_quad.py ├── data ├── ORL_dat │ ├── test │ │ ├── 1 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 2 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 3 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 4 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 5 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 6 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 7 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 8 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 9 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 10 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 11 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 12 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 13 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 14 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 15 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 16 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 17 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 18 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 19 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 20 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 21 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 22 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 23 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 24 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 25 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 26 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 27 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 28 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 29 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 30 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 31 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 32 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 33 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 34 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 35 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 36 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 37 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 38 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ ├── 39 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ │ └── 40 │ │ │ ├── 10.bmp │ │ │ ├── 2.bmp │ │ │ ├── 4.bmp │ │ │ ├── 6.bmp │ │ │ └── 8.bmp │ └── train │ │ ├── 1 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 2 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 3 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 4 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 5 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 6 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 7 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 8 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 9 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 10 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 11 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 12 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 13 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 14 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 15 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 16 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 17 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 18 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 19 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 20 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 21 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 22 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 23 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 24 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 25 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 26 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 27 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 28 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 29 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 30 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 31 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 32 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 33 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 34 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 35 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 36 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 37 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 38 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ ├── 39 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp │ │ └── 40 │ │ ├── 1.bmp │ │ ├── 3.bmp │ │ ├── 5.bmp │ │ ├── 7.bmp │ │ └── 9.bmp └── iris │ ├── iris_in.csv │ └── iris_out.csv ├── lab1.py ├── lab2.py ├── lab3.py ├── lab4.py ├── lab5.py ├── lazydl ├── __init__.py ├── decomp │ ├── __init__.py │ ├── lda.py │ └── pca.py ├── dr │ ├── __init__.py │ ├── data_loader.py │ └── data_reader.py ├── func │ ├── __init__.py │ └── funcitonal.py ├── nn │ ├── __init__.py │ ├── activations.py │ ├── linear.py │ ├── loss_fn.py │ └── module.py ├── optim │ ├── __init__.py │ └── optimizer.py └── preprocess │ ├── __init__.py │ └── maxminnorm.py ├── load_model.py ├── requirements.txt └── saved_model ├── lab1 ├── lab1.pkl └── report.png ├── lab2 ├── lab2.pkl └── report.png ├── lab3 ├── lab3.pkl └── report.png ├── lab4 └── lab4 │ ├── lab4.mm.pkl │ ├── lab4.pca.pkl │ ├── lab4.pkl │ └── report.png └── lab5 └── lab5 ├── lab5.lda.pkl └── lab5.pca.pkl /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/python 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=python 3 | 4 | ### Python ### 5 | # Byte-compiled / optimized / DLL files 6 | __pycache__/ 7 | *.py[cod] 8 | *$py.class 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Distribution / packaging 14 | .Python 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | wheels/ 27 | share/python-wheels/ 28 | *.egg-info/ 29 | .installed.cfg 30 | *.egg 31 | MANIFEST 32 | 33 | # PyInstaller 34 | # Usually these files are written by a python script from a template 35 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 36 | *.manifest 37 | *.spec 38 | 39 | # Installer logs 40 | pip-log.txt 41 | pip-delete-this-directory.txt 42 | 43 | # Unit test / coverage reports 44 | htmlcov/ 45 | .tox/ 46 | .nox/ 47 | .coverage 48 | .coverage.* 49 | .cache 50 | nosetests.xml 51 | coverage.xml 52 | *.cover 53 | *.py,cover 54 | .hypothesis/ 55 | .pytest_cache/ 56 | cover/ 57 | 58 | # Translations 59 | *.mo 60 | *.pot 61 | 62 | # Django stuff: 63 | *.log 64 | local_settings.py 65 | db.sqlite3 66 | db.sqlite3-journal 67 | 68 | # Flask stuff: 69 | instance/ 70 | .webassets-cache 71 | 72 | # Scrapy stuff: 73 | .scrapy 74 | 75 | # Sphinx documentation 76 | docs/_build/ 77 | 78 | # PyBuilder 79 | .pybuilder/ 80 | target/ 81 | 82 | # Jupyter Notebook 83 | .ipynb_checkpoints 84 | 85 | # IPython 86 | profile_default/ 87 | ipython_config.py 88 | 89 | # pyenv 90 | # For a library or package, you might want to ignore these files since the code is 91 | # intended to run in multiple environments; otherwise, check them in: 92 | # .python-version 93 | 94 | # pipenv 95 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 96 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 97 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 98 | # install all needed dependencies. 99 | #Pipfile.lock 100 | 101 | # poetry 102 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 103 | # This is especially recommended for binary packages to ensure reproducibility, and is more 104 | # commonly ignored for libraries. 105 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 106 | #poetry.lock 107 | 108 | # pdm 109 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 110 | #pdm.lock 111 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 112 | # in version control. 113 | # https://pdm.fming.dev/#use-with-ide 114 | .pdm.toml 115 | 116 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 117 | __pypackages__/ 118 | 119 | # Celery stuff 120 | celerybeat-schedule 121 | celerybeat.pid 122 | 123 | # SageMath parsed files 124 | *.sage.py 125 | 126 | # Environments 127 | .env 128 | .venv 129 | env/ 130 | venv/ 131 | ENV/ 132 | env.bak/ 133 | venv.bak/ 134 | 135 | # Spyder project settings 136 | .spyderproject 137 | .spyproject 138 | 139 | # Rope project settings 140 | .ropeproject 141 | 142 | # mkdocs documentation 143 | /site 144 | 145 | # mypy 146 | .mypy_cache/ 147 | .dmypy.json 148 | dmypy.json 149 | 150 | # Pyre type checker 151 | .pyre/ 152 | 153 | # pytype static type analyzer 154 | .pytype/ 155 | 156 | # Cython debug symbols 157 | cython_debug/ 158 | 159 | # PyCharm 160 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 161 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 162 | # and can be added to the global gitignore or merged into this file. For a more nuclear 163 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 164 | #.idea/ 165 | 166 | ### Python Patch ### 167 | # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration 168 | poetry.toml 169 | 170 | # ruff 171 | .ruff_cache/ 172 | 173 | # LSP config files 174 | pyrightconfig.json 175 | 176 | # End of https://www.toptal.com/developers/gitignore/api/python 177 | 178 | tests/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 lazywulf 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Machine Learning Practice Project 2 | 3 | 4 | ## Table of Contents 5 | - [Project Overview](#project-overview) 6 | - [Datasets](#datasets) 7 | - [Iris Dataset](#iris-dataset) 8 | - [ORL Dataset](#orl-dataset) 9 | - [Usage](#usage) 10 | - [Setup](#setup) 11 | - [Running Experiments](#running-experiments) 12 | - [Configuration](#configuration) 13 | - [Experiments](#experiments) 14 | - [Experiment 1: A naive approach to classification](#experiment-1-a-naive-approach-to-classification) 15 | - [Experiment 2: Improved regression](#experiment-2-improved-regression) 16 | - [Experiment 3: Good o' cross entropy](#experiment-3-good-o-cross-entropy) 17 | - [Experiment 4: PCA + network](#experiment-4-pca--network) 18 | - [Experiment 5: PCA + LDA](#experiment-5-pca--lda) 19 | - [Results](#results) 20 | 21 | 22 | ## Project Overview 23 | This project is a practice implementation of various machine learning components. It includes a simple framework designed to train neural networks. The project utilizes two datasets: the Iris dataset and the ORL (Olivetti Faces) dataset. This project aims to experiment with and review the fundamentals of machine learning and neural network training I've learned. 24 | 25 | Not only does this serve as a practice project for machine learning, I also tried my best to follow some good coding practices I've learned these years, such as regression testing, SOLID, writing documentation, etc. I would say this might be the conclusion of my past two years in CS. Looking back, I think I've improved a lot. At least I'm not creating gibberish that would break with a single touch (gibberish pro max?). 26 | 27 | If you find any mistakes or anything that I should improve, please let me know. It would help me a lot. 28 | 29 | 30 | ## Datasets 31 | ### Iris Dataset 32 | The Iris dataset is a well-known dataset in the machine learning community, containing 150 samples of iris flowers from three different species. Each sample has four features: sepal length, sepal width, petal length, and petal width. 33 | 34 | The data contains two csv files, the input (`./data/iris/iris_in.csv`) and the output (`./data/iris/iris_out.csv`). 35 | 36 | ### ORL Dataset 37 | The ORL (Olivetti Faces) dataset contains 400 grayscale images of 40 individuals. Each individual has 10 different images, and each image is 32x32 pixels. 38 | 39 | The data had been split into two folders, the training dataset and the testing one (50% each). 40 | You can put them back into one folder and use the `DataSplitter` class if you are planning to use another train/ test ratio. (P.S. I somehow got the dataset with them separated.) 41 | 42 | ## Usage 43 | ### Setup 44 | The required packages are in `./requirements.txt`. 45 | 46 | ### Running Experiments 47 | > I'm a bit lazy so no argparse. Sorry for the inconvenience. 48 | > I'll leave comments so it will be easier to modify. 49 | 50 | There are five experiments in total. 3 of them use iris, and the other 2 use ORL. They will be explained in [Experiments](#experiments). 51 | 52 | Iris Dataset Classification: 53 | ``` 54 | python ./lab1.py 55 | python ./lab2.py 56 | python ./lab3.py 57 | ``` 58 | ORL Dataset Classification: 59 | ``` 60 | python ./lab4.py 61 | python ./lab5.py 62 | ``` 63 | Load saved models: 64 | Please see `./load_model.py`. 65 | 66 | Optimize Path Comparison: 67 | ``` 68 | python ./compare_quad.py 69 | python ./compare_dent.py 70 | python ./compare_lr.py 71 | ``` 72 | 73 | ### Configuration 74 | > All the defualt configurations are in the code. 75 | 76 | 77 | ## Experiments 78 | You can run the code and see the results for yourself. It is quite consistent (except exp1 which is bs). 79 | Below is the description of the experiments and my thoughts on the results. 80 | 81 | > Iris 82 | ### Experiment 1: A naive approach to classification 83 | In this experiment, we use regression to solve this classification task. What we do here is to set the output node count to 1 and set thresholds for classification. We set the threshold to 1.5 and 2.5, hoping that the model can "miraculously" sort things out. 84 | 85 | > P.S Three intervals, three classes. This is stupid. :( 86 | 87 | After playing around with the model, I found that keeping the model linear is better than making it non-linear. Also, using only one layer yields the best result. (If linear regression suffices, do we need to create a neural network?) This is a good baseline model for us to start with. 88 | 89 | ### Experiment 2: Improved regression 90 | This time, we increase the output node count to 3, each representing a class. We encode the target using one-hot, and we use softmax as the last activation function. 91 | The goal here is to optimize the output to be as close as the encoded target matrix. We take the mean square loss as the criterion and optimize the model accordingly. 92 | 93 | The results are pretty good! But this will become an issue when the task becomes harder (I guess). 94 | I wasn't expecting it to do this good (hitting 85+% consistently). The model is doing regression, not classification, after all. 95 | I might try this on another dataset in the future. Quite interesting. 96 | 97 | ### Experiment 3: Good o' cross entropy 98 | Cross entropy. I don't think I need to explain it any further. 99 | 100 | The results aren't even surprising. There are some things worth mentioning though. 101 | The model used here is almost the same as in [Experiment 2: Improved regression](#experiment-2-improved-regression). The only difference is the last layer: this one doesn't use softmax (as softmax is "integrated" in the cross entropy loss class). It outputs the results from the last linear layer. By setting the same hypermeters for both experiments, we can compare how these two methods work. 102 | 103 | The difference isn't obvious, but we can still see that cross entropy works better. 104 | As I said in the previous experiment note, I think I might do this experiment on a larger dataset. 105 | 106 | > ORL 107 | ### Experiment 4: PCA + network 108 | The ORL dataset consists of 32x32 (don't ask me why, I know it should be something like 92x112, but the main goal of this resp is to implement machine learning components, not this). 109 | 110 | Here, we first flatten the image into a 1x1024 array. Then we apply PCA for dimension reduction, leaving only the essential components. 111 | After that, we normalize the data using max-min norm. 112 | Lastly, everything is fed to a cross entropy classifier, which sorts out everything. 113 | 114 | Welp. Without a baseline, I can't really say anything about it. 115 | But this is still something worth doing. It gives me a concrete view of what eigen-everything is. It's not just some abstract thoughts my linear algebra prof scribbles all over the board. I wish someone would show me this earlier. It would have helped a lot. 116 | 117 | ### Experiment 5: PCA + LDA 118 | Instead of taking the max-min norm and feeding it to a nn classifier, we apply LDA. 119 | The model predicts the output by taking euclidean distance between the class mean and the input "in the LDA space" (not sure if that is the correct term for this), and then finding the closest. 120 | 121 | I'm glad I didn't forget everything from linear algebra. 122 | 123 | 124 | > Optimize path comparison 125 | ### Experiment 6: Comparison on a quadratic surface 126 | This is actually just an experiment to test if plotting something like this is even possible with my framework. 127 | I didn't have this in mind when I was writing most of the components. Fortunately, it worked! 128 | 129 | It's straightforward when you run the script. Feel free to play around with the parameters (`main` in `./compare_quad.py`). 130 | 131 | ### Experiment 7: Comparison on a surface with dents 132 | This one is interesting. 133 | I made the surface so that there are two dents on it, but the dents are actually local minimums. 134 | I know it's cheating (because with a different set of parameters, the results vary), but it can clearly show the differences between optimizing algorithms. 135 | 136 | ### Experiment 8: Different learning rates 137 | This experiment shows how different learning rates effect the converging process. 138 | 139 | 140 | ## Results 141 | The results of experiment 1-5, including the saved model and the results, are saved in `./saved_model/`. 142 | For experiment 6-8, please run the respective scripts. -------------------------------------------------------------------------------- /compare_dent.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import autograd.numpy as agnp 4 | from autograd import grad 5 | from mpl_toolkits.mplot3d import Axes3D 6 | from matplotlib import cm 7 | from matplotlib import animation 8 | from copy import deepcopy 9 | from lazydl.nn import Module 10 | from lazydl.optim import SGD, Adam, RMSProp, MSGD, AdaGrad 11 | 12 | num_steps = 150 13 | 14 | 15 | class SimpleSurface(Module): 16 | def __init__(self, x_init: float = 0.0, y_init: float = 0.0): 17 | super().__init__() 18 | self._parameters['x'] = np.array([x_init]) 19 | self._parameters['y'] = np.array([y_init]) 20 | self._gradients['x'] = np.zeros_like(self._parameters['x']) 21 | self._gradients['y'] = np.zeros_like(self._parameters['y']) 22 | 23 | def forward(self, params): 24 | x, y = params 25 | z = 0.0 26 | 27 | def __f2(x, y, x_mean, y_mean, x_sig, y_sig, depth): 28 | normalizing = 1 / (2 * agnp.pi * x_sig * y_sig) 29 | x_exp = (-1 * agnp.square(x - x_mean)) / (2 * agnp.square(x_sig)) 30 | y_exp = (-1 * agnp.square(y - y_mean)) / (2 * agnp.square(y_sig)) 31 | return -depth * normalizing * agnp.exp(x_exp + y_exp) 32 | 33 | z += .008 * x - .008 * y 34 | z += __f2(x, y, x_mean=-1.0, y_mean=-1.0, x_sig=0.5, y_sig=0.5, depth=0.3) # Deep dent 35 | z += __f2(x, y, x_mean=1.0, y_mean=1.0, x_sig=0.5, y_sig=0.5, depth=0.1) # Shallow dent 36 | return z 37 | 38 | def backward(self, grad_out): 39 | x = self._parameters['x'] 40 | y = self._parameters['y'] 41 | params = np.array([x[0], y[0]]) 42 | gradients = grad(self.forward)(params) 43 | self._gradients['x'] = np.array([gradients[0]]) 44 | self._gradients['y'] = np.array([gradients[1]]) 45 | 46 | 47 | def init_surface_fig(): 48 | x = np.linspace(-5, 2, 1400) 49 | y = np.linspace(-2, 5, 1400) 50 | X, Y = np.meshgrid(x, y) 51 | Z = np.zeros_like(X) 52 | 53 | model = SimpleSurface() 54 | for i in range(X.shape[0]): 55 | for j in range(X.shape[1]): 56 | Z[i, j] = model.forward(np.array([X[i, j], Y[i, j]])) 57 | 58 | fig = plt.figure(figsize=(10, 10)) 59 | ax = fig.add_subplot(111, projection='3d') 60 | ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8) 61 | ax.view_init(elev=30, azim=135) 62 | ax.set_xlabel('X') 63 | ax.set_ylabel('Y') 64 | ax.set_zlabel('f(X, Y)') 65 | ax.set_title('Different Optimization Paths on a surface') 66 | 67 | return fig, ax 68 | 69 | 70 | def get_result_path(optim): 71 | model = optim.model 72 | params = np.array([model._parameters['x'][0], model._parameters['y'][0]]) 73 | path = [params.copy()] 74 | 75 | for _ in range(num_steps): 76 | grads = model.backward(params) 77 | optim.step() 78 | params = np.array([model._parameters['x'][0], model._parameters['y'][0]]) 79 | path.append(params.copy()) 80 | 81 | 82 | path = np.array(path) 83 | z_path = np.array([model.forward(p) for p in path]) 84 | 85 | return path, z_path 86 | 87 | 88 | def get_plot_animaiton(fig, ax, optim_config, paths, z_paths): 89 | lines = [ax.plot([], [], [], color=val[1], label=key)[0] for key, val in optim_config.items()] 90 | dots = [ax.plot([], [], [], marker='o', color=val[2])[0] for key, val in optim_config.items()] 91 | 92 | def init(): 93 | for line, dot in zip(lines, dots): 94 | line.set_data([], []) 95 | line.set_3d_properties([]) 96 | dot.set_data([], []) 97 | dot.set_3d_properties([]) 98 | return lines + dots 99 | 100 | def animate(i): 101 | for j, (line, dot, path, Z_path) in enumerate(zip(lines, dots, paths, z_paths)): 102 | line.set_data(path[:i+1, 0], path[:i+1, 1]) 103 | line.set_3d_properties(Z_path[:i+1]) 104 | dot.set_data([path[i, 0]], [path[i, 1]]) 105 | dot.set_3d_properties(Z_path[i]) 106 | return lines + dots 107 | 108 | ani = animation.FuncAnimation(fig, animate, init_func=init, frames=num_steps, interval=50, blit=True, repeat=True) 109 | return ani 110 | 111 | 112 | def main(): 113 | ## modify here 114 | init_p = [1.8, -1.7] 115 | LR = .05 116 | model = SimpleSurface(x_init=init_p[0], y_init=init_p[1]) 117 | 118 | optimizers = { 119 | 'SGD (LR * 10)': [SGD(deepcopy(model), lr=LR * 10), 'r', 'r'], 120 | 'Momentum (LR * 10)': [MSGD(deepcopy(model), lr=LR * 10), 'b', 'b'], 121 | 'AdaGrad': [AdaGrad(deepcopy(model), lr=LR), 'g', 'g'], 122 | 'RMSProp': [RMSProp(deepcopy(model), lr=LR), 'c', 'c'], 123 | 'Adam': [Adam(deepcopy(model), lr=LR), 'm', 'm'], 124 | } 125 | 126 | fig, ax = init_surface_fig() 127 | paths, z_paths = [], [] 128 | for optim in optimizers.values(): 129 | path, z_path = get_result_path(optim[0]) 130 | paths.append(path) 131 | z_paths.append(z_path) 132 | 133 | ani = get_plot_animaiton(fig, ax, optimizers, paths, z_paths) 134 | plt.legend() 135 | 136 | # ani.save('optimizers.gif', writer='ffmpeg', fps=30) 137 | 138 | plt.show() 139 | 140 | 141 | 142 | 143 | if __name__ == '__main__': 144 | main() 145 | -------------------------------------------------------------------------------- /compare_lr.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import autograd.numpy as agnp 4 | from autograd import grad 5 | from mpl_toolkits.mplot3d import Axes3D 6 | from matplotlib import cm 7 | from matplotlib import animation 8 | from copy import deepcopy 9 | from lazydl.nn import Module 10 | from lazydl.optim import SGD, Adam, RMSProp, MSGD, AdaGrad 11 | 12 | num_steps = 100 13 | 14 | 15 | class Hole(Module): 16 | def __init__(self, x_init: float = 0.0, y_init: float = 0.0): 17 | super().__init__() 18 | self._parameters['x'] = np.array([x_init]) 19 | self._parameters['y'] = np.array([y_init]) 20 | self._gradients['x'] = np.zeros_like(self._parameters['x']) 21 | self._gradients['y'] = np.zeros_like(self._parameters['y']) 22 | 23 | def forward(self, params): 24 | x, y = params 25 | z = 0.0 26 | 27 | def __f2(x, y, x_mean, y_mean, x_sig, y_sig, depth): 28 | normalizing = 1 / (2 * agnp.pi * x_sig * y_sig) 29 | x_exp = (-1 * agnp.square(x - x_mean)) / (2 * agnp.square(x_sig)) 30 | y_exp = (-1 * agnp.square(y - y_mean)) / (2 * agnp.square(y_sig)) 31 | return -depth * normalizing * agnp.exp(x_exp + y_exp) 32 | 33 | z = __f2(x, y, x_mean=-.0, y_mean=-.0, x_sig=0.8, y_sig=0.8, depth=.5) 34 | return z 35 | 36 | def backward(self, grad_out): 37 | x = self._parameters['x'] 38 | y = self._parameters['y'] 39 | params = np.array([x[0], y[0]]) 40 | gradients = grad(self.forward)(params) 41 | self._gradients['x'] = np.array([gradients[0]]) 42 | self._gradients['y'] = np.array([gradients[1]]) 43 | 44 | 45 | def init_surface_fig(): 46 | x = np.linspace(-1, 1, 200) 47 | y = np.linspace(-1, 1, 200) 48 | X, Y = np.meshgrid(x, y) 49 | Z = np.zeros_like(X) 50 | 51 | model = Hole() 52 | for i in range(X.shape[0]): 53 | for j in range(X.shape[1]): 54 | Z[i, j] = model.forward(np.array([X[i, j], Y[i, j]])) 55 | 56 | fig = plt.figure(figsize=(10, 10)) 57 | ax = fig.add_subplot(111, projection='3d') 58 | ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8) 59 | ax.view_init(elev=0, azim=-135) 60 | ax.set_xlabel('X') 61 | ax.set_ylabel('Y') 62 | ax.set_zlabel('f(X, Y)') 63 | ax.set_title('Different learning rate') 64 | 65 | return fig, ax 66 | 67 | 68 | def get_result_path(optim): 69 | model = optim.model 70 | params = np.array([model._parameters['x'][0], model._parameters['y'][0]]) 71 | path = [params.copy()] 72 | 73 | for _ in range(num_steps): 74 | grads = model.backward(params) 75 | optim.step() 76 | params = np.array([model._parameters['x'][0], model._parameters['y'][0]]) 77 | path.append(params.copy()) 78 | 79 | 80 | path = np.array(path) 81 | z_path = np.array([model.forward(p) for p in path]) 82 | 83 | return path, z_path 84 | 85 | 86 | def get_plot_animaiton(fig, ax, optim_config, paths, z_paths): 87 | lines = [ax.plot([], [], [], color=val[1], label=key)[0] for key, val in optim_config.items()] 88 | dots = [ax.plot([], [], [], marker='o', color=val[2])[0] for key, val in optim_config.items()] 89 | 90 | def init(): 91 | for line, dot in zip(lines, dots): 92 | line.set_data([], []) 93 | line.set_3d_properties([]) 94 | dot.set_data([], []) 95 | dot.set_3d_properties([]) 96 | return lines + dots 97 | 98 | def animate(i): 99 | for j, (line, dot, path, Z_path) in enumerate(zip(lines, dots, paths, z_paths)): 100 | line.set_data(path[:i+1, 0], path[:i+1, 1]) 101 | line.set_3d_properties(Z_path[:i+1]) 102 | dot.set_data([path[i, 0]], [path[i, 1]]) 103 | dot.set_3d_properties(Z_path[i]) 104 | return lines + dots 105 | 106 | ani = animation.FuncAnimation(fig, animate, init_func=init, frames=num_steps, interval=10, blit=True, repeat=True) 107 | return ani 108 | 109 | 110 | def main(): 111 | ## modify here 112 | init_p = [.8, -.8] 113 | LR = .01 114 | model = Hole(x_init=init_p[0], y_init=init_p[1]) 115 | 116 | optimizers = { 117 | 'SGD (LR = 1e-2)': [SGD(deepcopy(model), lr=LR * 1), 'g', 'g'], 118 | 'SGD (LR = 1e-1)': [SGD(deepcopy(model), lr=LR * 10), 'c', 'c'], 119 | 'SGD (LR = 1)': [SGD(deepcopy(model), lr=LR * 100), 'r', 'r'], 120 | 'SGD (LR = 10)': [SGD(deepcopy(model), lr=LR * 1000), 'm', 'm'], 121 | } 122 | 123 | fig, ax = init_surface_fig() 124 | paths, z_paths = [], [] 125 | for optim in optimizers.values(): 126 | path, z_path = get_result_path(optim[0]) 127 | paths.append(path) 128 | z_paths.append(z_path) 129 | 130 | ani = get_plot_animaiton(fig, ax, optimizers, paths, z_paths) 131 | plt.legend() 132 | 133 | # ani.save('optimizers.gif', writer='ffmpeg', fps=30) 134 | 135 | plt.show() 136 | 137 | 138 | 139 | 140 | if __name__ == '__main__': 141 | main() 142 | -------------------------------------------------------------------------------- /compare_quad.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import autograd.numpy as agnp 4 | from autograd import grad 5 | from mpl_toolkits.mplot3d import Axes3D 6 | from matplotlib import cm 7 | from matplotlib import animation 8 | from copy import deepcopy 9 | from lazydl.nn import Module 10 | from lazydl.optim import SGD, Adam, RMSProp, MSGD, AdaGrad 11 | 12 | num_steps = 300 13 | 14 | 15 | class QuadraticFunction(Module): 16 | def __init__(self, x_init: float = 4.0, y_init: float = 4.0, x_term: float = 1.0, y_term: float = 1.0): 17 | super().__init__() 18 | self._parameters['x'] = np.array([x_init]) 19 | self._parameters['y'] = np.array([y_init]) 20 | self._gradients['x'] = np.zeros_like(self._parameters['x']) 21 | self._gradients['y'] = np.zeros_like(self._parameters['y']) 22 | self.terms = [x_term, y_term] 23 | 24 | def forward(self, x): 25 | return self.terms[0] * x[0] ** 2 + self.terms[1] * x[1] ** 2 26 | 27 | def backward(self, grad_out): 28 | self._gradients['x'] = 2 * grad_out[0] * self.terms[0] 29 | self._gradients['y'] = 2 * grad_out[1] * self.terms[1] 30 | return np.array([self._gradients['x'], self._gradients['y']]) 31 | 32 | 33 | def init_quad_fig(x_term: float = 1.0, y_term: float = 1.0): 34 | x = np.linspace(-10, 10, 2000) 35 | y = np.linspace(-10, 10, 2000) 36 | X, Y = np.meshgrid(x, y) 37 | Z = x_term * X ** 2 + y_term * Y ** 2 38 | 39 | fig = plt.figure(figsize=(10, 10)) 40 | ax = fig.add_subplot(111, projection='3d') 41 | ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8) 42 | ax.view_init(elev=30, azim=-90) 43 | ax.set_xlabel('X') 44 | ax.set_ylabel('Y') 45 | ax.set_zlabel('f(X, Y)') 46 | ax.set_title('Different Optimization Paths on a surface') 47 | 48 | return fig, ax 49 | 50 | 51 | def get_result_path(optim): 52 | model = optim.model 53 | params = np.array([model._parameters['x'][0], model._parameters['y'][0]]) 54 | path = [params.copy()] 55 | 56 | for _ in range(num_steps): 57 | grads = model.backward(params) 58 | optim.step() 59 | params = np.array([model._parameters['x'][0], model._parameters['y'][0]]) 60 | path.append(params.copy()) 61 | 62 | 63 | path = np.array(path) 64 | z_path = np.array([model.forward(p) for p in path]) 65 | 66 | return path, z_path 67 | 68 | 69 | def get_plot_animaiton(fig, ax, optim_config, paths, z_paths): 70 | lines = [ax.plot([], [], [], color=val[1], label=key)[0] for key, val in optim_config.items()] 71 | dots = [ax.plot([], [], [], marker='o', color=val[2])[0] for key, val in optim_config.items()] 72 | 73 | def init(): 74 | for line, dot in zip(lines, dots): 75 | line.set_data([], []) 76 | line.set_3d_properties([]) 77 | dot.set_data([], []) 78 | dot.set_3d_properties([]) 79 | return lines + dots 80 | 81 | def animate(i): 82 | for j, (line, dot, path, Z_path) in enumerate(zip(lines, dots, paths, z_paths)): 83 | line.set_data(path[:i+1, 0], path[:i+1, 1]) 84 | line.set_3d_properties(Z_path[:i+1]) 85 | dot.set_data([path[i, 0]], [path[i, 1]]) 86 | dot.set_3d_properties(Z_path[i]) 87 | return lines + dots 88 | 89 | ani = animation.FuncAnimation(fig, animate, init_func=init, frames=num_steps, interval=50, blit=True, repeat=True) 90 | return ani 91 | 92 | 93 | def main(): 94 | ## modify here 95 | term = [4.0, 1.0] 96 | init_p = [9.0, 9.0] 97 | LR = .05 98 | model = QuadraticFunction(x_term=term[0], y_term=term[1], x_init=init_p[0], y_init=init_p[1]) 99 | 100 | optimizers = { 101 | 'SGD': [SGD(deepcopy(model), lr=LR), 'r', 'r'], 102 | 'Momentum': [MSGD(deepcopy(model), lr=LR), 'b', 'b'], 103 | 'AdaGrad': [AdaGrad(deepcopy(model), lr=LR), 'g', 'g'], 104 | 'RMSProp': [RMSProp(deepcopy(model), lr=LR), 'c', 'c'], 105 | 'Adam': [Adam(deepcopy(model), lr=LR), 'm', 'm'], 106 | } 107 | 108 | fig, ax = init_quad_fig(x_term=term[0], y_term=term[1]) 109 | paths, z_paths = [], [] 110 | for optim in optimizers.values(): 111 | path, z_path = get_result_path(optim[0]) 112 | paths.append(path) 113 | z_paths.append(z_path) 114 | 115 | ani = get_plot_animaiton(fig, ax, optimizers, paths, z_paths) 116 | plt.legend() 117 | 118 | # ani.save('optimizers.gif', writer='ffmpeg', fps=30) 119 | 120 | plt.show() 121 | 122 | 123 | if __name__ == '__main__': 124 | main() 125 | -------------------------------------------------------------------------------- /data/ORL_dat/test/1/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/1/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/1/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/1/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/1/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/1/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/1/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/1/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/1/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/1/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/10/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/10/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/10/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/10/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/10/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/10/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/10/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/10/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/10/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/10/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/11/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/11/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/11/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/11/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/11/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/11/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/11/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/11/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/11/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/11/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/12/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/12/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/12/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/12/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/12/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/12/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/12/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/12/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/12/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/12/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/13/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/13/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/13/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/13/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/13/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/13/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/13/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/13/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/13/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/13/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/14/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/14/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/14/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/14/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/14/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/14/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/14/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/14/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/14/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/14/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/15/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/15/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/15/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/15/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/15/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/15/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/15/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/15/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/15/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/15/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/16/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/16/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/16/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/16/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/16/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/16/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/16/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/16/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/16/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/16/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/17/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/17/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/17/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/17/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/17/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/17/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/17/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/17/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/17/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/17/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/18/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/18/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/18/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/18/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/18/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/18/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/18/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/18/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/18/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/18/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/19/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/19/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/19/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/19/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/19/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/19/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/19/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/19/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/19/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/19/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/2/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/2/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/2/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/2/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/2/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/2/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/2/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/2/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/2/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/2/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/20/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/20/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/20/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/20/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/20/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/20/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/20/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/20/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/20/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/20/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/21/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/21/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/21/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/21/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/21/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/21/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/21/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/21/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/21/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/21/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/22/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/22/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/22/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/22/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/22/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/22/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/22/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/22/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/22/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/22/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/23/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/23/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/23/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/23/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/23/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/23/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/23/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/23/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/23/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/23/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/24/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/24/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/24/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/24/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/24/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/24/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/24/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/24/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/24/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/24/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/25/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/25/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/25/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/25/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/25/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/25/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/25/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/25/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/25/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/25/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/26/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/26/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/26/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/26/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/26/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/26/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/26/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/26/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/26/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/26/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/27/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/27/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/27/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/27/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/27/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/27/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/27/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/27/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/27/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/27/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/28/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/28/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/28/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/28/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/28/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/28/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/28/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/28/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/28/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/28/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/29/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/29/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/29/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/29/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/29/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/29/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/29/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/29/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/29/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/29/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/3/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/3/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/3/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/3/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/3/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/3/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/3/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/3/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/3/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/3/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/30/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/30/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/30/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/30/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/30/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/30/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/30/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/30/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/30/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/30/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/31/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/31/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/31/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/31/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/31/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/31/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/31/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/31/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/31/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/31/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/32/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/32/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/32/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/32/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/32/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/32/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/32/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/32/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/32/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/32/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/33/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/33/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/33/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/33/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/33/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/33/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/33/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/33/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/33/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/33/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/34/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/34/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/34/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/34/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/34/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/34/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/34/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/34/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/34/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/34/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/35/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/35/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/35/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/35/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/35/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/35/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/35/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/35/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/35/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/35/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/36/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/36/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/36/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/36/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/36/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/36/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/36/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/36/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/36/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/36/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/37/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/37/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/37/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/37/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/37/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/37/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/37/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/37/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/37/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/37/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/38/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/38/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/38/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/38/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/38/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/38/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/38/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/38/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/38/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/38/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/39/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/39/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/39/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/39/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/39/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/39/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/39/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/39/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/39/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/39/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/4/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/4/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/4/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/4/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/4/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/4/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/4/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/4/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/4/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/4/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/40/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/40/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/40/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/40/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/40/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/40/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/40/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/40/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/40/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/40/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/5/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/5/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/5/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/5/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/5/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/5/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/5/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/5/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/5/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/5/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/6/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/6/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/6/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/6/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/6/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/6/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/6/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/6/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/6/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/6/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/7/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/7/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/7/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/7/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/7/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/7/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/7/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/7/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/7/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/7/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/8/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/8/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/8/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/8/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/8/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/8/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/8/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/8/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/8/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/8/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/9/10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/9/10.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/9/2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/9/2.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/9/4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/9/4.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/9/6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/9/6.bmp -------------------------------------------------------------------------------- /data/ORL_dat/test/9/8.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/test/9/8.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/1/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/1/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/1/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/1/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/1/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/1/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/1/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/1/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/1/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/1/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/10/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/10/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/10/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/10/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/10/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/10/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/10/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/10/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/10/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/10/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/11/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/11/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/11/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/11/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/11/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/11/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/11/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/11/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/11/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/11/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/12/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/12/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/12/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/12/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/12/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/12/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/12/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/12/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/12/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/12/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/13/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/13/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/13/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/13/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/13/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/13/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/13/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/13/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/13/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/13/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/14/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/14/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/14/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/14/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/14/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/14/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/14/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/14/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/14/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/14/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/15/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/15/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/15/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/15/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/15/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/15/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/15/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/15/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/15/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/15/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/16/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/16/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/16/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/16/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/16/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/16/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/16/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/16/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/16/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/16/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/17/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/17/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/17/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/17/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/17/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/17/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/17/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/17/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/17/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/17/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/18/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/18/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/18/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/18/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/18/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/18/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/18/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/18/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/18/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/18/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/19/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/19/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/19/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/19/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/19/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/19/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/19/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/19/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/19/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/19/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/2/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/2/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/2/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/2/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/2/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/2/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/2/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/2/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/2/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/2/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/20/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/20/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/20/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/20/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/20/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/20/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/20/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/20/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/20/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/20/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/21/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/21/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/21/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/21/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/21/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/21/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/21/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/21/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/21/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/21/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/22/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/22/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/22/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/22/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/22/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/22/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/22/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/22/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/22/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/22/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/23/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/23/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/23/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/23/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/23/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/23/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/23/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/23/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/23/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/23/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/24/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/24/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/24/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/24/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/24/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/24/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/24/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/24/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/24/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/24/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/25/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/25/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/25/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/25/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/25/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/25/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/25/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/25/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/25/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/25/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/26/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/26/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/26/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/26/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/26/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/26/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/26/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/26/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/26/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/26/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/27/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/27/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/27/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/27/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/27/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/27/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/27/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/27/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/27/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/27/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/28/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/28/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/28/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/28/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/28/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/28/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/28/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/28/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/28/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/28/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/29/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/29/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/29/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/29/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/29/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/29/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/29/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/29/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/29/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/29/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/3/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/3/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/3/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/3/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/3/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/3/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/3/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/3/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/3/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/3/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/30/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/30/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/30/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/30/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/30/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/30/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/30/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/30/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/30/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/30/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/31/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/31/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/31/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/31/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/31/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/31/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/31/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/31/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/31/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/31/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/32/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/32/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/32/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/32/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/32/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/32/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/32/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/32/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/32/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/32/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/33/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/33/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/33/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/33/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/33/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/33/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/33/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/33/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/33/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/33/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/34/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/34/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/34/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/34/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/34/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/34/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/34/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/34/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/34/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/34/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/35/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/35/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/35/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/35/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/35/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/35/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/35/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/35/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/35/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/35/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/36/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/36/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/36/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/36/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/36/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/36/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/36/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/36/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/36/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/36/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/37/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/37/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/37/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/37/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/37/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/37/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/37/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/37/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/37/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/37/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/38/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/38/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/38/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/38/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/38/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/38/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/38/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/38/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/38/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/38/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/39/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/39/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/39/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/39/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/39/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/39/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/39/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/39/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/39/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/39/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/4/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/4/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/4/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/4/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/4/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/4/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/4/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/4/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/4/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/4/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/40/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/40/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/40/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/40/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/40/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/40/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/40/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/40/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/40/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/40/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/5/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/5/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/5/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/5/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/5/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/5/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/5/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/5/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/5/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/5/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/6/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/6/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/6/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/6/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/6/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/6/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/6/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/6/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/6/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/6/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/7/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/7/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/7/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/7/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/7/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/7/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/7/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/7/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/7/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/7/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/8/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/8/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/8/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/8/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/8/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/8/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/8/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/8/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/8/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/8/9.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/9/1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/9/1.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/9/3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/9/3.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/9/5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/9/5.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/9/7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/9/7.bmp -------------------------------------------------------------------------------- /data/ORL_dat/train/9/9.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/data/ORL_dat/train/9/9.bmp -------------------------------------------------------------------------------- /data/iris/iris_in.csv: -------------------------------------------------------------------------------- 1 | 0.224,0.624,0.067,0.043 2 | 0.749,0.502,0.627,0.541 3 | 0.557,0.541,0.847,1 4 | 0.11,0.502,0.051,0.043 5 | 0.722,0.459,0.663,0.584 6 | 0.776,0.416,0.831,0.831 7 | 0.196,0.667,0.067,0.043 8 | 0.612,0.333,0.612,0.584 9 | 0.612,0.416,0.812,0.875 10 | 0.055,0.584,0.067,0.082 11 | 0.557,0.541,0.627,0.624 12 | 0.165,0.208,0.592,0.667 13 | 0.027,0.376,0.067,0.043 14 | 0.639,0.376,0.612,0.498 15 | 0.667,0.208,0.812,0.71 16 | 0.306,0.71,0.086,0.043 17 | 0.196,0,0.424,0.376 18 | 0.612,0.502,0.694,0.792 19 | 0.137,0.416,0.067,0 20 | 0.471,0.082,0.51,0.376 21 | 0.694,0.416,0.761,0.831 22 | 0.416,0.831,0.035,0.043 23 | 0.361,0.376,0.439,0.498 24 | 0.416,0.333,0.694,0.957 25 | 0.306,0.792,0.051,0.125 26 | 0.361,0.416,0.592,0.584 27 | 0.612,0.416,0.761,0.71 28 | 0.388,0.749,0.118,0.082 29 | 0.529,0.082,0.592,0.584 30 | 0.945,0.251,1,0.918 31 | 0.306,0.584,0.118,0.043 32 | 0.443,0.502,0.643,0.459 33 | 0.722,0.502,0.796,0.918 34 | 0.082,0.667,0,0.043 35 | 0.557,0.208,0.663,0.584 36 | 1,0.333,0.965,0.792 37 | 0.137,0.584,0.153,0.043 38 | 0.584,0.376,0.561,0.498 39 | 0.667,0.541,0.796,0.831 40 | 0.196,0.584,0.102,0.125 41 | 0.694,0.333,0.643,0.541 42 | 0.529,0.333,0.643,0.71 43 | 0.251,0.584,0.067,0.043 44 | 0.471,0.376,0.592,0.584 45 | 0.584,0.333,0.78,0.831 46 | 0.137,0.459,0.102,0.043 47 | 0.333,0.169,0.475,0.416 48 | 0.863,0.333,0.863,0.749 49 | 0.251,1,0.086,0 50 | 0.416,0.29,0.49,0.459 51 | 0.584,0.333,0.78,0.875 52 | 0.165,0.459,0.086,0.043 53 | 0.306,0.416,0.592,0.584 54 | 0.498,0.251,0.78,0.541 55 | 0.333,0.624,0.051,0.043 56 | 0.667,0.459,0.627,0.584 57 | 0.557,0.584,0.78,0.957 58 | 0.027,0.416,0.051,0.043 59 | 0.361,0.416,0.525,0.498 60 | 0.471,0.416,0.643,0.71 61 | 0.196,0.624,0.051,0.082 62 | 0.333,0.251,0.576,0.459 63 | 0.667,0.459,0.78,0.957 64 | 0,0.502,0.051,0.043 65 | 0.416,0.251,0.51,0.459 66 | 0.416,0.29,0.694,0.749 67 | 0.224,0.749,0.153,0.125 68 | 0.361,0.29,0.541,0.498 69 | 0.667,0.541,0.796,1 70 | 0.224,0.749,0.102,0.043 71 | 0.388,0.376,0.541,0.498 72 | 0.557,0.208,0.678,0.749 73 | 0.278,0.71,0.086,0.043 74 | 0.224,0.208,0.337,0.416 75 | 0.529,0.584,0.745,0.918 76 | 0.165,0.416,0.067,0.043 77 | 0.584,0.502,0.592,0.584 78 | 0.416,0.29,0.694,0.749 79 | 0.082,0.459,0.086,0.043 80 | 0.333,0.125,0.51,0.498 81 | 0.557,0.376,0.78,0.71 82 | 0.306,0.792,0.118,0.125 83 | 0.388,0.333,0.592,0.498 84 | 0.918,0.416,0.949,0.831 85 | 0.196,0.584,0.086,0.043 86 | 0.165,0.169,0.388,0.376 87 | 0.835,0.376,0.898,0.71 88 | 0.165,0.459,0.086,0 89 | 0.251,0.29,0.49,0.541 90 | 0.804,0.667,0.863,1 91 | 0.137,0.584,0.102,0.043 92 | 0.443,0.416,0.541,0.584 93 | 0.584,0.29,0.729,0.749 94 | 0,0.416,0.016,0 95 | 0.498,0.376,0.627,0.541 96 | 0.388,0.208,0.678,0.792 97 | 0.388,0.875,0.086,0.125 98 | 0.667,0.459,0.576,0.541 99 | 0.584,0.502,0.729,0.918 100 | 0.224,0.624,0.067,0.082 101 | 0.416,0.29,0.525,0.376 102 | 0.945,0.749,0.965,0.875 103 | 0.224,0.749,0.086,0.082 104 | 0.361,0.208,0.49,0.416 105 | 0.471,0.082,0.678,0.584 106 | 0.224,0.71,0.086,0.125 107 | 0.498,0.333,0.51,0.498 108 | 0.361,0.333,0.663,0.792 109 | 0.224,0.541,0.118,0.165 110 | 0.498,0.333,0.627,0.459 111 | 0.557,0.29,0.663,0.71 112 | 0.196,0.416,0.102,0.043 113 | 0.639,0.416,0.576,0.541 114 | 0.804,0.502,0.847,0.71 115 | 0.251,0.624,0.086,0.043 116 | 0.667,0.416,0.678,0.667 117 | 0.498,0.416,0.51,0.71 118 | 0.11,0.502,0.102,0.043 119 | 0.388,0.251,0.424,0.376 120 | 0.804,0.416,0.812,0.624 121 | 0.306,0.584,0.086,0.125 122 | 0.333,0.169,0.459,0.376 123 | 1,0.749,0.914,0.792 124 | 0.333,0.918,0.067,0.043 125 | 0.471,0.29,0.694,0.624 126 | 0.557,0.333,0.694,0.584 127 | 0.196,0.502,0.035,0.043 128 | 0.471,0.584,0.592,0.624 129 | 0.945,0.416,0.863,0.918 130 | 0.165,0.667,0.067,0 131 | 0.557,0.125,0.576,0.498 132 | 0.584,0.459,0.761,0.71 133 | 0.224,0.584,0.086,0.043 134 | 0.333,0.208,0.51,0.498 135 | 0.722,0.459,0.745,0.831 136 | 0.055,0.125,0.051,0.082 137 | 0.498,0.416,0.612,0.541 138 | 0.722,0.459,0.694,0.918 139 | 0.196,0.624,0.102,0.208 140 | 0.196,0.125,0.388,0.376 141 | 0.694,0.502,0.831,0.918 142 | 0.137,0.416,0.067,0.082 143 | 0.388,0.416,0.541,0.459 144 | 0.667,0.416,0.714,0.918 145 | 0.082,0.502,0.067,0.043 146 | 0.529,0.376,0.561,0.498 147 | 0.612,0.416,0.714,0.792 148 | 0.196,0.541,0.067,0.043 149 | 0.388,0.333,0.525,0.498 150 | 0.443,0.416,0.694,0.71 151 | -------------------------------------------------------------------------------- /data/iris/iris_out.csv: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 3 4 | 1 5 | 2 6 | 3 7 | 1 8 | 2 9 | 3 10 | 1 11 | 2 12 | 3 13 | 1 14 | 2 15 | 3 16 | 1 17 | 2 18 | 3 19 | 1 20 | 2 21 | 3 22 | 1 23 | 2 24 | 3 25 | 1 26 | 2 27 | 3 28 | 1 29 | 2 30 | 3 31 | 1 32 | 2 33 | 3 34 | 1 35 | 2 36 | 3 37 | 1 38 | 2 39 | 3 40 | 1 41 | 2 42 | 3 43 | 1 44 | 2 45 | 3 46 | 1 47 | 2 48 | 3 49 | 1 50 | 2 51 | 3 52 | 1 53 | 2 54 | 3 55 | 1 56 | 2 57 | 3 58 | 1 59 | 2 60 | 3 61 | 1 62 | 2 63 | 3 64 | 1 65 | 2 66 | 3 67 | 1 68 | 2 69 | 3 70 | 1 71 | 2 72 | 3 73 | 1 74 | 2 75 | 3 76 | 1 77 | 2 78 | 3 79 | 1 80 | 2 81 | 3 82 | 1 83 | 2 84 | 3 85 | 1 86 | 2 87 | 3 88 | 1 89 | 2 90 | 3 91 | 1 92 | 2 93 | 3 94 | 1 95 | 2 96 | 3 97 | 1 98 | 2 99 | 3 100 | 1 101 | 2 102 | 3 103 | 1 104 | 2 105 | 3 106 | 1 107 | 2 108 | 3 109 | 1 110 | 2 111 | 3 112 | 1 113 | 2 114 | 3 115 | 1 116 | 2 117 | 3 118 | 1 119 | 2 120 | 3 121 | 1 122 | 2 123 | 3 124 | 1 125 | 2 126 | 3 127 | 1 128 | 2 129 | 3 130 | 1 131 | 2 132 | 3 133 | 1 134 | 2 135 | 3 136 | 1 137 | 2 138 | 3 139 | 1 140 | 2 141 | 3 142 | 1 143 | 2 144 | 3 145 | 1 146 | 2 147 | 3 148 | 1 149 | 2 150 | 3 151 | -------------------------------------------------------------------------------- /lab1.py: -------------------------------------------------------------------------------- 1 | from lazydl import nn, dr, optim, f 2 | import numpy as np 3 | import pandas as pd 4 | from tqdm import tqdm 5 | import matplotlib.pyplot as plt 6 | 7 | import warnings 8 | warnings.filterwarnings("default") 9 | 10 | EPOCH = 20 11 | LR = .01 12 | BATCH_SIZE = 1 13 | PARAM_FILE_NAME = 'lab1.pkl' 14 | 15 | class Lab1(nn.Module): 16 | def __init__(self, zero_init=True): 17 | super().__init__() 18 | self._modules = [ 19 | nn.Linear(4, 1, zero_init=zero_init), 20 | ] 21 | 22 | def predict(self, x: np.ndarray): 23 | y = self(x) 24 | y[y <= 1.5] = 1 25 | y[np.abs(y - 2) < 0.5] = 2 26 | y[2.5 <= y] = 3 27 | return y 28 | 29 | 30 | def acc(test_loader, model): 31 | correct, total = 0, 0 32 | for x, y in test_loader: 33 | y_pred = model.predict(x) 34 | correct += np.sum(y_pred == y) 35 | total += len(y) 36 | accuracy = correct / total * 100 37 | return accuracy 38 | 39 | 40 | def main(): 41 | m = Lab1() 42 | data = dr.IRISDataset('./data/iris/iris_in.csv', './data/iris/iris_out.csv') 43 | train_loader, test_loader = dr.DataSplitter(data, BATCH_SIZE, shuffle=True, train_ratio=.5).get_loader() 44 | loss, opt = nn.RMSELoss(m), optim.SGD(m, LR) 45 | 46 | l_list, highest_acc = [], 0 47 | tracc_list = [] 48 | teacc_list = [] 49 | 50 | for e in tqdm(range(EPOCH)): 51 | tmp = [] 52 | for x, y in train_loader: 53 | y_pred = m(x) 54 | tmp.append(loss(y_pred, y)) 55 | opt.zero_grad() 56 | loss.backward() 57 | opt.step() 58 | 59 | l_list.append(sum(tmp) / len(tmp)) 60 | tmp.clear() 61 | 62 | aaa = acc(test_loader, m) 63 | tracc_list.append(acc(train_loader, m)) 64 | teacc_list.append(aaa) 65 | if aaa > highest_acc: 66 | highest_acc = aaa 67 | m.save_model(f'./saved_model/lab1/{PARAM_FILE_NAME}') 68 | 69 | print(f'Testing acc: {highest_acc}', end='') 70 | 71 | epochs = range(1, len(l_list) + 1) 72 | 73 | plt.figure(figsize=(12, 6)) 74 | plt.subplot(1, 2, 1) 75 | plt.plot(epochs, l_list, 'b-', label='Loss') 76 | plt.xlabel('Epochs') 77 | plt.ylabel('Loss') 78 | plt.title('Loss over Epochs') 79 | plt.legend() 80 | 81 | plt.subplot(1, 2, 2) 82 | plt.plot(epochs, tracc_list, 'g-', label='Training Accuracy') 83 | plt.plot(epochs, teacc_list, 'r-', label='Testing Accuracy') 84 | plt.xlabel('Epochs') 85 | plt.ylabel('Accuracy') 86 | plt.title('Accuracy over Epochs') 87 | plt.legend() 88 | 89 | plt.tight_layout() 90 | plt.show() 91 | 92 | 93 | if __name__ == '__main__': 94 | main() 95 | -------------------------------------------------------------------------------- /lab2.py: -------------------------------------------------------------------------------- 1 | from lazydl import nn, dr, optim 2 | from lazydl.func import f 3 | import numpy as np 4 | import pandas as pd 5 | from tqdm import tqdm 6 | import matplotlib.pyplot as plt 7 | 8 | import warnings 9 | warnings.filterwarnings("error") 10 | 11 | EPOCH = 100 12 | LR = .04 13 | BATCH_SIZE = 25 14 | PARAM_FILE_NAME = 'lab2.pkl' 15 | CAT = [0, 1, 2] 16 | 17 | class Lab2(nn.Module): 18 | def __init__(self, zero_init=False): 19 | super().__init__() 20 | self._modules = { 21 | 'l1': nn.Linear(4, 12, zero_init=zero_init), 22 | 'a1': nn.Sigmoid(), 23 | 'l2': nn.Linear(12, 3, zero_init=zero_init), 24 | 'a2': nn.Softmax(), 25 | } 26 | 27 | def predict(self, x: np.ndarray): 28 | return np.argmax(self(x), axis=1, keepdims=True) 29 | 30 | 31 | def acc(test_loader, model): 32 | correct, total = 0, 0 33 | for x, y in test_loader: 34 | y_pred = model.predict(x) 35 | correct += np.sum(y_pred == y) 36 | total += len(y) 37 | accuracy = correct / total * 100 38 | return accuracy 39 | 40 | 41 | def main(): 42 | m = Lab2() 43 | data = dr.IRISDataset('./data/iris/iris_in.csv', './data/iris/iris_out.csv') 44 | train_loader, test_loader = dr.DataSplitter(data, BATCH_SIZE, shuffle=True, train_ratio=.5).get_loader() 45 | loss, opt = nn.MSELoss(m), optim.Adam(m, LR) 46 | 47 | l_list, highest_acc = [], 0 48 | tracc_list = [] 49 | teacc_list = [] 50 | 51 | for e in tqdm(range(EPOCH)): 52 | tmp = [] 53 | for x, y in train_loader: 54 | y_pred = m(x) 55 | y = f.onehot(y, CAT) 56 | tmp.append(loss(y_pred, y)) 57 | opt.zero_grad() 58 | loss.backward() 59 | opt.step() 60 | 61 | l_list.append(sum(tmp) / len(tmp)) 62 | tmp.clear() 63 | 64 | aaa = acc(test_loader, m) 65 | tracc_list.append(acc(train_loader, m)) 66 | teacc_list.append(aaa) 67 | if aaa > highest_acc: 68 | highest_acc = aaa 69 | m.save_model(f'./saved_model/lab2/{PARAM_FILE_NAME}') 70 | 71 | print(f'Testing acc: {highest_acc}') 72 | 73 | epochs = range(1, len(l_list) + 1) 74 | 75 | plt.figure(figsize=(12, 6)) 76 | plt.subplot(1, 2, 1) 77 | plt.plot(epochs, l_list, 'bo-', label='Loss') 78 | plt.xlabel('Epochs') 79 | plt.ylabel('Loss') 80 | plt.title('Loss over Epochs') 81 | plt.legend() 82 | 83 | plt.subplot(1, 2, 2) 84 | plt.plot(epochs, tracc_list, 'go-', label='Training Accuracy') 85 | plt.plot(epochs, teacc_list, 'ro-', label='Testing Accuracy') 86 | plt.xlabel('Epochs') 87 | plt.ylabel('Accuracy') 88 | plt.title('Accuracy over Epochs') 89 | plt.legend() 90 | 91 | plt.tight_layout() 92 | plt.show() 93 | 94 | 95 | if __name__ == '__main__': 96 | main() 97 | -------------------------------------------------------------------------------- /lab3.py: -------------------------------------------------------------------------------- 1 | from lazydl import nn, dr, optim, f 2 | import numpy as np 3 | import pandas as pd 4 | from tqdm import tqdm 5 | import matplotlib.pyplot as plt 6 | 7 | import warnings 8 | warnings.filterwarnings("error") 9 | 10 | EPOCH = 100 11 | LR = .04 12 | BATCH_SIZE = 25 13 | PARAM_FILE_NAME = 'lab3.pkl' 14 | 15 | class Lab3(nn.Module): 16 | def __init__(self): 17 | super().__init__() 18 | self._modules = [ 19 | nn.Linear(4, 12), 20 | nn.Sigmoid(), 21 | nn.Linear(12, 3), 22 | ] 23 | 24 | def predict(self, x: np.ndarray): 25 | return np.argmax(f.softmax(self(x)), axis=1, keepdims=True) 26 | 27 | 28 | def acc(test_loader, model): 29 | correct, total = 0, 0 30 | for x, y in test_loader: 31 | y_pred = model.predict(x) 32 | correct += np.sum(y_pred == y) 33 | total += len(y) 34 | accuracy = correct / total * 100 35 | return accuracy 36 | 37 | 38 | def main(): 39 | m = Lab3() 40 | data = dr.IRISDataset('./data/iris/iris_in.csv', './data/iris/iris_out.csv') 41 | train_loader, test_loader = dr.DataSplitter(data, BATCH_SIZE, shuffle=True, train_ratio=.8).get_loader() 42 | loss, opt = nn.CrossEntropyLoss(m), optim.Adam(m, LR) 43 | 44 | l_list, highest_acc = [], 0 45 | tracc_list = [] 46 | teacc_list = [] 47 | 48 | for e in tqdm(range(EPOCH)): 49 | tmp = [] 50 | for x, y in train_loader: 51 | y_pred = m(x) 52 | tmp.append(loss(y_pred, y)) 53 | opt.zero_grad() 54 | loss.backward() 55 | opt.step() 56 | 57 | l_list.append(sum(tmp) / len(tmp)) 58 | tmp.clear() 59 | 60 | aaa = acc(test_loader, m) 61 | tracc_list.append(acc(train_loader, m)) 62 | teacc_list.append(aaa) 63 | if aaa > highest_acc: 64 | highest_acc = aaa 65 | m.save_model(f'./saved_model/lab3/{PARAM_FILE_NAME}') 66 | 67 | print(f'Testing acc: {highest_acc}%') 68 | 69 | 70 | epochs = range(1, len(l_list) + 1) 71 | 72 | plt.figure(figsize=(12, 6)) 73 | plt.subplot(1, 2, 1) 74 | plt.plot(epochs, l_list, 'bo-', label='Loss') 75 | plt.xlabel('Epochs') 76 | plt.ylabel('Loss') 77 | plt.title('Loss over Epochs') 78 | plt.legend() 79 | 80 | plt.subplot(1, 2, 2) 81 | plt.plot(epochs, tracc_list, 'go-', label='Training Accuracy') 82 | plt.plot(epochs, teacc_list, 'ro-', label='Testing Accuracy') 83 | plt.xlabel('Epochs') 84 | plt.ylabel('Accuracy') 85 | plt.title('Accuracy over Epochs') 86 | plt.legend() 87 | 88 | plt.tight_layout() 89 | plt.show() 90 | 91 | 92 | if __name__ == '__main__': 93 | main() 94 | -------------------------------------------------------------------------------- /lab4.py: -------------------------------------------------------------------------------- 1 | from lazydl import * 2 | import numpy as np 3 | import pandas as pd 4 | from tqdm import tqdm 5 | import matplotlib.pyplot as plt 6 | from tqdm import tqdm 7 | import os 8 | 9 | import warnings 10 | warnings.filterwarnings("error") 11 | 12 | 13 | EPOCH = 12500 14 | N_COMP = .97 15 | BS = 64 16 | LR = 1e-3 17 | PARAM_FILE_NAME = 'lab4' 18 | 19 | DATA_PATH = './data/ORL_dat' 20 | 21 | 22 | class Lab4(nn.Module): 23 | def __init__(self, comp_count): 24 | super().__init__() 25 | self._modules = [ 26 | nn.Linear(comp_count, 128), 27 | nn.Sigmoid(), 28 | nn.Linear(128, 128), 29 | nn.Sigmoid(), 30 | nn.Linear(128, 40), 31 | ] 32 | 33 | def predict(self, x: np.ndarray): 34 | return np.argmax(f.softmax(self(x)), axis=1, keepdims=True) 35 | 36 | def predict_prop(self, x: np.ndarray): 37 | return f.softmax(self(x), axis=1) 38 | 39 | 40 | def top_n_acc(test_loader, model, n=1): 41 | correct, total = 0, 0 42 | for x, y in test_loader: 43 | y_pred_probs = model.predict_prop(x) 44 | 45 | top_n_preds = np.argsort(y_pred_probs, axis=1)[:, -n:] 46 | 47 | correct += np.sum([y[i] in top_n_preds[i] for i in range(len(y))]) 48 | total += len(y) 49 | 50 | accuracy = correct / total * 100 51 | return accuracy 52 | 53 | 54 | def create_dir(dir_path): 55 | if not os.path.exists(dir_path): 56 | os.makedirs(dir_path) 57 | 58 | 59 | def transform(): 60 | train_data, test_data = dr.ORLDataset(f'{DATA_PATH}/train'), dr.ORLDataset(f'{DATA_PATH}/test') 61 | 62 | pca = decomp.PCA(N_COMP).fit(train_data.labels) 63 | print(f'Component count: {pca.component_count}') 64 | print(f'Variance explained: {np.sum(pca.explained_variance_ratio): .4f}%') 65 | trdata = pca.transform(train_data.labels) 66 | tedata = pca.transform(test_data.labels) 67 | mm = preprocess.MaxMinNorm().fit(trdata) 68 | trdata = mm.transform(trdata) 69 | tedata = mm.transform(tedata) 70 | 71 | pca.save_model(f'./saved_model/lab4/{PARAM_FILE_NAME}/{PARAM_FILE_NAME}.pca.pkl') 72 | mm.save_model(f'./saved_model/lab4/{PARAM_FILE_NAME}/{PARAM_FILE_NAME}.mm.pkl') 73 | 74 | train_data.labels = pd.DataFrame(trdata) 75 | test_data.labels = pd.DataFrame(tedata) 76 | 77 | return train_data, test_data, pca.component_count 78 | 79 | 80 | def train(train_data, test_data, comp_count): 81 | m = Lab4(comp_count) 82 | train_loader, test_loader = dr.DataLoader(train_data, batch_size=BS, shuffle=True), dr.DataLoader(test_data, shuffle=True) 83 | loss, opt = nn.CrossEntropyLoss(m), optim.Adam(m, LR) 84 | l_list, highest_acc = [], 0 85 | tracc_list = [] 86 | teacc_list_top_1, teacc_list_top_3 = [], [] 87 | 88 | 89 | for e in tqdm(range(EPOCH)): 90 | tmp = [] 91 | for x, y in train_loader: 92 | y_pred = m(x) 93 | tmp.append(loss(y_pred, y)) 94 | opt.zero_grad() 95 | loss.backward() 96 | opt.step() 97 | 98 | l_list.append(sum(tmp) / len(tmp)) 99 | tmp.clear() 100 | 101 | aaa = top_n_acc(test_loader, m) 102 | teacc_list_top_3.append(top_n_acc(test_loader, m, 3)) 103 | tracc_list.append(top_n_acc(train_loader, m, 3)) 104 | teacc_list_top_1.append(aaa) 105 | if aaa > highest_acc: 106 | highest_acc = aaa 107 | m.save_model(f'./saved_model/lab4/{PARAM_FILE_NAME}/{PARAM_FILE_NAME}.pkl') 108 | 109 | print(f'Testing acc (Top-1): {highest_acc}%') 110 | 111 | 112 | epochs = range(1, len(l_list) + 1) 113 | 114 | plt.figure(figsize=(12, 6)) 115 | plt.subplot(1, 2, 1) 116 | plt.plot(epochs, l_list, 'b-', label='Loss') 117 | plt.xlabel('Epochs') 118 | plt.ylabel('Loss') 119 | plt.title('Loss over Epochs') 120 | plt.legend() 121 | 122 | plt.subplot(1, 2, 2) 123 | plt.plot(epochs, tracc_list, 'g-', label='Training Accuracy') 124 | plt.plot(epochs, teacc_list_top_3, 'r-', label='Top-3 Accuracy') 125 | plt.plot(epochs, teacc_list_top_1, 'b-', label='Top-1 Accuracy') 126 | plt.xlabel('Epochs') 127 | plt.ylabel('Accuracy') 128 | plt.title('Accuracy over Epochs') 129 | plt.legend() 130 | 131 | plt.tight_layout() 132 | plt.show() 133 | 134 | 135 | def main(): 136 | create_dir(f'./saved_model/lab4/{PARAM_FILE_NAME}/') 137 | a, b, c = transform() 138 | train(a, b, c) 139 | 140 | 141 | if __name__ == '__main__': 142 | main() 143 | -------------------------------------------------------------------------------- /lab5.py: -------------------------------------------------------------------------------- 1 | from lazydl import * 2 | import numpy as np 3 | import pandas as pd 4 | from tqdm import tqdm 5 | import matplotlib.pyplot as plt 6 | from tqdm import tqdm 7 | import os 8 | 9 | import warnings 10 | warnings.filterwarnings("error") 11 | 12 | 13 | PCA_N_COMP = .97 14 | LDA_N_COMP = 18 15 | PARAM_FILE_NAME = 'lab5' 16 | DATA_PATH = './data/ORL_dat' 17 | 18 | 19 | def acc(y_pred, y_true): 20 | return np.average(np.where(y_pred == y_true, 1, 0)) 21 | 22 | 23 | def create_dir(dir_path): 24 | if not os.path.exists(dir_path): 25 | os.makedirs(dir_path) 26 | 27 | 28 | def main(): 29 | create_dir(f'./saved_model/lab5/{PARAM_FILE_NAME}/') 30 | train_data, test_data = dr.ORLDataset(f'{DATA_PATH}/train'), dr.ORLDataset(f'{DATA_PATH}/test') 31 | 32 | pca = decomp.PCA(PCA_N_COMP).fit(train_data.labels) 33 | trdata = pca.transform(train_data.labels) 34 | tedata = pca.transform(test_data.labels) 35 | lda = decomp.LDA(LDA_N_COMP).fit(trdata, train_data.targets) 36 | y_pred = lda.predict(tedata) 37 | 38 | print(f'Accuracy: {acc(y_pred, np.asarray(test_data.targets).flatten()) * 100: .2f}%') 39 | 40 | pca.save_model(f'./saved_model/lab5/{PARAM_FILE_NAME}/{PARAM_FILE_NAME}.pca.pkl') 41 | lda.save_model(f'./saved_model/lab5/{PARAM_FILE_NAME}/{PARAM_FILE_NAME}.lda.pkl') 42 | 43 | 44 | if __name__ == '__main__': 45 | main() 46 | -------------------------------------------------------------------------------- /lazydl/__init__.py: -------------------------------------------------------------------------------- 1 | from .decomp import PCA, LDA 2 | from .dr import Dataset, DataLoader, DataSplitter, IRISDataset, ORLDataset 3 | from .func import f 4 | from .nn import Module, SimpleLoss, MSELoss, RMSELoss, CrossEntropyLoss, Linear, ReLU, Softmax, LogSigmoid, Sigmoid 5 | from .optim import SGD, Adam, MSGD, AdaGrad, RMSProp 6 | from .preprocess import MaxMinNorm 7 | 8 | -------------------------------------------------------------------------------- /lazydl/decomp/__init__.py: -------------------------------------------------------------------------------- 1 | from .pca import PCA 2 | from .lda import LDA -------------------------------------------------------------------------------- /lazydl/decomp/lda.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | import numpy as np 3 | from numpy.linalg import svd 4 | import pickle 5 | 6 | 7 | class LDA: 8 | def __init__(self, n_comp: int = 1): 9 | self.component_count = n_comp 10 | self.scalings: np.ndarray = None 11 | 12 | def fit(self, X: np.ndarray, T: np.ndarray): 13 | T = np.asarray(T).flatten() 14 | 15 | unique_cls = np.unique(T) 16 | feat_cnt = X.shape[1] 17 | 18 | mean_all = np.mean(X, axis=0) 19 | sw = np.zeros((feat_cnt, feat_cnt)) 20 | sb = np.zeros((feat_cnt, feat_cnt)) 21 | 22 | for cls in unique_cls: 23 | sample_from_cls = X[T == cls] 24 | mean_cls = np.mean(sample_from_cls, axis=0) 25 | 26 | sw += np.dot((sample_from_cls - mean_cls).T, (sample_from_cls - mean_cls)) 27 | 28 | cls_sample_count = sample_from_cls.shape[0] 29 | mean_diff = (mean_cls - mean_all).reshape((-1, 1)) 30 | sb += cls_sample_count * np.dot(mean_diff, mean_diff.T) 31 | 32 | sw_inv = np.linalg.inv(sw) 33 | U, S, Vt= svd(sw_inv @ sb) 34 | U, Vt = self._svd_flip(U, Vt) 35 | self.scalings = U[:, : self.component_count] 36 | self.means = {cls: np.mean(X[T == cls], axis=0) for cls in unique_cls} 37 | return self 38 | 39 | def fit_transform(self, X, T): 40 | self.fit(X, T) 41 | return np.dot(X, self.scalings) 42 | 43 | def transform(self, X): 44 | return np.dot(X, self.scalings) 45 | 46 | def _svd_flip(self, u, v): 47 | max_abs_cols = np.argmax(np.abs(u), axis=0) 48 | signs = -np.sign(u[max_abs_cols, range(u.shape[1])]) 49 | u *= signs 50 | v *= signs[:, np.newaxis] 51 | return u, v 52 | 53 | def predict(self, X: np.ndarray): 54 | X_transformed = self.transform(X) 55 | distances = [] 56 | 57 | # for cls, mean in self.means.items(): 58 | # mean_transformed = mean @ self.scalings 59 | # distances.append(np.linalg.norm(X_transformed - mean_transformed, axis=1)) 60 | # distances = np.array(distances) 61 | # predictions = np.argmin(distances, axis=0) 62 | 63 | for cls, mean in self.means.items(): 64 | mean_transformed = mean @ self.scalings 65 | distance = np.sqrt(((X_transformed - mean_transformed) ** 2).sum(axis=1)) 66 | distances.append(distance) 67 | distances = np.array(distances) 68 | predictions = [min(list(range(len(distances))), key=lambda x: d[x]) for d in distances.T] 69 | 70 | unique_classes = list(self.means.keys()) 71 | predicted_labels = np.array([unique_classes[p] for p in predictions]) 72 | return predicted_labels 73 | 74 | def save_model(self, save_file: str) -> None: 75 | with open(save_file, 'wb') as outp: 76 | pickle.dump(self, outp, pickle.HIGHEST_PROTOCOL) 77 | 78 | @staticmethod 79 | def load_model(param_file: str) -> LDA: 80 | with open(param_file, 'rb') as inp: 81 | return pickle.load(inp) 82 | 83 | 84 | -------------------------------------------------------------------------------- /lazydl/decomp/pca.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | import numpy as np 3 | from numpy.linalg import svd 4 | import pickle 5 | from typing import Union 6 | 7 | 8 | class PCA: 9 | def __init__(self, n_components: Union[int, float] = 1): 10 | self._n_comp = n_components 11 | self.component_count: int = ... 12 | self.sample_count: int = ... 13 | self.feature_count: int = ... 14 | self.covariance: np.ndarray = ... 15 | self.components: np.ndarray = ... 16 | self.singular_values: np.ndarray = ... 17 | self.explained_variance: np.ndarray = ... 18 | self.explained_variance_ratio: np.ndarray = ... 19 | 20 | def fit(self, X: np.ndarray): 21 | self.sample_count = X.shape[0] 22 | self.feature_count = X.shape[1] 23 | 24 | """ 25 | Steps to do PCA 26 | 1. Move data and make the mean == 0 27 | 2. Calculate the covariance matrix 28 | 3. Get eigenvector and eigenvalue of the covariance matrix 29 | 4. Project data onto PCs 30 | 31 | Because we do SVD using the convariance matrix, not the data, so the singular value we get are the explained variances. 32 | (Unlike what sklearn did in their library: https://github.com/scikit-learn/scikit-learn/blob/0fb307bf39bbdacd6ed713c00724f8f871d60370/sklearn/decomposition/_pca.py#L430) 33 | 34 | So, to retrieve the sigular values of the original data, we'll need to reverse what they did. 35 | 36 | $C = (1/n) X^T X = (1/n) \cdot (V \Sigma U^T)(U \Sigma V^T) = V ((1/n) \cdot \Sigma^2) V^T$ 37 | """ 38 | 39 | self.covariance = np.cov(X, rowvar=False) 40 | V, sing, Vt = svd(self.covariance) 41 | 42 | ## why this? 43 | ## we need to make the result of svd deterministic 44 | V, Vt = self._svd_flip(V, Vt) 45 | 46 | self.explained_variance = sing 47 | self.explained_variance_ratio = self.explained_variance / np.sum(self.explained_variance) 48 | 49 | if isinstance(self._n_comp, int): 50 | self.component_count = self._n_comp 51 | elif isinstance(self._n_comp, float): 52 | n, c = 0, 0 53 | for p in self.explained_variance_ratio: 54 | c += p 55 | n += 1 56 | if c > self._n_comp: 57 | break 58 | self.component_count = n 59 | else: 60 | raise TypeError(f'Expect type "int" or "float", got {self._n_comp.__class__}') 61 | 62 | self.explained_variance = self.explained_variance[:self.component_count] 63 | self.explained_variance_ratio = self.explained_variance_ratio[:self.component_count] 64 | self.singular_values = np.sqrt(sing * (self.sample_count - 1))[:self.component_count] 65 | self.components = V[:, :self.component_count] 66 | 67 | return self 68 | 69 | def fit_transform(self, X): 70 | self.fit(X) 71 | return np.dot(X, self.components) 72 | 73 | def transform(self, X): 74 | return np.dot(X, self.components) 75 | 76 | def _svd_flip(self, u, v): 77 | ## I don't really know how to explain this. :( 78 | ## It just works. 79 | ## A modification of sklearn.decomposition.PCA._svd_flip() 80 | max_abs_cols = np.argmax(np.abs(u), axis=0) 81 | signs = -np.sign(u[max_abs_cols, range(u.shape[1])]) 82 | u *= signs 83 | v *= signs[:, np.newaxis] 84 | return u, v 85 | 86 | def save_model(self, save_file: str) -> None: 87 | with open(save_file, 'wb') as outp: 88 | pickle.dump(self, outp, pickle.HIGHEST_PROTOCOL) 89 | 90 | @staticmethod 91 | def load_model(param_file: str) -> PCA: 92 | with open(param_file, 'rb') as inp: 93 | return pickle.load(inp) 94 | 95 | -------------------------------------------------------------------------------- /lazydl/dr/__init__.py: -------------------------------------------------------------------------------- 1 | from .data_reader import IRISDataset, ORLDataset 2 | from .data_loader import * -------------------------------------------------------------------------------- /lazydl/dr/data_loader.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from .data_reader import Dataset 3 | 4 | class DataLoader: 5 | def __init__(self, dataset: Dataset, batch_size: int = 0, shuffle: bool = False): 6 | self.dataset = dataset 7 | self.batch_size = batch_size if 0 < batch_size < len(dataset) else len(dataset) 8 | self.shuffle = shuffle 9 | self.idx = 0 10 | self.indices = np.arange(len(dataset)) 11 | if shuffle: 12 | indices = np.arange(len(dataset)) 13 | np.random.shuffle(indices) 14 | self.dataset.labels = self.dataset.labels.iloc[indices] 15 | if self.dataset.targets is not None: 16 | self.dataset.targets = self.dataset.targets.iloc[indices] 17 | 18 | def __iter__(self): 19 | self.idx = 0 20 | return self 21 | 22 | def __next__(self): 23 | if self.idx >= len(self.dataset): 24 | raise StopIteration 25 | else: 26 | if self.dataset.targets is not None: 27 | x, y = self.dataset[self.idx: self.idx + self.batch_size] 28 | else: 29 | x = self.dataset[self.idx: self.idx + self.batch_size] 30 | self.idx += self.batch_size 31 | 32 | return (x, y) if y is not None else x 33 | 34 | 35 | class DataSplitter: 36 | def __init__(self, dataset: Dataset, batch_size: int = 0, shuffle: bool = False, train_ratio: float = 0.8): 37 | self.dataset = dataset 38 | self.batch_size = batch_size 39 | self.shuffle = shuffle 40 | self.train_ratio = train_ratio 41 | self.train_loader = None 42 | self.test_loader = None 43 | 44 | if shuffle: 45 | indices = np.arange(len(dataset)) 46 | np.random.shuffle(indices) 47 | self.dataset.labels = self.dataset.labels.iloc[indices] 48 | if self.dataset.targets is not None: 49 | self.dataset.targets =self.dataset.targets.iloc[indices] 50 | 51 | train_size = int(len(self.dataset) * train_ratio) 52 | train_labels, test_labels = self.dataset.labels[:train_size], self.dataset.labels[train_size:] 53 | train_targets, test_targets = self.dataset.targets[:train_size], self.dataset.targets[train_size:] if self.dataset.targets is not None else None 54 | 55 | train_dataset = Dataset(train_labels, train_targets) 56 | test_dataset = Dataset(test_labels, test_targets) 57 | 58 | self.train_loader = DataLoader(train_dataset, batch_size=batch_size) 59 | self.test_loader = DataLoader(test_dataset, batch_size=batch_size) 60 | 61 | def get_loader(self): 62 | return self.train_loader, self.test_loader 63 | -------------------------------------------------------------------------------- /lazydl/dr/data_reader.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pandas as pd 3 | import numpy as np 4 | import cv2 5 | from typing import Union, List, Iterable, Optional, Any 6 | 7 | class Dataset: 8 | def __init__(self, 9 | labels: Union[List, np.ndarray, pd.DataFrame], 10 | targets: Union[List, np.ndarray, pd.DataFrame] = None): 11 | self.labels = pd.DataFrame(labels) 12 | self.targets = pd.DataFrame(targets) if targets is not None else None 13 | 14 | def __len__(self) -> int: 15 | return len(self.labels) 16 | 17 | def __getitem__(self, idx: int): 18 | if self.targets is not None: 19 | return np.asarray(self.labels.iloc[idx]), np.asarray(self.targets.iloc[idx]) 20 | else: 21 | return np.asarray(self.labels.iloc[idx]) 22 | 23 | 24 | class IRISDataset(Dataset): 25 | def __init__(self, label_file: str, target_file: str = None): 26 | labels = pd.read_csv(label_file, header=None) 27 | targets = pd.read_csv(target_file, header=None) if target_file else None 28 | super().__init__(labels, targets) 29 | self.targets -= 1 # ['1', '2', '3'] => [0, 1, 2] 30 | 31 | class ORLDataset(Dataset): 32 | def __init__(self, root_folder: str): 33 | self.labels = pd.DataFrame() 34 | self.targets = [] 35 | 36 | for dir in os.listdir(root_folder): 37 | tmp = [] 38 | for file in os.listdir(os.path.join(root_folder, dir)): 39 | img = cv2.imread(os.path.join(root_folder, dir, file), cv2.IMREAD_GRAYSCALE) 40 | if img is not None: 41 | tmp.append(pd.Series(img.flatten())) 42 | self.targets += [int(dir) - 1] # into zero-based class index 43 | self.labels = pd.concat([self.labels, pd.DataFrame(tmp)], ignore_index=True) 44 | self.targets = pd.DataFrame(self.targets) 45 | 46 | -------------------------------------------------------------------------------- /lazydl/func/__init__.py: -------------------------------------------------------------------------------- 1 | from .funcitonal import f -------------------------------------------------------------------------------- /lazydl/func/funcitonal.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from typing import Optional, List, Union, Sequence 3 | 4 | class f: 5 | @staticmethod 6 | def softmax(x: np.ndarray, axis: int = 1) -> np.ndarray: 7 | # overflowed... again 8 | # the following is equiv to the original softmax function 9 | tmp = np.exp(x - np.max(x, axis=axis, keepdims=True)) 10 | return tmp / np.sum(tmp, axis=axis, keepdims=True) 11 | 12 | @staticmethod 13 | def relu(x: np.ndarray) -> np.ndarray: 14 | return np.maximum(x, 0) 15 | 16 | @staticmethod 17 | def sigmoid(x: np.ndarray) -> np.ndarray: 18 | # fix to the exp overflow problem 19 | # the two functions are the same, but the second one avoids kaboom-ing np.exp() 20 | y = x.copy() 21 | y[x >= 0] = 1 / (1 + np.exp(-x[x >= 0])) 22 | y[x < 0] = np.exp(x[x < 0]) / (1 + np.exp(x[x < 0])) 23 | return y 24 | 25 | @staticmethod 26 | def logsigmoid(x: np.ndarray) -> np.ndarray: 27 | return np.log(f.sigmoid(x)) 28 | 29 | @staticmethod 30 | def logsoftmax(x: np.ndarray, axis: int = 1) -> np.ndarray: 31 | return np.log(f.softmax(x, axis=axis)) 32 | 33 | @staticmethod 34 | def onehot(y: np.ndarray, categories: Optional[Sequence] = None) -> np.ndarray: 35 | y = y.flatten() 36 | if categories is not None: 37 | cat_dict = {x: i for i, x in enumerate(categories)} 38 | num = len(cat_dict) 39 | else: 40 | labels = set(y) 41 | cat_dict = {label: label for label in labels} 42 | num = max(labels) + 1 43 | 44 | oh = np.zeros((y.shape[0], num), dtype=np.float64) 45 | indices = np.array([cat_dict[label] for label in y]) 46 | oh[np.arange(y.shape[0]), indices] = 1.0 47 | return oh 48 | 49 | @staticmethod 50 | def minmaxnorm(x: np.ndarray, axis: int = 0) -> np.ndarray: 51 | min_vals = np.min(x, axis=axis, keepdims=True) 52 | max_vals = np.max(x, axis=axis, keepdims=True) 53 | normalized = (x - min_vals) / (max_vals - min_vals) 54 | return normalized 55 | -------------------------------------------------------------------------------- /lazydl/nn/__init__.py: -------------------------------------------------------------------------------- 1 | from .module import Module 2 | from .activations import ReLU, Sigmoid, LogSigmoid, Softmax 3 | from .linear import Linear 4 | from .loss_fn import MSELoss, RMSELoss, SimpleLoss, CrossEntropyLoss -------------------------------------------------------------------------------- /lazydl/nn/activations.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from .module import Module 3 | from lazydl.func import f 4 | 5 | class _Activation(Module): 6 | def __init__(self): 7 | super().__init__() 8 | 9 | def backward(self, grad_out: np.ndarray) -> np.ndarray: 10 | return self.derivative(grad_out) * grad_out 11 | 12 | 13 | class ReLU(_Activation): 14 | def forward(self, x: np.ndarray) -> np.ndarray: 15 | return f.relu(x) 16 | 17 | def derivative(self, x: np.ndarray) -> np.ndarray: 18 | x[x <= 0] = 0.0 19 | x[x > 0] = 1.0 20 | return x 21 | 22 | 23 | class Sigmoid(_Activation): 24 | def forward(self, x: np.ndarray) -> np.ndarray: 25 | return f.sigmoid(x) 26 | 27 | def derivative(self, x: np.ndarray) -> np.ndarray: 28 | tmp = f.sigmoid(x) 29 | return tmp * (1 - tmp) 30 | 31 | 32 | class LogSigmoid(_Activation): 33 | def forward(self, x: np.ndarray) -> np.ndarray: 34 | return f.logsigmoid(x) 35 | 36 | def derivative(self, x: np.ndarray) -> np.ndarray: 37 | tmp = f.sigmoid(x) 38 | return 1 - tmp 39 | 40 | 41 | class Softmax(_Activation): 42 | def forward(self, x: np.ndarray) -> np.ndarray: 43 | return f.softmax(x) 44 | 45 | def derivative(self, x: np.ndarray) -> np.ndarray: 46 | # we don't need the whole Jacobian 47 | # we only need the output wrt its corresponding input 48 | # which mean... only the i == j case is considered 49 | s = f.softmax(x) 50 | return s * (np.ones(s.shape) - s) -------------------------------------------------------------------------------- /lazydl/nn/linear.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from .module import Module 3 | 4 | class Linear(Module): 5 | def __init__(self, in_feat: int, out_feat: int, bias: bool =True, zero_init: bool =False): 6 | super().__init__() 7 | self._parameters['weight'] = np.zeros((in_feat, out_feat)) if zero_init else np.random.randn(in_feat, out_feat) 8 | self._gradients['weight'] = np.zeros((in_feat, out_feat)) 9 | if bias: 10 | self._parameters['bias'] = np.zeros((1, out_feat)) if zero_init else np.random.randn(1, out_feat) 11 | self._gradients['bias'] = np.zeros((1, out_feat)) 12 | 13 | def forward(self, x: np.ndarray) -> np.ndarray: 14 | if 'bias' in self._parameters.keys(): 15 | return np.dot(x, self._parameters['weight']) + self._parameters['bias'] 16 | else: 17 | return np.dot(x, self._parameters['weight']) 18 | 19 | def derivative(self, x: np.ndarray) -> np.ndarray: 20 | return x 21 | 22 | def backward(self, grad_out: np.ndarray) -> np.ndarray: 23 | m = grad_out.shape[0] 24 | self._gradients['weight'] = np.dot(self._buffer.T, grad_out) / m 25 | self._gradients['bias'] = np.average(grad_out, axis=0, keepdims=True) 26 | grad_out = np.dot(grad_out, self._parameters['weight'].T) 27 | return grad_out 28 | 29 | -------------------------------------------------------------------------------- /lazydl/nn/loss_fn.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from .module import Module 3 | from lazydl.func import f 4 | 5 | 6 | class _Loss(Module): 7 | def __init__(self, target_module): 8 | super().__init__() 9 | self.target_module: Module = target_module 10 | self.loss = None 11 | 12 | def __call__(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 13 | self.loss = self.derivative(predictions, targets) 14 | return self.forward(predictions, targets) 15 | 16 | def backward(self): 17 | self.target_module._backprop(self.loss) 18 | 19 | 20 | class SimpleLoss(_Loss): 21 | def __init__(self, target_module): 22 | super().__init__(target_module) 23 | 24 | def forward(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 25 | return np.mean((predictions - targets) ** 2) 26 | 27 | def derivative(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 28 | tmp = predictions - targets 29 | return 2 * tmp 30 | 31 | class RMSELoss(_Loss): 32 | def __init__(self, target_module): 33 | super().__init__(target_module) 34 | 35 | def forward(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 36 | return np.sqrt(np.mean((predictions - targets) ** 2)) 37 | 38 | def derivative(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 39 | tmp, m = predictions - targets, targets.shape[0] 40 | # an attempt to fix the invalid number problem 41 | return 2 * (1 / np.sqrt(m)) * np.divide(tmp, np.abs(tmp) + 1e-10) 42 | 43 | 44 | class MSELoss(_Loss): 45 | def __init__(self, target_module): 46 | super().__init__(target_module) 47 | 48 | def forward(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 49 | return np.mean((predictions - targets) ** 2) 50 | 51 | def derivative(self, predictions: np.ndarray, targets:np.ndarray) -> np.ndarray: 52 | tmp, m = predictions - targets, targets.shape[0] 53 | return 2 * tmp / m 54 | 55 | 56 | class CrossEntropyLoss(_Loss): 57 | def __init__(self, target_module): 58 | super().__init__(target_module) 59 | 60 | def forward(self, predictions: np.ndarray, targets: np.ndarray) -> np.ndarray: 61 | m, x, t = targets.shape[0], f.softmax(predictions), f.onehot(targets, np.arange(predictions.shape[1])) 62 | return -np.sum(t * np.log(x + 1e-12)) / m 63 | 64 | def derivative(self, predictions: np.ndarray, targets: np.ndarray) -> np.ndarray: 65 | m, x, t = targets.shape[0], f.softmax(predictions), f.onehot(targets, np.arange(predictions.shape[1])) 66 | return (x - t) / m 67 | -------------------------------------------------------------------------------- /lazydl/nn/module.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | from typing import Any, Dict, Union, List, Iterable 3 | import numpy as np 4 | import pickle 5 | 6 | 7 | class Module: 8 | def __init__(self) -> None: 9 | self._parameters: Dict[str, np.ndarray] = {} 10 | self._gradients: Dict[str, np.ndarray] = {} 11 | self._modules: Union[Dict[str, Module], List[Module]] = [] 12 | self._buffer: np.ndarray 13 | 14 | def __call__(self, x: np.ndarray) -> np.ndarray: 15 | self._buffer = x 16 | if isinstance(self._modules, dict): 17 | for l in self._modules.values(): 18 | x = l(x) 19 | elif isinstance(self._modules, list): 20 | for l in self._modules: 21 | x = l(x) 22 | else: 23 | pass 24 | x = self.forward(x) 25 | return x 26 | 27 | def _backprop(self, grad_out: np.ndarray) -> np.ndarray: 28 | grad_out = self.backward(grad_out) 29 | if isinstance(self._modules, dict): 30 | for l in reversed(self._modules.values()): 31 | grad_out = l.backward(grad_out) 32 | elif isinstance(self._modules, list): 33 | for l in reversed(self._modules): 34 | grad_out = l.backward(grad_out) 35 | else: 36 | pass 37 | return grad_out 38 | 39 | def zero_grad(self) -> None: 40 | for grad in self._gradients.values(): 41 | grad.fill(0) 42 | 43 | for m in self.get_module_iter()[1:]: 44 | m.zero_grad() 45 | 46 | def has_grad(self) -> bool: 47 | return self._gradients.items() != 0 48 | 49 | def get_module_iter(self) -> Iterable[Module]: 50 | m_iter = [self] 51 | if isinstance(self._modules, dict): 52 | m_iter += self._modules.values() 53 | elif isinstance(self._modules, list): 54 | m_iter += self._modules 55 | else: 56 | raise TypeError(f'Expect dict or list, got "{self._modules.__class__}"') 57 | 58 | return m_iter 59 | 60 | def save_model(self, save_file: str) -> None: 61 | with open(save_file, 'wb') as outp: 62 | pickle.dump(self, outp, pickle.HIGHEST_PROTOCOL) 63 | 64 | @staticmethod 65 | def load_model(param_file: str) -> Module: 66 | with open(param_file, 'rb') as inp: 67 | return pickle.load(inp) 68 | 69 | def forward(self, x: np.ndarray) -> np.ndarray: 70 | return x 71 | 72 | def derivative(self, x: np.ndarray) -> np.ndarray: 73 | return np.ones_like(x) 74 | 75 | def backward(self, grad_out: np.ndarray) -> np.ndarray: 76 | return grad_out -------------------------------------------------------------------------------- /lazydl/optim/__init__.py: -------------------------------------------------------------------------------- 1 | from .optimizer import SGD, Adam, MSGD, AdaGrad, RMSProp -------------------------------------------------------------------------------- /lazydl/optim/optimizer.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from lazydl.nn import Module 3 | from typing import Tuple 4 | 5 | 6 | class _Optimizer: 7 | def __init__(self, model: Module): 8 | self.model = model 9 | 10 | def zero_grad(self) -> None: 11 | self.model.zero_grad() 12 | 13 | def step(self) -> None: 14 | raise NotImplementedError 15 | 16 | 17 | class SGD(_Optimizer): 18 | def __init__(self, model: Module, lr: float = 1e-3): 19 | super().__init__(model) 20 | self.lr = lr 21 | 22 | def step(self) -> None: 23 | for layer in self.model.get_module_iter(): 24 | for param_name in layer._parameters.keys(): 25 | layer._parameters[param_name] -= self.lr * layer._gradients[param_name] 26 | 27 | 28 | class MSGD(_Optimizer): 29 | def __init__(self, model: Module, lr: float = 1e-3, beta: float = 0.9): 30 | super().__init__(model) 31 | self.lr = lr 32 | self.beta = beta 33 | self.m_iter = model.get_module_iter() 34 | 35 | self.m = [{} for _ in range(len(self.m_iter))] 36 | for i, layer in enumerate(self.m_iter): 37 | for param_name in layer._parameters.keys(): 38 | self.m[i][param_name] = np.zeros_like(layer._parameters[param_name]) 39 | 40 | def step(self) -> None: 41 | for i, layer in enumerate(self.m_iter): 42 | for param_name in layer._parameters.keys(): 43 | grad = layer._gradients[param_name] 44 | self.m[i][param_name] = self.beta * self.m[i][param_name] + (1 - self.beta) * grad 45 | m_hat = self.m[i][param_name] / (1 - self.beta) 46 | layer._parameters[param_name] -= self.lr * m_hat 47 | 48 | 49 | class AdaGrad(_Optimizer): 50 | def __init__(self, model: Module, lr: float = 1e-3, eps: float = 1e-8): 51 | super().__init__(model) 52 | self.lr = lr 53 | self.eps = eps 54 | self.m_iter = model.get_module_iter() 55 | self.cnt = 0 56 | 57 | self.acc_grad = [{} for _ in range(len(self.m_iter))] 58 | 59 | for i, layer in enumerate(self.m_iter): 60 | for param_name in layer._parameters.keys(): 61 | self.acc_grad[i][param_name] = np.zeros_like(layer._parameters[param_name]) 62 | 63 | def step(self) -> None: 64 | for i, layer in enumerate(self.m_iter): 65 | for param_name in layer._parameters.keys(): 66 | grad = layer._gradients[param_name] 67 | self.acc_grad[i][param_name] += grad ** 2 68 | self.cnt += 1 69 | adj_lr = self.lr / (np.sqrt(sum(self.acc_grad[i][param_name]) / self.cnt) + self.eps) 70 | layer._parameters[param_name] -= adj_lr * grad 71 | 72 | 73 | class RMSProp(_Optimizer): 74 | def __init__(self, model: Module, lr: float = 1e-3, beta: float = 0.99, eps: float = 1e-8): 75 | super().__init__(model) 76 | self.lr = lr 77 | self.beta = beta 78 | self.eps = eps 79 | self.m_iter = model.get_module_iter() 80 | 81 | self.v = [{} for _ in range(len(self.m_iter))] 82 | for i, layer in enumerate(self.m_iter): 83 | for param_name in layer._parameters.keys(): 84 | self.v[i][param_name] = np.zeros_like(layer._parameters[param_name]) 85 | 86 | def step(self) -> None: 87 | for i, layer in enumerate(self.m_iter): 88 | for param_name in layer._parameters.keys(): 89 | grad = layer._gradients[param_name] 90 | self.v[i][param_name] = self.beta * self.v[i][param_name] + (1 - self.beta) * (grad ** 2) 91 | v_hat = self.lr / (np.sqrt(self.v[i][param_name]) + self.eps) 92 | layer._parameters[param_name] -= v_hat * grad 93 | 94 | 95 | class Adam(_Optimizer): 96 | def __init__(self, model: Module, lr: float = 1e-3, betas: Tuple[float, float] = (0.9, 0.999), eps: float = 1e-8): 97 | super().__init__(model) 98 | self.lr = lr 99 | self.beta1, self.beta2 = betas 100 | self.eps = eps 101 | self.m_iter = model.get_module_iter() 102 | 103 | self.m = [{} for _ in range(len(self.m_iter))] 104 | self.v = [{} for _ in range(len(self.m_iter))] 105 | 106 | for i, layer in enumerate(self.m_iter): 107 | for param_name in layer._parameters.keys(): 108 | self.m[i][param_name] = np.zeros_like(layer._parameters[param_name]) 109 | self.v[i][param_name] = np.zeros_like(layer._parameters[param_name]) 110 | 111 | def step(self) -> None: 112 | for i, layer in enumerate(self.m_iter): 113 | for param_name in layer._parameters.keys(): 114 | grad = layer._gradients[param_name] 115 | self.m[i][param_name] = self.beta1 * self.m[i][param_name] + (1 - self.beta1) * grad 116 | self.v[i][param_name] = self.beta2 * self.v[i][param_name] + (1 - self.beta2) * (grad ** 2) 117 | m_hat = self.m[i][param_name] / (1 - self.beta1) 118 | v_hat = self.v[i][param_name] / (1 - self.beta2) 119 | layer._parameters[param_name] -= self.lr * m_hat / (np.sqrt(v_hat) + self.eps) 120 | 121 | -------------------------------------------------------------------------------- /lazydl/preprocess/__init__.py: -------------------------------------------------------------------------------- 1 | from .maxminnorm import MaxMinNorm -------------------------------------------------------------------------------- /lazydl/preprocess/maxminnorm.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | import numpy as np 3 | import pickle 4 | 5 | 6 | class MaxMinNorm: 7 | def __init__(self): 8 | self._max: float = ... 9 | self._min: float = ... 10 | 11 | def fit(self, X: np.ndarray): 12 | self._max, self._min = X.max(axis=0), X.min(axis=0) 13 | return self 14 | 15 | def fit_transform(self, X: np.ndarray) -> np.ndarray: 16 | self.fit(X) 17 | return (X - self._min) / (self._max - self._min) 18 | 19 | def transform(self, Y: np.ndarray) -> np.ndarray: 20 | return (Y - self._min) / (self._max - self._min) 21 | 22 | def save_model(self, save_file: str) -> None: 23 | with open(save_file, 'wb') as outp: 24 | pickle.dump(self, outp, pickle.HIGHEST_PROTOCOL) 25 | 26 | @staticmethod 27 | def load_model(param_file: str) -> MaxMinNorm: 28 | with open(param_file, 'rb') as inp: 29 | return pickle.load(inp) 30 | 31 | -------------------------------------------------------------------------------- /load_model.py: -------------------------------------------------------------------------------- 1 | from lazydl import nn, dr, optim, decomp, preprocess 2 | import os 3 | import pathlib 4 | import numpy as np 5 | import pandas as pd 6 | from tqdm import tqdm 7 | import matplotlib.pyplot as plt 8 | 9 | from lab1 import Lab1 10 | from lab2 import Lab2 11 | from lab3 import Lab3 12 | from lab4 import Lab4 13 | 14 | 15 | def acc(test_loader, model): 16 | correct, total = 0, 0 17 | for x, y in test_loader: 18 | y_pred = model.predict(x) 19 | correct += np.sum(y_pred == y) 20 | total += len(y) 21 | accuracy = correct / total * 100 22 | print(f"Accuracy: {accuracy: .6f} %") 23 | return accuracy 24 | 25 | 26 | def top_n_acc(test_loader, model, n=1): 27 | correct, total = 0, 0 28 | for x, y in test_loader: 29 | y_pred_probs = model.predict_prop(x) 30 | 31 | top_n_preds = np.argsort(y_pred_probs, axis=1)[:, -n:] 32 | 33 | correct += np.sum([y[i] in top_n_preds[i] for i in range(len(y))]) 34 | total += len(y) 35 | 36 | accuracy = correct / total * 100 37 | return accuracy 38 | 39 | 40 | def acc_lab5(y_pred, y_true): 41 | return np.average(np.where(y_pred == y_true, 1, 0)) 42 | 43 | 44 | def load_iris_model(model_cls, model_file, label_file, target_file): 45 | m = model_cls.load_model(model_file) 46 | data = dr.IRISDataset(label_file, target_file) 47 | test_loader = dr.DataLoader(data, 0, shuffle=True) 48 | acc(test_loader, m) 49 | 50 | 51 | def load_ORL_lab4(model_cls, model_dir, test_dir): 52 | def split_path(path_str): 53 | path = pathlib.Path(path_str) 54 | return list(path.parts) 55 | 56 | data = dr.ORLDataset(f'{test_dir}') 57 | pca = decomp.PCA.load_model(os.path.join(model_dir, f'{split_path(model_dir)[-1]}.pca.pkl')) 58 | mm = preprocess.MaxMinNorm.load_model(os.path.join(model_dir, f'{split_path(model_dir)[-1]}.mm.pkl')) 59 | 60 | tedata = pca.transform(data.labels) 61 | tedata = mm.transform(tedata) 62 | data.labels = pd.DataFrame(tedata) 63 | 64 | loader = dr.DataLoader(data, shuffle=True) 65 | m = model_cls.load_model(os.path.join(model_dir, f'{split_path(model_dir)[-1]}.pkl')) 66 | print(f"Top-1 Accuracy: {top_n_acc(loader, m, ): .2f}%") 67 | print(f"Top-3 Accuracy: {top_n_acc(loader, m, 3): .2f}%") 68 | 69 | 70 | def load_ORL_lab5(model_dir, test_dir): 71 | def split_path(path_str): 72 | path = pathlib.Path(path_str) 73 | return list(path.parts) 74 | 75 | data = dr.ORLDataset(f'{test_dir}') 76 | pca = decomp.PCA.load_model(os.path.join(model_dir, f'{split_path(model_dir)[-1]}.pca.pkl')) 77 | lda = decomp.LDA.load_model(os.path.join(model_dir, f'{split_path(model_dir)[-1]}.lda.pkl')) 78 | tedata = pca.transform(data.labels) 79 | y_pred = lda.predict(tedata) 80 | 81 | print(f"Accuracy: {acc_lab5(y_pred, np.asarray(data.targets).flatten()) * 100: .2f}%") 82 | 83 | 84 | if __name__ == '__main__': 85 | load_iris_model(Lab1, './saved_model/lab1/lab1.pkl', './data/iris/iris_in.csv', './data/iris/iris_out.csv') 86 | print('---------------') 87 | load_iris_model(Lab2, './saved_model/lab2/lab2.pkl', './data/iris/iris_in.csv', './data/iris/iris_out.csv') 88 | print('---------------') 89 | load_iris_model(Lab3, './saved_model/lab3/lab3.pkl', './data/iris/iris_in.csv', './data/iris/iris_out.csv') 90 | print('---------------') 91 | load_ORL_lab4(Lab4, './saved_model/lab4/lab4', './data/ORL_dat/test') 92 | print('---------------') 93 | load_ORL_lab5('./saved_model/lab5/lab5', './data/ORL_dat/test') 94 | 95 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | autograd==1.6.2 2 | matplotlib==3.7.1 3 | numpy==1.24.3 4 | opencv_contrib_python==4.8.1.78 5 | opencv_python==4.7.0.72 6 | pandas==2.0.2 7 | pytest==8.2.0 8 | scikit_learn==1.3.1 9 | torch==2.1.0.dev20230617+cu121 10 | tqdm==4.65.0 11 | -------------------------------------------------------------------------------- /saved_model/lab1/lab1.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab1/lab1.pkl -------------------------------------------------------------------------------- /saved_model/lab1/report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab1/report.png -------------------------------------------------------------------------------- /saved_model/lab2/lab2.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab2/lab2.pkl -------------------------------------------------------------------------------- /saved_model/lab2/report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab2/report.png -------------------------------------------------------------------------------- /saved_model/lab3/lab3.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab3/lab3.pkl -------------------------------------------------------------------------------- /saved_model/lab3/report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab3/report.png -------------------------------------------------------------------------------- /saved_model/lab4/lab4/lab4.mm.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab4/lab4/lab4.mm.pkl -------------------------------------------------------------------------------- /saved_model/lab4/lab4/lab4.pca.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab4/lab4/lab4.pca.pkl -------------------------------------------------------------------------------- /saved_model/lab4/lab4/lab4.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab4/lab4/lab4.pkl -------------------------------------------------------------------------------- /saved_model/lab4/lab4/report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab4/lab4/report.png -------------------------------------------------------------------------------- /saved_model/lab5/lab5/lab5.lda.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab5/lab5/lab5.lda.pkl -------------------------------------------------------------------------------- /saved_model/lab5/lab5/lab5.pca.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazywulf/Basic-ML-Framework/6af0221731e278f332321d236e92dc5be58cad99/saved_model/lab5/lab5/lab5.pca.pkl --------------------------------------------------------------------------------