] model = Model( layers=layers, num_classes=10, optimizer=GDMomentumOptimizer(lr=1e-3, mu=0.9), ) print("\n\n------------------------------------") print("Initialize: {}".format(initializer)) print("\nRun training:\n------------------------------------") stats = model.train(data_set=data, method='dfa', num_passes=num_passes, batch_size=50) loss, accuracy = model.cost(*data.test_set()) print("\nResult:\n------------------------------------") print('loss on test set: {}'.format(loss)) print('accuracy on test set: {}'.format(accuracy)) statistics.append(stats) plt.title('Loss') plt.xlabel('epoch') plt.ylabel('loss') for stats in statistics: train_loss = scipy.ndimage.filters.gaussian_filter1d(stats['train_loss'], sigma=10) plt.plot(np.arange(len(stats['train_loss'])), train_loss) plt.legend(labels, loc='upper right') plt.grid(True)
def animate(i): ax1.clear() ax1.plot(np.arange(len(model_dfa.statistics['train_loss'])), model_dfa.statistics['train_loss']) ax1.plot(np.arange(len(model_bp.statistics['train_loss'])), model_bp.statistics['train_loss']) dfa_train_thread = threading.Thread(target=Trainer(model_dfa, 'dfa')) bp_train_thread = threading.Thread(target=Trainer(model_bp, 'bp')) dfa_train_thread.start() bp_train_thread.start() ani = animation.FuncAnimation(fig, animate, interval=1000) plt.show() dfa_train_thread.join() bp_train_thread.join() loss, accuracy = model_dfa.cost(*data.test_set()) print("\nResult DFA:\n------------------------------------") print('loss on test set: {}'.format(loss)) print('accuracy on test set: {}'.format(accuracy)) loss, accuracy = model_bp.cost(*data.test_set()) print("\nResult BP:\n------------------------------------") print('loss on test set: {}'.format(loss)) print('accuracy on test set: {}'.format(accuracy))