text: import torch
  import torch.nn.functional as F  
  import numpy as np
  from torch import nn
  from torch.autograd import Variable
  from random import shuffle
  from matplotlib.colors import rgb_to_hsv, hsv_to_rgb
  from PIL import Image
  import cv2
  
  def CE_Loss(inputs, target, num_classes=21):
      n, c, h, w = inputs.size()
      nt, ht, wt = target.size()
      if h != ht and w != wt:
          inputs = F.interpolate(inputs, size=(ht, wt), mode="bilinear", align_corners=True)
  
      temp_inputs = inputs.transpose(1, 2).transpose(2, 3).contiguous().view(-1, c)
      temp_target = target.view(-1)
  
      CE_loss  = nn.NLLLoss(ignore_index=num_classes)(F.log_softmax(temp_inputs, dim = -1), temp_target)
      return CE_loss
  
  def Dice_loss(inputs, target, beta=1, smooth = 1e-5):
      n, c, h, w = inputs.size()
      nt, ht, wt, ct = target.size()
      
      if h != ht and w != wt:
          inputs = F.interpolate(inputs, size=(ht, wt), mode="bilinear", align_corners=True)
      temp_inputs = torch.softmax(inputs.transpose(1, 2).transpose(2, 3).contiguous().view(n, -1, c),-1)
      temp_target = target.view(n, -1, ct)
  
      #--------------------------------------------#
      #   计算dice loss
      #--------------------------------------------#
      tp = torch.sum(temp_target[...,:-1] * temp_inputs, axis=[0,1])
      fp = torch.sum(temp_inputs                       , axis=[0,1]) - tp
      fn = torch.sum(temp_target[...,:-1]              , axis=[0,1]) - tp
  
      score = ((1 + beta ** 2) * tp + smooth) / ((1 + beta ** 2) * tp + beta ** 2 * fn + fp + smooth)
      dice_loss = 1 - torch.mean(score)
      return dice_loss