1. An artificial neural network comprising: an input layer; at least one hidden layer; an output layer; and a parallelization subsystem configured to provide a variable degree of parallelization to the input layer, at least one hidden layer, and output layer, wherein the parallelization subsystem comprises: for each layer, a layer synchronization module, the layer synchronization module configured to: receive an output from the layer; synchronize the output from the layer based on the variable degree of parallelization; and provide the output from the layer to a next layer in the artificial neural network.