def create_data_loader(config, drop_last=True, shuffle=True): if config.data['type'] == 'synthetic': dataset = SyntheticDataset(config) else: NotImplementedError dataloader = DataLoader(dataset=dataset, batch_size=config.training['batch_size'], shuffle=shuffle, drop_last=drop_last, pin_memory=True, num_workers=config.system['num_workers']) return dataloader
import warnings; warnings.simplefilter('ignore') device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") random.seed(0) # parameters batch_size = 100 N = 500 N_input = 20 N_output = 20 sigma = 0.01 gamma = 0.01 # Load synthetic dataset X_train_input,X_train_target,X_test_input,X_test_target,train_bkp,test_bkp = create_synthetic_dataset(N,N_input,N_output,sigma) dataset_train = SyntheticDataset(X_train_input,X_train_target, train_bkp) dataset_test = SyntheticDataset(X_test_input,X_test_target, test_bkp) trainloader = DataLoader(dataset_train, batch_size=batch_size,shuffle=True, num_workers=1) testloader = DataLoader(dataset_test, batch_size=batch_size,shuffle=False, num_workers=1) def train_model(net,loss_type, learning_rate, epochs=1000, gamma = 0.001, print_every=50,eval_every=50, verbose=1, Lambda=1, alpha=0.5): optimizer = torch.optim.Adam(net.parameters(),lr=learning_rate) criterion = torch.nn.MSELoss() huber_loss = torch.nn.SmoothL1Loss() for epoch in range(epochs): for i, data in enumerate(trainloader, 0): inputs, target, _ = data