val_batches = data_loader.prepare_batches(val_data, val_labels, batch_size) test_batches = data_loader.prepare_batches(test_data, test_labels, batch_size) print '# train:', train_data.shape[1], 'samples', len(train_batches), 'batches' print '# val:', val_data.shape[1], 'samples', len(val_batches), 'batches' print '# test:', test_data.shape[1], 'samples', len(test_batches), 'batches' # confussion matrix w = np.eye(10) * alpha + (1 - alpha) / 10.0 net.layers[-2].weight = data_loader.copy_to_gpu(w) if net_checkpoint.try_load(net) == False: # net.adjust_learning_rate(2) # net.adjust_learning_rate(1. + (1-alpha)/alpha/10) # net_trainer.train(net, 300, train_batches, val_batches, test_batches) # net.adjust_learning_rate(0.1) # net_trainer.train(net, 10, train_batches, val_batches, test_batches) # net.adjust_learning_rate(0.1) # net_trainer.train(net, 10, train_batches, val_batches, test_batches) net.adjust_learning_rate(1. + (1-alpha)/alpha/10) net.adjust_learning_rate(3) net_trainer.train(net, 50, train_batches, val_batches, test_batches) for i in range(10): net_trainer.train(net, 20, train_batches, val_batches, test_batches) net.adjust_learning_rate(0.1) net_trainer.train(net, 3, train_batches, val_batches, test_batches) net.adjust_learning_rate(0.1) net_trainer.train(net, 2, train_batches, val_batches, test_batches) net.adjust_learning_rate(100)
val_batches = data_loader.prepare_batches(val_data, val_labels, batch_size) test_batches = data_loader.prepare_batches(test_data, test_labels, batch_size) print '# train:', train_data.shape[1], 'samples', len(train_batches), 'batches' print '# val:', val_data.shape[1], 'samples', len(val_batches), 'batches' print '# test:', test_data.shape[1], 'samples', len(test_batches), 'batches' # confussion matrix w = np.eye(10) * alpha + (1 - alpha) / 10.0 net.layers[-2].weight = data_loader.copy_to_gpu(w) if net_checkpoint.try_load(net) == False: # net.adjust_learning_rate(2) # net.adjust_learning_rate(1. + (1-alpha)/alpha/10) # net_trainer.train(net, 300, train_batches, val_batches, test_batches) # net.adjust_learning_rate(0.1) # net_trainer.train(net, 10, train_batches, val_batches, test_batches) # net.adjust_learning_rate(0.1) # net_trainer.train(net, 10, train_batches, val_batches, test_batches) net.adjust_learning_rate(1. + (1 - alpha) / alpha / 10) net.adjust_learning_rate(3) net_trainer.train(net, 50, train_batches, val_batches, test_batches) for i in range(10): net_trainer.train(net, 20, train_batches, val_batches, test_batches) net.adjust_learning_rate(0.1) net_trainer.train(net, 3, train_batches, val_batches, test_batches) net.adjust_learning_rate(0.1) net_trainer.train(net, 2, train_batches, val_batches, test_batches) net.adjust_learning_rate(100)
train_data = train_data - data_mean test_data = test_data - data_mean noise_sz = int(sys.argv[1]) if noise_sz > 0: # noisy data noisy_data, noisy_labels = data_loader.load_noisy_labeled() noisy_data = noisy_data - data_mean noisy_data = noisy_data[:,0:noise_sz] noisy_labels = noisy_labels[0:noise_sz] train_data = np.concatenate((train_data, noisy_data), axis=1) train_labels = np.concatenate((train_labels, noisy_labels)) order = range(train_data.shape[1]) np.random.shuffle(order) train_data = train_data[:,order] train_labels = train_labels[order] N = int(np.floor(train_data.shape[1] / batch_size) * batch_size) train_data = train_data[:,0:N] train_labels = train_labels[0:N] train_batches = data_loader.prepare_batches(train_data, train_labels, batch_size) test_batches = data_loader.prepare_batches(test_data, test_labels, batch_size) print '# train:', train_data.shape[1], 'samples', len(train_batches), 'batches' print '# test:', test_data.shape[1], 'samples', len(test_batches), 'batches' net_trainer.train(net, 10, train_batches, test_batches) for k in range(5): train_batches2 = data_selection.get_new_batches(net, batch_size,train_batches, train_data, train_labels, 100000) net_trainer.train(net, 10, train_batches2, test_batches)
w[0,:] = w[0,:] + 0.2 l.weight = data_loader.copy_to_gpu(w) # prepare data train_data, train_labels, test_data, test_labels = data_loader.load_cifar10() data_mean = train_data.mean(axis=1,keepdims=True) train_data = train_data - data_mean test_data = test_data - data_mean # flip labels N = 50000 p = 0.2 for i in range(N): if np.random.rand() < p: train_labels[i] = 0 order = range(train_data.shape[1]) np.random.shuffle(order) train_data = train_data[:,order] train_labels = train_labels[order] train_batches = data_loader.prepare_batches(train_data, train_labels, batch_size) test_batches = data_loader.prepare_batches(test_data, test_labels, batch_size) print 'train:', train_data.shape[1], 'samples', len(train_batches), 'batches' print 'test:', test_data.shape[1], 'samples', len(test_batches), 'batches' net_trainer.train(net, num_epoch, train_batches, test_batches) net.adjust_learning_rate(0.1) net_trainer.train(net, 10, train_batches, test_batches) # net.adjust_learning_rate(0.1) # net_trainer.train(net, 10, train_batches, test_batches)
noise_sz = int(sys.argv[1]) if noise_sz > 0: # noisy data noisy_data, noisy_labels = data_loader.load_noisy_labeled() noisy_data = noisy_data - data_mean noisy_data = noisy_data[:, 0:noise_sz] noisy_labels = noisy_labels[0:noise_sz] train_data = np.concatenate((train_data, noisy_data), axis=1) train_labels = np.concatenate((train_labels, noisy_labels)) order = range(train_data.shape[1]) np.random.shuffle(order) train_data = train_data[:, order] train_labels = train_labels[order] N = int(np.floor(train_data.shape[1] / batch_size) * batch_size) train_data = train_data[:, 0:N] train_labels = train_labels[0:N] train_batches = data_loader.prepare_batches(train_data, train_labels, batch_size) test_batches = data_loader.prepare_batches(test_data, test_labels, batch_size) print '# train:', train_data.shape[1], 'samples', len(train_batches), 'batches' print '# test:', test_data.shape[1], 'samples', len(test_batches), 'batches' net_trainer.train(net, 10, train_batches, test_batches) for k in range(5): train_batches2 = data_selection.get_new_batches(net, batch_size, train_batches, train_data, train_labels, 100000) net_trainer.train(net, 10, train_batches2, test_batches)