{"id":13732209,"url":"https://github.com/ogmacorp/EOgmaNeo","last_synced_at":"2025-05-08T06:31:38.431Z","repository":{"id":106371825,"uuid":"96549522","full_name":"ogmacorp/EOgmaNeo","owner":"ogmacorp","description":"Ogma - EOgmaNeo https://ogma.ai/","archived":false,"fork":false,"pushed_at":"2019-06-18T16:22:19.000Z","size":685,"stargazers_count":113,"open_issues_count":1,"forks_count":20,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-08-04T02:10:57.586Z","etag":null,"topics":["eogmaneo","neural-network","ogma"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ogmacorp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-07-07T15:02:20.000Z","updated_at":"2024-02-18T21:05:43.000Z","dependencies_parsed_at":"2023-03-13T14:40:00.093Z","dependency_job_id":null,"html_url":"https://github.com/ogmacorp/EOgmaNeo","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogmacorp%2FEOgmaNeo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogmacorp%2FEOgmaNeo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogmacorp%2FEOgmaNeo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogmacorp%2FEOgmaNeo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ogmacorp","download_url":"https://codeload.github.com/ogmacorp/EOgmaNeo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224707934,"owners_count":17356440,"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":["eogmaneo","neural-network","ogma"],"created_at":"2024-08-03T02:01:49.135Z","updated_at":"2024-11-14T23:31:32.967Z","avatar_url":"https://github.com/ogmacorp.png","language":"C++","readme":"\u003c!---\n  EOgmaNeo\n  Copyright(c) 2017-2018 Ogma Intelligent Systems Corp. All rights reserved.\n\n  This copy of EOgmaNeo is licensed to you under the terms described\n  in the EOGMANEO_LICENSE.md file included in this distribution.\n---\u003e\n\n# EOgmaNeo\n\n[![Join the chat at https://gitter.im/ogmaneo/Lobby](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/ogmaneo/Lobby)\n## Introduction\n\nWelcome to the EOgmaNeo library!\n\nEOgmaNeo is Ogma Corp's embedded and event based version of [OgmaNeo](https://github.com/ogmacorp/OgmaNeo)\n\n~~It is our primary and preferred implementation of Sparse Predictive Hierarchies, a fully online sequence predictor.~~ This is no longer the case, please use [OgmaNeo2](https://github.com/ogmacorp/OgmaNeo2).\n\nEOgmaNeo currently runs exclusive on the CPU, unlike OgmaNeo. However, for most tasks, it is much faster. It also performs better in terms of end-result.\n\nEOgmaNeo performs some optimizations not yet present in OgmaNeo, resulting in a massive speed boost. For example, on weaker hardware such as the Raspberry Pi it will run happily at 60FPS with ~10,000,000 synapses.\n\nWe used this software to build a small self-contained online-learning self driving model car: [Blog post](https://ogma.ai/2017/06/self-driving-car-learns-online-and-on-board-on-raspberry-pi-3/)\n\nThe advantage of our software over standard Deep Learning techniques is primarily speed. A single Raspberry Pi 3 is enough to run simulations of networks with tens of millions of synapses at high framerates, while Deep Learning is often restricted to offline training on very large and expensive GPUs.\n\nBindings to Python are also included. The binding API approximately mimics the C++ API. Refer to README.md files in each subdirectory to discover more about each binding, and how to build and use them.\n\n## Overview\n\n**For a more detailed introduction, see [OVERVIEW.md](./OVERVIEW.md)**\n\nEOgmaNeo is a fully online learning algorithm, so data must be passed in an appropriately streamed fashion.\n\nThe simplest usage of the predictive hierarchy involves calling:\n\n```cpp\n    // Compute system\n    eogmaneo::ComputeSystem cs(4); // Number of threads to use, e.g. CPU Core count\n\n    eogmaneo::Hierarchy h;\n\n    // Layer descriptors\n    std::vector\u003ceogmaneo::LayerDesc\u003e lds(6);\n\n    // Layer size\n    const int layerWidth = 4;\n    const int layerHeight = 4;\n    const int layerColumnSize = 32;\n\n    for (int l = 0; l \u003c lds.size(); l++) {\n        lds[l]._width = layerWidth;\n        lds[l]._height = layerHeight;\n        lds[l]._columnSize = layerColumnSize;\n        // ...\n    }\n\n    // Create the hierarchy\n    h.create({ { 2, 2 } }, { 16 }, { true }, lds, 1234); // Input width x height, input column size, whether to predict, layer descriptors, and seed\n```\n\nYou can then step the simulation with:\n\n```cpp\n    h.step(cs, sdrs, true); // Input SDRs, learning is enabled\n```\n\nAnd retrieve predictions with:\n\n```cpp\n    std::vector\u003cint\u003e predSDR = h.getPredictions(0); // Get SDR at first (0) visible layer index.\n```\n\nImportant note: Inputs are presented in a _columnar SDR_ format. This format consists of a list of active units, each corresponding to a column of input.\nThis vector is in raveled form (1-D array of size width x height).\n\nAll data must be presented in this form. To help with conversion, we included a few \"pre-encoders\" - encoders that serve to transform various kinds of data into columnar SDR form.\n\nCurrently available pre-encoders:\n\n- ImageEncoder\n- KMeansEncoder\n- GaborEncoder\n\nYou may need to develop your own pre-encoders depending on the task. Sometimes, data can be binned into columns without any real pre-encoding, such as bounded scalars.\n\n## Requirements\n\nEOgmaNeo requires: a C++1x compiler, and [CMake](https://cmake.org/).\n\nThe library has been tested extensively on:\n\n- Windows using Microsoft Visual Studio 2013 and 2015,\n- Linux using GCC 4.8 and upwards,\n- Mac OSX using Clang, and\n- Raspberry Pi 3, using Raspbian Jessie with GCC 4.8\n\n### CMake\n\nVersion 3.1, and upwards, of [CMake](https://cmake.org/) is the required version to use when building the library.\n\n## Building\n\nThe following commands can be used to build the EOgmaNeo library:\n\n```bash\nmkdir build; cd build\ncmake -DBUILD_PREENCODERS=ON ..\nmake\n```\n\nThe `cmake` command can be passed the following optional settings:\n\n- `CMAKE_INSTALL_PREFIX` to determine where to install the library and header files. Default is a system-wide install location.\n- `BUILD_PREENCODERS` to include the Random and Corner pre-encoders into the library.\n\n`make install` can be run to install the library. `make uninstall` can be used to uninstall the library.\n\nOn Windows it is recommended to use `cmake-gui` to define which generator to use and specify optional build parameters.\n\n## Examples\n\nC++ examples can be found in the `source/examples` directory. Python, Java, and C# examples can be found in their sub-directories.\n\nRefer to `README.md` files found in each sub-directory for further information.\n\n## Contributions\n\nRefer to the [CONTRIBUTING.md](https://github.com/ogmacorp/EOgmaNeo/blob/master/CONTRIBUTING.md) file for information on making contributions to EOgmaNeo.\n\n## License and Copyright\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eThe work in this repository is licensed under the \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"\u003eCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License\u003c/a\u003e. See the  [EOGMANEO_LICENSE.md](https://github.com/ogmacorp/EOgmaNeo/blob/master/EOGMANEO_LICENSE.md) and [LICENSE.md](https://github.com/ogmacorp/EOgmaNeo/blob/master/LICENSE.md) file for further information.\n\nContact Ogma via licenses@ogmacorp.com to discuss commercial use and licensing options.\n\nEOgmaNeo Copyright (c) 2017-2018 [Ogma Intelligent Systems Corp](https://ogmacorp.com). All rights reserved.\n","funding_links":[],"categories":["AI"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogmacorp%2FEOgmaNeo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fogmacorp%2FEOgmaNeo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogmacorp%2FEOgmaNeo/lists"}