【问题标题】:Tensor MNIST tutorial - cross_entropy calculationTensor MNIST 教程 - cross_entropy 计算
【发布时间】:2018-07-18 05:27:50
【问题描述】:

我正在关注tensorflow:的本教程

将交叉熵函数的实现描述为:

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

首先,tf.log 计算 y 的每个元素的对数。接下来,我们 将 y_ 的每个元素与 y_ 的相应元素相乘 tf.log(y)。然后 tf.reduce_sum 添加第二个中的元素 y 的维度,由于 reduction_indices=1 参数。最后, tf.reduce_mean 计算批处理中所有示例的平均值。

据我了解,从阅读教程来看,y 的实际值和预测值都是 2D 张量。行是您使用的 MNIST 向量的数量,大小为 784,代表列。

上面的引用说“我们将 y_ 的每个元素与 tf.log(y) 的相应元素相乘”。

我的问题是 - 我们是否在这里进行传统的矩阵乘法,即行 x 列,因为这句话表明我们不是?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    传统的矩阵乘法只在计算模型hypothesis时使用,如代码中看到的将x乘以W

    y = tf.nn.softmax(tf.matmul(x, W) + b)
    

    代码块中的代码y_ * tf.log(y)

    cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y),
                                                      reduction_indices=[1]))
    

    original targets => y_predicted targets => y 的日志进行逐元素乘法

    计算交叉熵损失函数的目标是找出一个观察属于分类问题中特定类或组的概率。

    正是这个度量(即交叉熵损失)被优化函数最小化,梯度下降是一个流行的例子,可以为W找到最佳参数集,这将提高分类器的性能.我们说损失最小化是因为损失或错误成本越低,模型就越好。

    【讨论】:

      【解决方案2】:

      我们在这里进行元素乘法:y_ * tf.log(y)

      【讨论】:

        猜你喜欢
        • 2018-01-04
        • 2018-11-05
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 2018-02-06
        • 2016-12-09
        相关资源
        最近更新 更多