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)
Пример #2
0
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)
Пример #4
0
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)