optimize some sgd update steps
Allow float 32/64 in SGD
Add SoftMax