/neuroptica

Flexible simulation package for optical neural networks

Primary LanguagePythonMIT LicenseMIT

neuroptica Documentation Status Build Status

neuroptica is a flexible chip-level simulation platform for nanophotonic neural networks written in Python/NumPy. It provides a wide range of abstracton levels for simulating optical NN's: the lowest-level functionality allows you to manipulate the arrangement and properties of individual phase shifters on a simulated chip, and the highest-level features provide a Keras-like API for designing optical NN by stacking network layers.

Installation

The easiest way to get started with neuroptica is to install directly from the Python package manager:

pip install neuroptica

Alternately, you can clone the repository source code and edit it as needed with

git clone https://github.com/fancompute/neuroptica.git

and in your program or notebook, add

import sys
sys.path.append('path/to/neuroptica')

neuroptica requires Python >=3.6.

Getting started

For an overview of neuroptica, read the documentation. Example notebooks are included in the neuroptica-notebooks repository:

neuroptica training demo

Authors

neuroptica was written by Ben Bartlett, Momchil Minkov, Tyler Hughes, and Ian Williamson.