device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # Load Data train_dataset = datasets.MNIST( root="../dataset/", train=True, transform=transforms.ToTensor(), download=True ) train_loader = DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True, num_workers=128) test_dataset = datasets.MNIST( root="../dataset/", train=False, transform=transforms.ToTensor(), download=True ) test_loader = DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=True) # Initialize network model = CNN.CNN_2().to(device) # Choose network CNN_1 or CNN_2 # Loss and optimizer criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=learning_rate, momentum=momentum) # Train Network for epoch in range(n_epochs): print("EPOCH", epoch) for batch_idx, (data, targets) in enumerate(train_loader): # get data to cuda if possible data = data.to(device=device) targets = targets.to(device=device) # forward