我目前正在使用在Keras中实现的U-Net(https://arxiv.org/pdf/1505.04597.pdf)来分割显微镜图像,并希望利用出版物中介绍的权重图 .

我无法找到如何将权重贴图单独加载到我的自定义丢失函数中,因此我决定将权重贴图和标签图像(通过图像乘法)组合并将它们作为y_true加载到我的网络中 .

现在我正在努力使用tensorflow操作将我的y_true分成真正的标签和我的体重图 . 下面是我需要在numpy数组上使用的公式,以将我的组合y_true拆分为真实的y_true和权重 .

# formula to retrieve weight map from new label
new[new > (new.max()/10)] /=10

# formula to retrieve original label from new label
new[new <= (new.max() / 10)] = 0
new[new != 0] = 255

我对张量流不太熟悉,但这是我到目前为止所做的:

# get maximum value from y_true 
max = tf.reduce_max(y_true)
# create divisor value
divider = tf.convert_to_tensor(10, y_true.dtype.base_dtype)
# (new.max()/10)    
new_max = tf.div(max, divider)

# new[new > (new.max()/10)] /= 10   
const = tf.convert_to_tensor(1, y_true.dtype.base_dtype)         
weights = tf.cond(y_true > new_max, lambda: tf.div(y_true, new_max), lambda: tf.div(y_true, const))

关于最后一个陈述,我认为这不能通过如上所述的tf.cond来解决?如何检查张量中的每个值是否满足特定条件,如果是,则对该条件执行计算?

谢谢你的帮助!