Download test_encoder.py from arssite/ADAP_System__Alzheimer_Detection_Assessment__Prediction_System: direct link, hf CLI and curl.
- Browser
- Download file 3.44 kB
-
https://huggingface.co/spaces/arssite/ADAP_System__Alzheimer_Detection_Assessment__Prediction_System/resolve/main/test_encoder.py
- Command line
-
hf download hf://spaces/arssite/ADAP_System__Alzheimer_Detection_Assessment__Prediction_System/test_encoder.py
-
curl -L -o test_encoder.py https://huggingface.co/spaces/arssite/ADAP_System__Alzheimer_Detection_Assessment__Prediction_System/resolve/main/test_encoder.py
3.44 kB
| import argparse | |
| import logging | |
| import torch | |
| import torch.nn as nn | |
| from torch import cuda | |
| from torch.autograd import Variable | |
| from torch.utils.data import DataLoader,Dataset | |
| import torchvision | |
| from autoencoder import AutoEncoder | |
| from AD_3DRandomPatch import AD_3DRandomPatch | |
| logging.basicConfig( | |
| format='%(asctime)s %(levelname)s: %(message)s', | |
| datefmt='%Y-%m-%d %H:%M:%S', level=logging.INFO) | |
| parser = argparse.ArgumentParser(description="Starter code for AutoEncoder") | |
| parser.add_argument("--learning_rate", "-lr", default=1e-3, type=float, | |
| help="Learning rate of the optimization. (default=0.01)") | |
| parser.add_argument('--momentum', default=0.9, type=float, metavar='M', | |
| help='momentum') | |
| parser.add_argument('--weight-decay', '--wd', default=1e-4, type=float, | |
| metavar='W', help='weight decay (default: 1e-4)') | |
| parser.add_argument("--batch_size", default=1, type=int, | |
| help="Batch size for training. (default=1)") | |
| parser.add_argument("--gpuid", default=[0], nargs='+', type=int, | |
| help="ID of gpu device to use. Empty implies cpu usage.") | |
| parser.add_argument("--num_classes", default=2, type=int, | |
| help="Number of classes.") | |
| parser.add_argument("--epochs", default=20, type=int, | |
| help="Epochs through the data. (default=20)") | |
| def main(options): | |
| if options.num_classes == 2: | |
| TRAINING_PATH = 'train_2classes.txt' | |
| else: | |
| TRAINING_PATH = 'train.txt' | |
| IMG_PATH = './Image' | |
| dset_train = AD_3DRandomPatch(IMG_PATH, TRAINING_PATH) | |
| train_loader = DataLoader(dset_train, | |
| batch_size = options.batch_size, | |
| shuffle = True, | |
| num_workers = 4, | |
| drop_last = True | |
| ) | |
| sparsity = 0.05 | |
| beta = 0.5 | |
| mean_square_loss = nn.MSELoss() | |
| kl_div_loss = nn.KLDivLoss(reduce=False) | |
| use_gpu = len(options.gpuid)>=1 | |
| autoencoder = AutoEncoder() | |
| if(use_gpu): | |
| autoencoder = autoencoder.cuda() | |
| else: | |
| autoencoder = autoencoder.cpu() | |
| optimizer = torch.optim.Adam(autoencoder.parameters(), lr=options.learning_rate, weight_decay=options.weight_decay) | |
| train_loss = 0. | |
| for epoch in range(options.epochs): | |
| print("At {0}-th epoch.".format(epoch)) | |
| for i, patches in enumerate(train_loader): | |
| print i | |
| print len(patches) | |
| # for batch in patches: | |
| # batch = Variable(batch).cuda() | |
| # output, mean_activitaion = autoencoder(batch) | |
| # loss = mean_square_loss(batch, output) + kl_div_loss(mean_activitaion, sparsity) | |
| # train_loss += loss | |
| # logging.info("batch {0} training loss is : {1:.5f}".format(i, loss.data[0])) | |
| # optimizer.zero_grad() | |
| # loss.backward() | |
| # optimizer.step() | |
| # train_avg_loss = train_loss/len(train_loader*1000) | |
| # print("Average training loss is {0:.5f} at the end of epoch {1}".format(train_avg_loss.data[0], epoch)) | |
| # torch.save(model.state_dict(), open("autoencoder_model", 'wb')) | |
| if __name__ == "__main__": | |
| ret = parser.parse_known_args() | |
| options = ret[0] | |
| if ret[1]: | |
| logging.warning("unknown arguments: {0}".format(parser.parse_known_args()[1])) | |
| main(options) |