Giter Club home page Giter Club logo

nisqai-dev's Introduction

NISQAI

NISQAI is a library for quantum artificial intelligence on near-term quantum computers. For an overview of our project, please watch this short YouTube Video. For more detailed information, please read our project proposal.

NISQAI is currently in development. The examples folder contains instructive notebooks on some of our ideas, such as our one-qubit quantum classifier.

Development Instructions

We're happy to accept your contributions. To do so, follow these instructions:

(1) Fork the development repository rmlarose/nisqai-dev:

git clone https://github.com/rmlarose/nisqai-dev

(2) CD into the directory with setup.py:

cd nisqai-dev

(3) Install the NISQAI package:

pip install -e .

From here, you can make your contributions on your fork, then submit a pull request. If these are unfamiliar to you, don't worry! We're happy to help. Send an email to Ryan [email protected] with any questions.

For ideas of what to contribute, see the issues on the development repository.

Developers

  • Ryan LaRose
  • Yousif Almulla
  • Nic Ezzell
  • Joe Iosue
  • Arkin Tikku

Acknowledgements

The development of NISQAI is supported by the unitary.fund. We thank Will Zeng for creating and running this program, as well as John Hering, Jeff Cordova, Nima Alidoust, and PLOS for sponsoring it.

nisqai-dev's People

Contributors

briancoyle avatar naezzell avatar obliviateandsurrender avatar rmlarose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

nisqai-dev's Issues

Remove torch dependency.

As far as I know (@naezzell correct me if I'm wrong), we're only using torch to do PCA. Torch is a huge download -- only using PCA from it is a waste. We should avoid this by using a native implementation of PCA, or another way around the torch dependency.

I'm not adding torch to requirements.txt with the expectation that it will be removed.

Compiling a Network bugs out Rigetti compiler.

See the unit test test_compiler() in network/_network_test.py. For some reason, compiling the Network's circuit (which is the concatenation of each encode, unitary, and measurement component) is causing the Rigetti API to have a KeyError.

The issue is not a connection issue, as other compiling tests are still passing.

Get MNIST data and CData unit tests.

@naezzell I think the input to LabeledCData in get_mnist_data is wrong. See TODO comment and please update when you can.

There are several unit tests failing in CData after some updates. (These should have been failing all along, the updates just revealed them.)

(1) The higher dimensional data example is not supported. The input data to any CData object must, as of know, be explicitly two-dimensional. I think this unit test should be removed. Thoughts?

(2) The train_test_split(...) unit test used to input one-dimensional data when creating a CData object, which is again nonsense. As such, the later checks are equally nonsense. Could you update this with sensible checks?

Write a circuit/network drawer.

Thinking of something similar to printing a circuit in Cirq. This would be extremely useful for visualizing both circuits and the network.

Should take in an object that contains a pyquil Program and return a string corresponding to a visual representation of said program (for the circuit drawer).

For the network drawer, we may want to have "blackbox drawings" like

----[Encode]----[Transform]----[Measure]----[Relu]----[Encode]----...

or something similar.

Travis isn't able to build anything.

Even after changing the default branch to dev on github, Travis still isn't able to build. Possible problems (literally just guessing):

(1) Something's wrong with the .travis.yml file. (I essentially copied this from OpenFermion and ProjectQ, making the appropriate changes.)
(2) It's because the repo is private, the branch is dev, or some other git related cluster fuck.

QVM and Quil compiler closing.

As of now, if one forgets to catch the output of utils.startQVMandQUILC() and pass this into utils.stopQVMandQUILC(), the processes remain running on their machines. This is undesirable. Ideally, some "safety checks" should be put in place. If not, we must be extremely explicit that this is going to happen, and warn users multiple times.

Rename AngleEncoding to DenseAngleEncoding.

An "Angle Encoding" has already been defined in "Supervised Learning with Quantum Computers" by Schuld:

https://www.springer.com/us/book/9783319964232

which takes a single feature x_i to a qubit via the encoding

cos(x_i) |0> + sin(x_i) |1>.

The difference between our "AngleEncoding" is we also encode a feature into the relative phase \phi.

I propose to stick with Schuld's definition of AngleEncoding and rename our implementation to DenseAngleEncoding.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.