【问题标题】:How is Cross Entropy Loss Converted to a Scalar During Optimization?优化期间如何将交叉熵损失转换为标量?
【发布时间】:2018-06-27 23:55:51
【问题描述】:

我有一个关于如何定义神经网络的基本初学者问题,我正在 Keras 库的背景下学习。按照 MNIST hello world 程序,我定义了这个网络:

model = Sequential()
model.add(Dense(NB_CLASSES, input_shape=(RESHAPED,), activation='softmax'))

我的理解是,这会创建一个有两层的神经网络,在这种情况下,RESHAPED 是 784,NB_CLASSES 是 10,所以网络将有 1 个输入层,有 785 个神经元,一个输出层有 10 个神经元神经元。

然后我添加了这个:

model.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER, metrics=['accuracy'])

我知道已经阅读了分类交叉熵的公式,但它似乎是按输出节点计算的。我的问题是,在训练期间,如何组合交叉熵的值来创建标量值目标函数?这只是一个平均值吗?

【问题讨论】:

    标签: neural-network keras keras-layer loss-function cross-entropy


    【解决方案1】:

    Keras 计算每个实例损失值的平均值,可能是加权的(如果您有兴趣,请参阅 sample_weight_mode 参数)。

    这里是对源代码的引用:training.py。如您所见,结果值通过K.mean(...),确保结果为标量。

    然而,一般来说,可以通过不同的方式减少损失,例如,只是一个总和,但它通常表现更差,所以平均值更可取(参见this question)。

    【讨论】:

    • 感谢马克西姆,非常有意义!对于链接,超级有用。
    猜你喜欢
    • 2021-08-25
    • 2018-09-03
    • 2016-08-01
    • 2019-06-19
    • 2021-02-03
    • 2018-04-12
    • 2017-03-14
    • 1970-01-01
    • 2020-10-09
    相关资源
    最近更新 更多