def evaluation(logits, labels, images, nlabels, loss_type):
'''
A function for evaluating the performance of the netwrok on a minibatch. This function returns the loss and the
current foreground Dice score, and also writes example segmentations and imges to to tensorboard.
:param logits: Output of network before softmax
:param labels: Ground-truth label mask
:param images: Input image mini batch
:param nlabels: Number of labels in the dataset
:param loss_type: Which loss should be evaluated
:return: The loss without weight decay, the foreground dice of a minibatch
'''
mask = tf.arg_max(tf.nn.softmax(logits, dim=-1), dimension=-1) # was 3
mask_gt = labels
tf.summary.image('example_gt', prepare_tensor_for_summary(mask_gt, mode='mask', nlabels=nlabels))
tf.summary.image('example_pred', prepare_tensor_for_summary(mask, mode='mask', nlabels=nlabels))
tf.summary.image('example_zimg', prepare_tensor_for_summary(images, mode='image'))
total_loss, nowd_loss, weights_norm = loss(logits, labels, nlabels=nlabels, loss_type=loss_type)
cdice_structures = losses.per_structure_dice(logits, tf.one_hot(labels, depth=nlabels))
cdice_foreground = cdice_structures[:,1:]
cdice = tf.reduce_mean(cdice_foreground)
return nowd_loss, cdice
评论列表
文章目录