mean = (255 - 0) / 2 # images contain values in range [0, 255] training_images = (training_images.astype(np.float32) - mean) / mean training_images = torch.tensor(training_images, device=device) # Transform training labels to tensor training_labels = torch.tensor(training_labels, device=device, dtype=torch.int64) # Set up TensorBoard writer = SummaryWriter(TENSORBOARD_DIR) writer.add_graph(neuralnet, training_images) # Define loss function and optimizer criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(neuralnet.parameters(), lr=LEARNING_RATE) print('Start training...') start_time_training = timer() for epoch in range(NUM_EPOCHS): start_time_epoch = timer() average_loss = 0.0 # 100 mini-batch updates per epoch for i in range(100): random_indexes = np.random.choice(len(training_images), MINBATCH) minbatch = training_images[random_indexes] minbtach_labels = training_labels[random_indexes] optimizer.zero_grad()