{"id":19463694,"url":"https://github.com/4s4v1n/mlp","last_synced_at":"2025-06-23T19:33:13.519Z","repository":{"id":143557737,"uuid":"520114622","full_name":"4s4v1n/MLP","owner":"4s4v1n","description":"Neural network for letter recognition","archived":false,"fork":false,"pushed_at":"2022-08-05T18:12:19.000Z","size":36582,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-25T13:29:17.537Z","etag":null,"topics":["back-propagation","cpp","forward-propagation","machine-learning","neural-network"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/4s4v1n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-08-01T13:07:29.000Z","updated_at":"2024-12-06T10:55:24.000Z","dependencies_parsed_at":"2023-10-21T16:21:35.170Z","dependency_job_id":null,"html_url":"https://github.com/4s4v1n/MLP","commit_stats":null,"previous_names":["4s4v1n/mlp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/4s4v1n/MLP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4s4v1n%2FMLP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4s4v1n%2FMLP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4s4v1n%2FMLP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4s4v1n%2FMLP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/4s4v1n","download_url":"https://codeload.github.com/4s4v1n/MLP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4s4v1n%2FMLP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261542900,"owners_count":23174653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["back-propagation","cpp","forward-propagation","machine-learning","neural-network"],"created_at":"2024-11-10T18:11:52.290Z","updated_at":"2025-06-23T19:33:13.453Z","avatar_url":"https://github.com/4s4v1n.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MLP\n\n![logo](./images/icon.png)\n\n## Content\nThis project is a neural network with several implementations that recognizes the letters of the Latin alphabet.\nThe neural network has two versions. The interface is intuitive and does not need special consideration.\n1. Matrix neural network - all layers are represented as a matrix of weights.\n2. Graph - each neuron is represented by a separate object that is connected with the rest.\n\nFor assembly you need:\n1. `CMAKE 3.5` and higher\n2. `QT 5.15.2` and higher\n\nAll data necessary for training and testing the neural network is in the archive `emnist/emnist-data.tar.gz`\n\n## Working example\n\n![preview](./images/preview.gif)\n\n## Input data\nIn order for the neural network to be able to determine the letters in the drawn or downloaded image, it is necessary either to train\nneural network, or load ready-made weights.\n1. The image is drawn on the left side of the screen on a white canvas with the help of LMB, in order to erase\n   drawn image - click RMB. As you draw, the neural network will predict the letter you have drawn.\n   Further, this drawn image can be saved using the `↓` button to the directory of your choice.\n2. You can upload an image using the `↑` button, after that it will appear on the canvas on the left side,\n   where it can be edited.\n\n## Education\n\n![train](./images/train.png)\n\nIn order for the neural network to be able to determine the letter, it is necessary to train it, or load ready-made weights.\n\n1. Training is launched on the `TRAIN` button in a separate thread, with parameters from the settings (by default, this is a classic\ntraining a matrix neural network with two hidden layers and one training epoch), you can set the settings yourself,\nmore on this later. After training, a graph will be opened showing the percentage of the neural network error at each of the training epochs.\nIf you wish, you can save the received weights on the `↓` button to the directory of your choice.\n2. You can also load ready-made weights using the `↑` button. The user himself must select the correct weights\n   for any type of network.\n\n## Tests\n\n![test](./images/test.png)\n\nAfter the neural network has been trained or the weights have been loaded, you can run tests on the specified sample\n(from 0 to 1, in case of 0 - there is no test sample, tests are not run, in case of 1 - test sample is 100%)\nover this neural network.\nBy clicking on the `TEST` button, the test module will be launched in a separate thread, and a window will open with all the main\nmetrics.\nNamely:\n1. Average accuracy (%)\n2. Precision (%)\n3. Recall (%)\n4. F-measure (%)\n5. Time (sec)\n\nThe input test data must also be selected correctly by the user.\n\n## Settings\n\n![settings](./images/settings.png)\n\nSettings open on the `SETTINGS` button, you can configure them:\n1. Type of neural network, graph or matrix. `MATRIX` or `GRAPH`.\n2. The number of hidden layers. `2-5`.\n3. Number of epochs to train (if cross-validation is disabled). `1-5`.\n4. Availability of cross-validation. `TRUE` or `FALSE`\n5. Number of k-groups (if cross-validation is enabled). `1-10`.\n6. Test sample. `0-1`.\n\nThe work was completed by: Savin Anton (telvina), Andrey Degtyarev (sreanna).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4s4v1n%2Fmlp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F4s4v1n%2Fmlp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4s4v1n%2Fmlp/lists"}