首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TF/Keras稀疏分类交叉性

TF/Keras稀疏分类交叉性
EN

Stack Overflow用户
提问于 2019-08-11 20:54:40
回答 1查看 389关注 0票数 1

我的数据被粗略地贴上了一个类别“重要性”的标签。基本上,标签是0..5并且具有相同的含义-它们表示相同的事件,只是具有不同的突出度。想象一个阳光明媚的海滩?,你的数据是波浪在沙子上滚动的力(或者另一种解释-每个波浪传播的距离海滩边缘,并被分成5个箱/类别)。

我的问题是-如果我使用稀疏分类交叉点来预测波类别,TF/Keras模型是否会“理解”5比4大(更好/更有信息量),4比3更大等等。

它能不能推断出标签值是相互关联的呢?标签序列1 2 3 4 5不是与5 4 3 2 1相同吗?

数据支持上述事实,但模型会解决这一问题吗?我能做些什么来让模型更容易呢?

或者换句话说,在解释分类标签值的意义上,稀疏分类交叉的内在实现是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-08-11 21:24:32

这是一个非常好的问题。这是我对你的问题的直觉。稀疏分类交叉熵将每个类别作为一个不同的类别进行威胁。因此,假设您的标签是[0,0,1,0,0,0],那么在[0,1,0,0,0,0]3[0,0,1,0,0,0]的labels之间没有任何联系。另一方面,您的标签指示单个事件的大小,其中5是最大值,0是最小值。因此,我会将您的标签标准化为:

代码语言:javascript
复制
labels = labels / max(labels)

然后计算单个事件的S形交叉熵,其中1.0表示最高概率,0.0表示最低概率。从这个意义上说,你的标签应该在下面的[0.0, 0.2, 0.4, 0.6, 0.8, 1.0]范围内。您可以通过以下方式完成此操作:

代码语言:javascript
复制
# Random labels
labels = np.array([0, 1, 4, 2, 1, 3, 4, 0, 5])
# Normalized labels
labels = labels / np.amax(labels)
# Random logits
logits = np.array([1.0, 0.5, 0.4, 0.1, 0.3, 0.6, 0.1, 0.9, 0.2])
loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=labels, logits=logits)
with tf.Session() as sess:
    sess.run(loss)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57450105

复制
相关文章

相似问题

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