The nnlib2 library and nnlib2Rcpp R package for implementing neural networks

The nnlib2 library and nnlib2Rcpp R package for implementing neural networks - Published in JOSS (2021)

https://github.com/vnnikolaidis/nnlib2rcpp

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: arxiv.org, joss.theoj.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 6 months ago · JSON representation

Repository

An R package for Neural Nets created using nnlib2

Basic Info
  • Host: GitHub
  • Owner: VNNikolaidis
  • License: other
  • Language: C++
  • Default Branch: master
  • Size: 1.99 MB
Statistics
  • Stars: 13
  • Watchers: 1
  • Forks: 4
  • Open Issues: 0
  • Releases: 17
Created almost 6 years ago · Last pushed 12 months ago
Metadata Files
Readme Changelog License Support

README.md

nnlib2Rcpp

An R package providing access to Neural Networks created using nnlib2.


A tool for creating custom neural networks in C++ and using them in R. The Artificial Neural Networks (ANN), also called Artificial Neural Systems (ANS) or simply Neural Networks (NN) are created using the 'nnlib2' C++ library.

Currently also includes predefined versions of BP, Autoencoder, MAM, LVQ (supervised and unsupervised).

All NNs are created using 'nnlib2' (a C++ library of classes for implementing NNs) and interfaced with R via RCpp.

The package also provides the NN R module (Class "NN") which allows creation and control of custom NNs configurations and topologies from R. These NNs consist of components (predefined or user-defined) usually defined via 'nnlib2'. To add new user-defined NN components (layers, nodes, connections, sets of connections etc) to the package see the "NN" component documentation (type ?NN in R). Note: defining components via 'nnlib2' requires some familiarity with C++.


To install:

(a) From CRAN Repository (recommended): The CRAN (stable) version of this package can be installed the usual way, i.e. by invoking the following R command:

install.packages("nnlib2Rcpp") 

(b) From GitHub: To add the GitHub (latest) version of this package to your R installation, use the following R commands:

library(devtools) 
install_github("VNNikolaidis/nnlib2Rcpp")

(c) From r-universe: To add the package (corresponding to the latest GitHub release version) to your R installation, use the following R command:

install.packages('nnlib2Rcpp', repos = 'https://vnnikolaidis.r-universe.dev')

Once installed, for package help (including documentation and examples for each function or class provided by nnlib2Rcpp) use the following R command:

help(package='nnlib2Rcpp')

while the package vignette (containing information on adding custom components) can be viewed using the following R command:

vignette("intro", package='nnlib2Rcpp')

The package vignette is also available in PDF format here:

https://github.com/VNNikolaidis/nnlib2Rcpp/blob/master/support/manual.pdf

A reference manual in PDF format (for the last version in CRAN) can be found here:

https://cran.r-project.org/web/packages/nnlib2Rcpp/nnlib2Rcpp.pdf


For information on citing this package use the following R command:

citation("nnlib2Rcpp")

For copyright information see LICENSE.md file or DESCRIPTION+LICENSE files (as imposed by package format for CRAN submissions).


The ‘nnlib2’ library used (and included) in this package is a collection of C++ base classes and templates for creating NNs. This library is also available as a standalone project, in GitHub repository (https://github.com/VNNikolaidis/nnlib2). For a (simplified) class-diagram of significant nnlib2 classes and templates see: https://github.com/VNNikolaidis/nnlib2/blob/master/misc/diagram%20of%20main%20classes.png

For implementing new NN components and models in nnlib2 that can be used in nnlib2Rcpp, see also:

https://r-posts.com/creating-custom-neural-networks-with-nnlib2rcpp/ ( permalink: https://wp.me/p8rgs6-sh )

Instructions on using 'nnlib2' and 'nnlib2Rcpp' can also be found in the package vingette, also available in PDF format here:

https://github.com/VNNikolaidis/nnlib2Rcpp/blob/master/support/manual.pdf

Link to related paper in the Journal of Open Source Software:

DOI


Future goals for this project (iF AND WHEN time permits) include:

  • implement additional neural network components and models using 'nnlib2' classes and templates (and thus new neural network components compatible with "NN" module in nnlib2Rcpp).
  • create a library of 'classic' neural network components and models.
  • add parallelism to ‘nnlib2’ component base classes (possibly via OpenMP, CUDA etc.).
  • replace custom data structures in 'nnlib2' with STL containers.
  • add support for package 'nn2poly' (https://arxiv.org/pdf/2406.01588) to the package.
  • other performance enhancements.

Let us know if interested to contribute.


We invite anyone to contribute to this software and/or provide feedback, suggestions, report issues or problems.

To contact us, please use the issues option in GitHub or email (vnnikolaidis AT gmail.com).


DOI

JOSS Publication

The nnlib2 library and nnlib2Rcpp R package for implementing neural networks
Published
May 23, 2021
Volume 6, Issue 61, Page 2876
Authors
Vasilis N. Nikolaidis ORCID
University of Peloponnese
Editor
Kakia Chatsiou ORCID
Tags
neural networks Cpp

GitHub Events

Total
  • Release event: 1
  • Push event: 1
  • Create event: 1
Last Year
  • Release event: 1
  • Push event: 1
  • Create event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 203
  • Total Committers: 3
  • Avg Commits per committer: 67.667
  • Development Distribution Score (DDS): 0.01
Past Year
  • Commits: 4
  • Committers: 1
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Vasilis N. Nikolaidis 3****s 201
Dirk Eddelbuettel e****d@d****g 1
Arfon Smith a****n 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 7
  • Total pull requests: 9
  • Average time to close issues: 7 days
  • Average time to close pull requests: about 3 hours
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 5.57
  • Average comments per pull request: 0.22
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • schnorr (3)
  • drag05 (2)
  • tpq (2)
Pull Request Authors
  • VNNikolaidis (7)
  • eddelbuettel (1)
  • arfon (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • cran 427 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 17
  • Total maintainers: 1
cran.r-project.org: nnlib2Rcpp

A Tool for Creating Custom Neural Networks in C++ and using Them in R

  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 427 Last month
Rankings
Forks count: 12.8%
Stargazers count: 15.1%
Average: 23.5%
Downloads: 24.3%
Dependent packages count: 29.8%
Dependent repos count: 35.5%
Maintainers (1)
Last synced: 6 months ago

Dependencies

DESCRIPTION cran
  • Rcpp * imports
  • methods * imports
  • R.rsp * suggests