我已经看到了这个问题的所有变体,但仍在努力正确地实现它。我有四个类别(0背景,1-组织type1,2-组织type2,3-莫名其妙地跳过,和4-组织型4...BrATs数据集)的地面真实分割面具的脑部MRI图像。
我已经实现了一个基本的U-Net架构,但在将其扩展到非二进制分类时遇到了困难。特别是损失函数。
这就是我所实现的,但我显然忽略了一些重要的细节:
[...]
output = tf.layers.conv2d_transpose(
conv18,
filters=5,
kernel_size=1,
strides=1,
padding='same',
data_format='channels_last',
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=tf.zeros_initializer(),
kernel_regularizer=tf.contrib.layers.l2_regularizer(reg),
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name='output',
reuse=None
)
我认为(0,1,2,3,4)可能的掩码值的5个过滤器是正确的。然后,我使用了以下损失函数:
loss = tf.nn.sparse_softmax_cross_entropy_with_logits(
_sentinel=None,
labels=label,
logits=output,
name='cross_ent_loss'
)
return tf.reduce_mean(loss)
在这里,逻辑将从上面传递输出,标签将是我堆叠的掩码图像n_batch,x_dim,y_dim,1。看文档,我知道我没有传递标签正确的张量。
我做得对吗?如何使用包含在1掩码图像中的多类标签来实现丢失?
https://stackoverflow.com/questions/54041135
复制