Main function to carry out the training loop. This function creates the generator and data loaders. Then, it trains the generator. """ device = 'cuda' if torch.cuda.is_available() else 'cpu' RANDOM_ALL = True PRECROP = True if DATASET.lower() == 'ntu' else False VP_VALUE_COUNT = 1 if DATASET.lower() == 'ntu' else 3 CLOSE_VIEWS = True if DATASET.lower() == 'panoptic' else False if DATASET.lower() == 'ntu': data_root_dir, train_split, test_split, param_file, weight_file = ntu_config() # generator model = FullNetwork(vp_value_count=VP_VALUE_COUNT, stdev=STDEV, output_shape=(BATCH_SIZE, CHANNELS, FRAMES, HEIGHT, WIDTH)) model = model.to(device) if device == 'cuda': net = torch.nn.DataParallel(model) cudnn.benchmark = True criterion = nn.MSELoss() optimizer = optim.Adam(model.parameters(), lr=LR) # data trainset = NTUDataset(root_dir=data_root_dir, data_file=train_split, param_file=param_file, resize_height=HEIGHT, resize_width=WIDTH, clip_len=FRAMES, skip_len=SKIP_LEN, random_all=RANDOM_ALL, precrop=PRECROP) trainloader = torch.utils.data.DataLoader(trainset, batch_size=BATCH_SIZE, shuffle=True, num_workers=2)
""" device = 'cuda' if torch.cuda.is_available() else 'cpu' RANDOM_ALL = True PRECROP = True if DATASET.lower() == 'ntu' else False VP_VALUE_COUNT = 1 if DATASET.lower() == 'ntu' else 3 CLOSE_VIEWS = True if DATASET.lower() == 'panoptic' else False vgg_weights_path, i3d_weights_path, gen_weights_path, disc_weights_path = pretrained_weights_config() # generator generator = FullNetwork(vp_value_count=VP_VALUE_COUNT, stdev=STDEV, output_shape=(BATCH_SIZE, CHANNELS, FRAMES, HEIGHT, WIDTH), pretrained=True, vgg_weights_path=vgg_weights_path, i3d_weights_path=i3d_weights_path) if GEN_PRETRAINED: generator.load_state_dict(torch.load(gen_weights_path)) generator = generator.to(device) # discriminator discriminator = Discriminator(in_channels=3, pretrained=GEN_PRETRAINED, weights_path=disc_weights_path) discriminator = discriminator.to(device) if device == 'cuda': net = torch.nn.DataParallel(generator) cudnn.benchmark = True # Loss functions criterion = nn.MSELoss() adversarial_loss = nn.BCELoss() perceptual_loss = vgg16().to(device) # categorical_loss = torch.nn.CrossEntropyLoss() # continuous_loss = torch.nn.MSELoss()