首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tensorflow tf.losses.softmax_cross_entropy?

如何使用tensorflow tf.losses.softmax_cross_entropy?
EN

Stack Overflow用户
提问于 2019-06-18 06:27:26
回答 1查看 479关注 0票数 0

我正在做一些语义分割问题,需要定义损失函数。

有人知道如何使用tensorflow "tf.losses.softmax_cross_entropy“吗?

文档中说,函数的第一个输入是onehot_labels,那么我们是否需要先将像素类标签转换为一个热编码格式,并将一个热编码输入到该函数中?

或者我们可以在这篇文章sigmoid_cross_entropy loss function from tensorflow for image segmentation中直接输入像tf.losses.sigmoid_cross_entropy这样的像素类标签

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-06-18 11:44:34

我基本上解决了我的问题,请看下面的演示代码。

代码语言:javascript
复制
# each element is a class label for vectors (eg,[2,1,3]) in logits1
indices = [[1, 0],[1, 0]]
# each 1d vector eg [2,1,3] is a prediction vector for 3 classes 0,1,2;
# i.e., class 0 is predicted to be 2 and class 1 is predicted to be 1
# softmax will map this to corresponding probabilities
logits1 = np.array([  [[2.0,1.,3.],[2.,1,3]],   [[1.0,2.,3.],[2.,1,3]]   ])
print(logits1)
depth = 3

# first go to one hot encode format
# depth is nb of classes
encode = tf.one_hot(indices, depth)
# dim of encode must be equal to dim of logits
test = tf.losses.softmax_cross_entropy(onehot_labels = encode, logits = logits1)
init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    init_op.run()
    print(sess.run(encode))
    print(sess.run(test))

这个函数的实际作用如下:

代码语言:javascript
复制
(-np.log(np.exp(1)/(np.exp(1)+np.exp(2)+np.exp(3)))-np.log(np.exp(2)/(np.exp(2)+np.exp(1)+np.exp(3))))/4 +\
(-np.log(np.exp(2)/(np.exp(1)+np.exp(2)+np.exp(3)))-np.log(np.exp(2)/(np.exp(2)+np.exp(1)+np.exp(3))))/4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56639621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档