【问题标题】:tf.nn.softmax_cross_entropy_with_logits how to use labelstf.nn.softmax_cross_entropy_with_logits 如何使用标签
【发布时间】:2019-01-30 11:10:50
【问题描述】:

对于一项作业,我应该为其中的一部分编写一个单层神经网络。我想我大部分的东西都是对的,但是当我尝试使用 tf.nn.softmax_cross_entropy_with_logits 方法时,我收到一条错误消息“ValueError:必须同时提供标签和 logits”。这显然意味着我需要同时提供标签和 logits,因为我现在只在我的代码中提供了 logits,所以我明白出了什么问题。我不明白的是,什么是标签以及在这种情况下如何使用它们?请记住,我在 tensorflow 和神经网络方面是相当新的和缺乏经验的。谢谢!

【问题讨论】:

  • 嗯标签是目标。在监督学习中,您为其提供学习目标。

标签: python-3.x tensorflow machine-learning neural-network computer-science


【解决方案1】:

在监督学习中,您必须与训练数据一起给出标签,softmax_cross_entropy_with_logits 计算 logits 和标签之间的 softmax 交叉熵。它有助于给出数据属于特定类别的概率。你可以在这里阅读更多关于它的信息https://www.tensorflow.org/api_docs/python/tf/nn/softmax_cross_entropy_with_logits

h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])

y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2    
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv))

我已经为您提供了 tensorflow 教程中使用softmax_cross_entropy_with_logits 的代码。这里y_ 是一个占位符,标签被输入到其中。 此外,softmax_cross_entropy_with_logits 目前已被弃用。

【讨论】:

  • 嗯,我想我明白了。我正在努力解决的另一部分任务是我们的输入有 shape=[None,784] 并且输出预计是 shape=[None,10] 与 layersize=10 的单层网络。我用 shape=[layersize,784] 创建了权重,然后乘以输入并添加了偏差,然后通过 softmax。这是正确的做法吗?
  • 关于标签的另一件事是,在这个作业中,我们只是创建网络,训练代码由提供给我们的代码处理,它不提供标签占位符的值。我将如何获得该标签的值?
  • 我认为最好不要这样做,因为这是大学作业。我想出了占位符和标签部分,所以谢谢你。我现在的问题是 tf.matmul。我的输入占位符大小为 None,784,据我从错误中可以看出,它输入了 256,784,但我的权重是 [10,784]。我的 matmul 矩阵大小不兼容。我该如何解决?
  • 您可以更改权重矩阵的尺寸以匹配您输入的尺寸
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 2014-05-17
  • 2019-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多