doing that with this training script:
def train():
    criterion = DiceLoss()
    optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
    num_steps_train = len(train_loader)
    
    print(num_steps_train)
    
    for epoch in range(epochs):
        t0 = time.time()
        for i, (images, masks) in enumerate(train_loader):
            images = images.to(device)
            masks = masks.to(device)
            outputs = model(images)
            outputs = torch.argmax(outputs, 1, keepdim=True)
            # outputs = combine_channel(outputs)
            outputs = outputs.to(device)            
            loss = criterion(outputs, masks)
            arr.append(loss)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
            print('\r Epoch {} of {}   {:.2f}% - loss: {:.4f} - ({:.2f}s)'
                       .format(epoch + 1, epochs, i * 100 / num_steps_train, float
                               (loss), time.time() - t0))
        models.append(model)

gives me this:
RuntimeError: "sigmoid_cuda" not implemented for 'Long'