parser.add_argument('--input_features', type=int, default=3) parser.add_argument('--hidden_dim', type=int, default= 32) parser.add_argument('--output_dim', type=int, default=1) args = parser.parse_args() device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print("Using device {}.".format(device)) torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) optimizer = optim.Adam(model.parameters(), lr=args.lr) criterion = nn.BCELoss() train(model, train_loader, args.epochs, criterion, optimizer, device) model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f) # Save the model parameters model_path = os.path.join(args.model_dir, 'model.pth')
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.Adam(model.parameters()) criterion = nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = torch.optim.Adam(model.parameters()) criterion = torch.nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.Adam(model.parameters()) #default lr=0.001 criterion = torch.nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.Adam(model.parameters(), lr = 0.0001) criterion = torch.nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training model_params = list(model.parameters()) optimizer = optim.Adam(model_params, lr=args.lr) criterion = nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, }
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.SGD(model.parameters(), lr = 0.01) criterion = nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.Adam(model.parameters(), lr=1e-3) criterion = torch.nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999)) criterion = torch.nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier( args.input_features, args.hidden_dim, args.output_dim ).to(device) ## TODO: Define an optimizer and loss function for training BEST_LEARNING_RATE_ACCORDING_TO_REDDIT_ARTICLE = 0.0003 optimizer = optim.Adam(model.parameters(), lr=BEST_LEARNING_RATE_ACCORDING_TO_REDDIT_ARTICLE) criterion = nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)
print("List of classes: ", list(label_encoder.classes_)) ## Prepare Training and Testing dataset train_list, test_list, train_label, test_label = get_data( ROOT_DIR, label_encoder) train_set = Dataset_C3D(ROOT_DIR, train_list, train_label) valid_set = Dataset_C3D(ROOT_DIR, test_list, test_label) train_loader = data.DataLoader(train_set, **params) valid_loader = data.DataLoader(valid_set, **params) ## Initialize model classifier = BinaryClassifier() optimizer = torch.optim.Adam(list(classifier.parameters()), lr=LEARNING_RATE) # record training process epoch_train_losses = [] epoch_train_scores = [] epoch_test_losses = [] epoch_test_scores = [] # start training import time for epoch in range(epochs): # train, test model train_losses, train_scores = train(log_interval, classifier, device, train_loader, optimizer, epoch) epoch_test_loss, epoch_test_score = validation(classifier, device,
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir, args.train_file) ## --- Your code here --- ## # DONE : Build the model by passing in the input params model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) # DONE : Define an optimizer and loss function for training optimizer = torch.optim.Adam(model.parameters(), lr=args.learn_rate) criterion = nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) # DONE : complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, 'learn_rate': args.learn_rate
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim).to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.Adam(model.parameters(), lr=args.learning_rate) criterion = torch.nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim } torch.save(model_info, f)
torch.manual_seed(args.seed) # Load the training data. train_loader = _get_train_data_loader(args.batch_size, args.data_dir) ## --- Your code here --- ## ## TODO: Build the model by passing in the input params # To get params from the parser, call args.argument_name, ex. args.epochs or ards.hidden_dim # Don't forget to move your model .to(device) to move to GPU , if appropriate model = BinaryClassifier(args.input_features, args.hidden_dim, args.output_dim) model.to(device) ## TODO: Define an optimizer and loss function for training optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=0.9) criterion = nn.BCELoss() # Trains the model (given line of code, which calls the above training function) train(model, train_loader, args.epochs, criterion, optimizer, device) ## TODO: complete in the model_info by adding three argument names, the first is given # Keep the keys of this dictionary as they are model_info_path = os.path.join(args.model_dir, 'model_info.pth') with open(model_info_path, 'wb') as f: model_info = { 'input_features': args.input_features, 'hidden_dim': args.hidden_dim, 'output_dim': args.output_dim, } torch.save(model_info, f)