implement train
delete nnet_train.o
use callbacks in train func