train_loss = sum_loss/N        
    train_data.append(float(train_loss))
    if epoch % show_interval == 0:
        print '\tepoch :'+str(epoch)
        print '\ttrain mean loss='+str(train_loss)+" next save :"+str(min_loss)
        print '\ttime sum : {}[sec] ave : {}[sec]'.format(sum_time,sum_time/time_count) 
#%%
    key = cv2.waitKey(1)
    if key in [myl.KEY_ESC, ord('q')]:
        break
    
    if min_loss > train_loss and not train_loss == 0 :
        network.saveModel('model/_model_pred'+str(epoch))
        min_loss = train_loss*save_rate   

    if epoch > n_epoch:
        print '\n!test clear! : '+str(train_loss)
        break
#%%
print '\n---Save model\n'
network.saveModel('model/_model_pred'+str(epoch))

print '\n---Save graph\n'
g_size = (8,6)
g_legend = ["train_loss"]
g_title = "Loss of digit recognition. lasl train loss :"+str(train_loss)  
g_file_name = 'graph_train_loss'+str(epoch)+'.png'
myl.showGraphData(train_data,g_size,g_legend,g_title,g_file_name)

cv2.destroyAllWindows()