MNIST classification (Restricated Boltzmann Machine)

Hello, I am beginner of this site and interesting in machine learning demonstration based on Restricted Boltzmann Machine (RBM) using D-wave. I have three questions as follows;


1) Is it possible to demonstrate of MNIST (28x28 pixels) classification by using cloud based D-wave ?


2)Could anyone advise me how to overcome limitation of qubits coupling in real D-wave machine in such a MNIST classification ? For example, to classify original MNIST data by RBM, at least 784 units are required in the first visible layer. Therefore in prior paper of MNIST classification by D-wave, coarse-grained MNIST data set (~ 6x6 pixels) was used such as in


3)Do you have code example of Restricted Boltzmann Machine not limited to MNIST classification ?


Thank you in advance for your kind assistance to D-wave beginner.



  • Hi Rune,

    This is a really interesting application. My answers to your questions are as follows.

    1. It may be. Are you interested in classification techniques other than an RBM? I can get back to you with some resources if you are.
    2. This paper used a different compression technique to reduce the size of the 28x28 pixel images before sending them to the quantum RBM. The original 28x28 pixel images were recoverable (with some loss). Even with the hardware advancements we've made in the years since the paper you referenced was published, an RBM with 784 visible nodes cannot fit on the QPU. The largest RBM that can fit on Advantage has up to 172 visible and 172 hidden nodes.
    3. We don’t currently have a code example for an RBM implementation on our systems. I submitted a feature request to our internal teams, so your interest in this example is on their radar.


    In case it's helpful I thought I'd include a few more recent resources that you may be interested in:


    I hope this helps!

    Comment actions Permalink
  • Thank you for your kind comments and introduced me various papers.

    As for the most advanced version of D-wave has up to 172x172 in RBM, could you tell me why the limitation (172x172) decided ?  

    Comment actions Permalink
  • The maximum RBM is 172x172 because that's the largest biclique that can be embedded onto the Advantage QPU.

    This limitation is due to the Advantage chip's topology. The topology is called Pegasus. These QPUs have over 5000 qubits and each qubit is connected to 15 other qubits. Since most problems (BQMs/QUBOs/Ising) are not subgraphs of the chip topology they have to be embedded (their variables have to be mapped to qubits or groups of qubits). 

    Please let me know if you have any other questions!


    Comment actions Permalink
  • To: Alex K.

    I have a similar question to Rune M.'s question.

    How is the 172x172 size found taking into account the characteristics of the Pegasus architecture (5,000 qubits and 15 qubits connection)? Is it a theoretical result easy to prove or a practical result that comes from running the minor embedding software packages in the Ocean SDK?

    Comment actions Permalink
  • Hello,

    It should be provable.
    The RBM is a dense bipartite graph. We can consider it a fully connected bipartite graph here for convenience.
    Considering the architecture of the QPU, it is possible to use this information to design a large graph that will fit on it.

    The process entails determining how many qubits would need to be in each chain for each node in a given bipartite graph, and multiplying by the total nodes in that graph. The first part will be determined by how the chains are placed on the QPU's graph in the minor embedding step. Taking advantage of the regular patterns in the architecture can yield some quite effective embeddings. With this formulation, you can solve for the maximum number of nodes possible to fit in a graph, being constrained by the chain length needed and other constraints of the architecture.
    Note that there are possibly further constraints depending on whether the needed chains overlap with inoperable qubits. Fitting the graph to the theoretical perfect architecture would be the first step, and then again compensating for any missing qubits or couplers from the regular pattern of the architecture.

    We have created some tools to help facilitate people solving these kinds of problems.

    The following code example will help you with embedding bipartite graphs:

    from minorminer import busclique
    cache = busclique.busgraph_cache(g)
    emb = cache.largest_balanced_biclique()

    If you would like to get an idea of how these embeddings are formulated, you can create an embedding and then use the Problem Inspector to see how the problem is embeded on the QPU.

    I hope this is helpful.
    Please let us know if you have any more questions.

    Comment actions Permalink
  • Hello,

    I understand the process you describe but I still don't understand the precise figure of 172 x 172 given by Rune M above, on January 25, 2021 00:54. I assume it was given for a particular graph and is not general.

    Thank you for your reply.

    Comment actions Permalink
  • 172 x 172 is indeed for this particular solver's graph. 
    The exact graph can be obtained from an instance of a given solver.
    Then a graph can be constructed against the graph of the solver.
    Using this process, a 172 x 172 graph was compiled for the Advantage solver.
    In this case there was only one Advantage solver, so it would be referring to Advantage_system1.1

    Comment actions Permalink

Please sign in to leave a comment.

Didn't find what you were looking for?

New post