A neural network is trained to generate feature maps and associated weights. Reordering is performed to generate a functionally equivalent network. The reordering may be performed to improve at least one of compression of the weights, load balancing, and execution. In one implementation, zero value weights are grouped, permitting them to be skipped during execution.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method of implementing a neural network, comprising: receiving data for a trained neural network including feature maps and weights; reordering the feature maps and/or the weights of the trained neural network to generate a reordered version of the trained neural network; and after performing the reordering, compressing weights of the reordered version of the trained neural network. 2. The method of claim 1, wherein the reordering comprises reordering the feature maps of the neural network to reorder the weights of the neural network. 3. The method of claim 1, wherein the reordering comprises reordering the weights of the neural network to have a structure selected to improve compression efficiency compared with the weights of the received data. 4. The method of claim 1, wherein the reordering comprises reordering at least some of the weights to distribute weights based on a load balancing consideration. 5. The method of claim 1, wherein the reordering comprises grouping at least some weights by weight value. 6. The method of claim of claim 5, wherein at least some zero-value weights are grouped. 7. The method of claim 1, further comprising clustering the weights, prior to reordering, by mapping weights within a first number of different weight values to a second number of different weight values, where the second number is less than the first number. 8. The method of claim 1, further comprising reordering, prior to compression, indices of weights of reordered input and output nodes. 9. The method of claim 1, wherein the reordered version of the trained neural network is an equivalent version of the trained neural network. 10. The method of claim 1, wherein the reordering comprises generating remapping tables for a neural network to implement a remapping of feature maps to implement the reordered version of the trained neural network. 11. A method of executing a neural network, comprising: providing a model of a neural network, wherein the model corresponds to a reordered version of a trained neural network generated by reordering feature maps and/or weights of the trained neural network; and executing the model of the neural network. 12. The method of claim 11, wherein executing the model comprises skipping execution of groups of weights having all zeros. 13. The method of claim 11, wherein executing the model comprises skipping execution of distributed zero-value weights in a convolution mode. 14. The method of claim 11, wherein the reordered version comprises an ordering of the weights based on a load balancing condition for execution on a set of parallel processing input units. 15. The method of claim 11, wherein the model of the neural network is executed on a set of parallel processing input units and the reordered version has non-zero weight values distributed based on a load balancing condition such that for at least one convolutional layer each parallel processing unit operates on about the same average number of non-zero weights per cycle over a plurality of cycles. 16. The method of claim of claim 11, wherein the model comprises remapping tables for a neural network to implement a remapping of feature maps to implement the reordered version of the trained neural network. 17. The method of claim 16, wherein the remapping tables are utilized by hardware during execution to perform a reordering of feature maps. 18. The method of claim 11, wherein the reordered version is an equivalent network to the trained neural network or an optimized version of the trained neural network 19. The method of claim 11, wherein weights of the neural network are stored in a compressed format and the method further comprises: reading compressed weights; decompressing the compressed weights; skipping execution of zero-value weights, including at least one of skipping any clusters of weights in which all of the weights are zero for a fully connected layer or skipping execution of scattered zero-value weights for a convolution layer; and applying the remaining decompressed weights for neural network execution. 20. A computer readable medium comprising a non-transitory storage medium storing instruction which when executed on a processor implement a method, comprising: receiving data for a trained neural network including feature maps and weights; reordering the feature maps and/or the weights of the trained neural network to generate a reordered version of the trained neural network; and after performing the reordering, compressing weights of the reordered version of the trained neural network.