- real support for batch gradient descent (vectorized operations)
- problem: classification uses softmax + MSE, need to support NLL instead