The present invention relates to artificial neural network, for example, convolutional neural network. In particular, the present invention relates to how to accelerate a complex neural network by fixed-point data quantization.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method for optimizing an Artificial Neural Network (ANN), said ANN has branches and at least comprises convolutional layers CONV 1, CONV 2, . . . CONV n, and fully connected layers FC 1, FC 2, . . . , FC m, concatenation layers CONCAT1, CONCAT2, . . . , CONCAT 1, wherein n, m and l are positive integers, said method comprising: (a) fixed-point data quantizing step, for converting output of each of said CONV, FC and CONCAT layers into fixed-point numbers; (b) CONCAT layer identifying step, for identifying at least one sub-network from said ANN, wherein each sub-network has a CONCAT layer as its output, wherein said CONCAT layer receives at least two outputs of previous-level layers as its inputs and concatenates said inputs into one output; (c) fixed-point modifying step, for each sub-network, modifying the fixed-point range of each output of the previous-level layers of said CONCAT layer on the basis of the fixed-point range of said CONCAT layer. 2. The method of claim 1, wherein step (c) comprises: for previous-level layers of said CONCAT layer, comparing each previous-level layer's output fixed-point range with said CONCAT layer's output fixed-point range; if they are different, adjusting the fixed-point range of said previous-level layer's output to be same as the fixed-point range of said CONCAT layer's output. 3. The method of claim 1, wherein step (c) comprises: if one previous-level layer of said CONCAT layer is another CONCAT layer, identifying another sub-network with said another CONCAT layer as its output, and conducting step (c) for said another sub-network. 4. The method of claim 1, wherein step (a) comprises: providing input data to said ANN, said input data is processed by said convolutional layers CONV 1, CONV 2, . . . CONV n, and fully connected layers FC 1, FC 2, . . . , FC m, concatenation layers CONCAT1, CONCAT2, . . . , CONCAT 1; converting output of each of said CONV, FC and CONCAT layers from float-point numbers into fixed-point numbers, wherein the numerical range of fixed-point numbers is dynamically chosen for different layers while remains static in one layer. 5. The method of claim 4, wherein the step of converting output of each of said CONV, FC and CONCAT layers from float-point numbers into fixed-point numbers further comprises: y = ∑ i = 0 bw - 1  B i · 2 - f l · 2 i using the above expression to denote a fixed-point number y, wherein bw is the bit width of the number, fl is the fractional length which can be negative fraction; deciding the optimal fl for outputs of each of said CONV layers, FC layers and CONCAT layers. 6. The method of claim 5, wherein the step of deciding the optimal fl comprises: estimating the floating-number range of output of one layer; designating an initial value for fl; searching for an optimal fl in the adjacent domains of the initial value based on the following calculation: f l = arg  min f l   ∑  x float + - x +  ( bw , f l )  wherein x+=A·x, A represents the operation applied by one of the CONV layers, FC layers and CONCAT layers of the ANN, x represents the input of one layer, x+ represents the output of said layer. 7. The method of claim 5, wherein the step of deciding the optimal fl comprises: estimating the floating-number range of output of one layer; designating an initial value for fl; searching for an optimal fl in the adjacent domains of the initial value based on the following calculation: f l = arg  min f l   ∑  ∑ N  k i   X float i + - X +  ( bw , f l ) i   wherein x+=A·x, A represents the operation applied by one of the CONV layers, FC layers and CONCAT layers of the ANN, x represents the input of one layer, x+ represents the output of said layer, i represents one bit of said bw bits, ki represents the weight of said bit i. 8. The method of claim 1, further comprising: outputting the fixed-point number range of each of said CONV layers, FC layers and CONCAT layers said after step(c). 9. The method of claim 1, further comprising: weight quantizing step, for converting weights of said CONV layers, FC layers and CONCAT layers from float-point numbers into fixed-point numbers. 10. The method of claim 9, wherein the weight quantizing step further comprising: dynamically choosing numerical range of fixed-point numbers for different layers while remains static in one layer. 11. The method of claim 10, the step of dynamically choosing numerical range of fixed-point numbers for different layers further comprises: y = ∑ i = 0 bw - 1  B i · 2 - f l · 2 i using the above expression to denote a fixed-point number, wherein bw is the bit width of the number, fl is the fractional length which can be negative fraction; deciding the optimal fl for weights in each layer. 12. The method of claim 11, wherein the step of deciding the optimal fl comprises: estimating the floating-number range of weights of one layer; designating an initial value for fl; searching for an optimal fl in the adjacent domains of the initial value based on the following calculation: f l = arg  min f l  ∑  W float - W  ( bw , f l )  wherein W is the weight matrix of one layer, W (bw, fl) represents the fixed-point format of W under the given bw and fl. 13. The method of claim 11, wherein the step of deciding the optimal fl comprises: estimating the floating-number range of weights of one layer; designating an initial value for fl; searching for an optimal fl in the adjacent domains of the initial value based on the following calculation: f l = arg  min f l   ∑  ∑ k i   W float i - W  ( bw , f l ) i   wherein W is the weight matrix of one layer, W (bw, fl) represents the fixed-point format of W under the given bw and fl, i represents one bit of said bw bits, ki represents the weight of said bit i. 14. The method of claim 9, further comprises: before step (a), conducting weight quantization for all CONV layers, FC layers and CONCAT layers of the ANN. 15. The method of claim 9, further comprises: conducting the weight quantizing step and said step (a) in an alternative manner, wherein after conducting weight quantization for the present layer of said CONV layers, FC layers and CONCAT layers, before conducting weight quantization for next layer of said CONV layers, FC layers and CONCAT layers, conducting data quantization of the output of said present layer. 16. A device for optimizing an Artificial Neural Network (ANN), said ANN has branches and at least comprises convolutional layers CONV 1, CONV 2, . . . CONV n, and fully connected layers FC 1, FC 2, . . . , FC m, concatenation layers CONCAT1, CONCAT2, . . . , CONCAT 1, wherein n, m and l are positive integers, said device comprising: fixed-point data quantizing unit, configured for converting output of each of said CONV, FC and CONCAT layers into fixed-point numbers; CONCAT layer identifying unit, configured for identifying at least one sub-network from said ANN, wherein each sub-network has a CONCAT layer as its output, wherein said CONCAT layer receives at least two outputs of previous-level layers as its inputs and concatenates said inputs into one output; fixed-point modifying unit, configured for, for each sub-network, modifying the fixed-point range of each output of the previous-level layers of said CONCAT layer on the basis of the fixed-point range of said CONCAT layer. 17. The device of claim 16, wherein the fixed-point modifying unit is configured to: for previous-level layers of said CONCAT layer, compare each previous-level layer's output fixed-point range with said CONCAT layer's output fixed-point range; if they are different, adjust the fixed-point range of said previous-level layer's ouput to be same as the fixed-point range of said CONCAT layer's output. 18. The device of claim 16, wherein the fixed-point modifying unit is configured to, if one previous-level layer of said CONCAT layer is also a CONCAT layer, identify another sub-network with said preceding CONCAT layer as its output, and said fixed-point modifying unit is configured to modify said another sub-network. 19. The device of claim 16, wherein the fixed-point data quantizing unit is configured to: provide input data to said ANN, said input data is processed by said convolutional layers CONV 1, CONV 2, . . . CONV n, and fully connected layers FC 1, FC 2, . . . , FC m, concatenation layers CONCAT1, CONCAT2, . . . , CONCAT 1, convert output of each of said CONV, FC and CONCAT layers from float-point numbers into fixed-point numbers, wherein the numerical range of fixed-point numbers is dynamically chosen for different layers while remains static in one layer. 20. The device of claim 16, further comprising: weight quantizing unit, being configured for converting weights of said CONV layers, FC layers and CONCAT layers from float-point numbers into fixed-point numbers. 21. A method for optimizing an Artificial Neural Network (ANN), said method comprising: (a) fixed-point data quantizing step, for converting output of each layer of said ANN into fixed-point numbers, (b) sub-network identifying step, for identifying at least one sub-network from said ANN, said sub-network has a concatenation layer as its output, wherein said concatenation layer receives at least two outputs of previous-level layers as its inputs and concatenates said inputs into one output; (c) fixed-point modifying step, for each sub-network, modifying the fixed-point range of each output of the previous-level layers of said concatenation layer on the basis of the fixed-point range of said concatenation layer. 22. The method of claim 21, wherein step (c) comprises: for previous-level layers of said concatenation layer, comparing each previous-level layer's output fixed-point range with said concatenation layer's output fixed-point range, if they are different, adjusting the fixed-point range of said previous-level layer's output to be same as the fixed-point range of said concatenation layer's output. 23. The method of claim 21, wherein step (c) comprises: if one previous-level layer of said concatenation layer is also a concatenation layer, identifying another sub-network with said preceding concatenation layer as its output, and conducting step (c) for said another sub-network. 24. The method of claim 21, wherein said ANN has branches and at least comprises convolutional layers CONV 1, CONV 2, . . . CONV n, and fully connected layers FC 1, FC 2, . . . , FC m, concatenation layers CONCAT1, CONCAT2, . . . , CONCAT 1, wherein n, m and 1 are positive integers. 25. The method of claim 24, step (a) further comprising: providing input data to said ANN, said input data is processed by said convolutional layers CONV 1, CONV 2, . . . CONV n, and fully connected layers FC 1, FC 2, . . . , FC m, concatenation layers CONCAT1, CONCAT2, . . . , CONCAT 1, converting output of each of said CONV, FC and CONCAT layers from float-point numbers into fixed-point numbers, wherein the numerical range of fixed-point numbers is dynamically chosen for different layers while remains static in one layer.