def main(batchsize=10, lr=0.01, epochs=10, frac_dset=1., fname=''): tform = transforms.transformation( [transforms.ToTensor(), transforms.Standardize()]) trainset = mnist_dataset(train=True, download=True, frac=frac_dset, transform=tform) trainloader = dataloader(trainset, batchsize) testset = mnist_dataset(train=False, download=True, transform=tform) testloader = dataloader(testset, batchsize) model = Model() optimizer = optim.SGD(model.get_parameters(), lr=lr) criterion = loss.MSELoss() if fname == '': fout = None else: fout = open(fname, 'w') t1 = time.time() for epoch in range(epochs): train(model, criterion, optimizer, trainloader, epoch, fout=fout) test(model, criterion, testloader, epoch, fout=fout) if epoch % 10 == 9: optimizer._lr *= 0.1 t2 = time.time() output_str = 'Total Training Time: %.2f seconds' % (t2 - t1) if fout is None: print(output_str) else: fout.write(output_str + '\n') fout.close()
def main(batchsize=10, lr=0.01, epochs=10, k=5, frac_dset=1., fname=''): tform = transforms.transformation([transforms.ToTensor()]) trainset = mnist_dataset(train=True, download=True, frac=frac_dset, oneHot=False, transform=tform) trainset._images = trainset._images / 255. mean = np.expand_dims(np.mean(trainset._images, axis=0), 0) std = np.expand_dims(np.std(trainset._images, axis=0), 0) std[std <= 0.03] = 1 trainset._images = (trainset._images - mean) / std trainloader = dataloader(trainset, batchsize) testset = mnist_dataset(train=False, download=True, oneHot=False, transform=tform) testset._images = testset._images / 255. testset._images = (testset._images - mean) / std testloader = dataloader(testset, batchsize) model = Model(k) optimizer = optim.SGD(model.get_parameters(), lr=lr) criterion = loss.MSELoss() if fname == '': fout = None else: fout = open(fname, 'w') t1 = time.time() for epoch in range(epochs): train(model, criterion, optimizer, trainloader, epoch, fout=fout) test(model, criterion, testloader, epoch, fout=fout) t2 = time.time() output_str = 'Total Training Time: %.2f seconds' % (t2-t1) if fout is None: print(output_str) else: fout.write(output_str+'\n') fout.close()