deep neural network (BDNN). In BDNN, all the neurons and weights are binary value; at the same time, the calculation of the basic function of BDNN is also Boolean.

Actually, there were researches of binary neural network (Hopfield neural network) [@Hopfield; @Hopfield2; @Hopfield3; @Muselli; @Takefuji] and corresponding training algorithms [@Gray; @Kim]. Nevertheless, this kind of neural network is quite different from BDNN. Although the input and output of the binary neural network are binary values, the weights of which are real number. Therefore, the calculation of binary neural network is not different from the conventional neural network. In contrast, the BDNN is a pure binary system, in which all the variables and operations are all binarized (Boolean).

Compared with conventional deep neural network, the BDNN is expected to have several promising merits, which are shown as follows.

-   Less storage request: since all the weights in BDNN are binary value, thus we can use only 1 bit to store one weight. As a result, we can save a large network with small storage. In contrast, we must use at least 16 bits to store one real number weight of conventional neural network.

-   Higher speed on CPU: the basic calculation 