• Stars
    star
    205
  • Rank 190,143 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Flexible simulation package for optical neural networks

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
pip install -e neuroptica

To run unit tests, use - python -m unittest discover -v from the root package directory.

Getting started

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

neuroptica training demo

Citing

neuroptica was written by Ben Bartlett, Momchil Minkov, Tyler Hughes, and Ian Williamson. If you find this useful for your research, please cite the GitHub repository and/or the JSQTE paper:

@misc{Bartlett2019Neuroptica,
  author = {Ben Bartlett and Momchil Minkov and Tyler Hughes and Ian A. D. Williamson},
  title = {Neuroptica: Flexible simulation package for optical neural networks},
  year = {2019},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/fancompute/neuroptica}},
  commit = {06484f698ee038eeb128cdfbd4c59a7e96185bb4}
}
@article{Williamson2019Reprogrammable, 
  author={I. A. D. Williamson and T. W. Hughes and M. Minkov and B. Bartlett and S. Pai and S. Fan}, 
  journal={IEEE Journal of Selected Topics in Quantum Electronics}, 
  title={Reprogrammable Electro-Optic Nonlinear Activation Functions for Optical Neural Networks},
  year={2020}, 
  volume={26}, 
  number={1}, 
  pages={1-12}
}

More Repositories

1

wavetorch

🌊 Numerically solving and backpropagating through the wave equation
Python
510
star
2

ceviche

🦐 Electromagnetic Simulation + Automatic Differentiation
Python
326
star
3

angler

Frequency-domain photonic simulation and inverse design optimization for linear and nonlinear devices
Python
150
star
4

legume

🌱 Guided-mode expansion of photonic crystal slabs
Python
102
star
5

qpga

Simulations of photonic quantum programmable gate arrays
Jupyter Notebook
100
star
6

workshop-invdesign

πŸ“ Workshop material for optical inverse design and automatic differentiation
Jupyter Notebook
95
star
7

fdfdpy

Pure Python implementation of the finite difference frequency domain (FDFD) method for electromagnetics
Jupyter Notebook
53
star
8

ising-compiler

🍰 Compiling your code to an Ising Hamiltonian so you don't have to!
Jupyter Notebook
48
star
9

FDFD.jl

Pure Julia implementation of the finite difference frequency domain (FDFD) method for electromagnetics
Jupyter Notebook
32
star
10

Rigorous-Coupled-Wave-Analysis

Rigorous coupled wave analysis and PWEM implemented in short readable python codes
Jupyter Notebook
31
star
11

vtmm

Vectorized transfer matrix method (TMM) for computing the optical reflection and transmission of multilayer planar stacks
Python
17
star
12

simphox

Another inverse design library (wip)
Python
17
star
13

neuroptica-notebooks

Jupyter notebooks for the neuroptica simulator
Jupyter Notebook
8
star
14

Isolators_CMT

🎭 Coupled-mode theory for some modulation-based optical isolators
Jupyter Notebook
7
star
15

electro-optic-activation

This notebook contains code for the machine learning tasks in the electro-optic activation function paper
Jupyter Notebook
5
star
16

FDFDViz.jl

Visualization and plotting helper functions for FDFD.jl
Julia
4
star
17

synthetic-hamiltonians

Jupyter Notebook
3
star
18

rcwa4d

Rigorous Coupled Wave Analyses (RCWA) for layered structures with incommensurate periodicities
Jupyter Notebook
1
star
19

bilevel-inverse-design-of-optical-switch

inverse design of optical switch based on bilevel optimization inspired by meta-learning
Jupyter Notebook
1
star