Neural network 在优化过程中,交叉熵损失如何转化为标量?
关于神经网络是如何定义的,我有一个基本的初学者问题,我正在Keras库中学习。根据MNIST hello world计划,我定义了这个网络:Neural network 在优化过程中,交叉熵损失如何转化为标量?,neural-network,keras,keras-layer,loss-function,cross-entropy,Neural Network,Keras,Keras Layer,Loss Function,Cross Entropy,关于神经网络是如何定义的,我有一个基本的初学者问题,我正在Keras库中学习。根据MNIST hello world计划,我定义了这个网络: model = Sequential() model.add(Dense(NB_CLASSES, input_shape=(RESHAPED,), activation='softmax')) 我的理解是,这将创建一个具有两层的神经网络,在这种情况下,重塑的为784,nbu类为10,因此该网络将有一个输入层785个神经元和一个输出层10个神经元 然后我补
model = Sequential()
model.add(Dense(NB_CLASSES, input_shape=(RESHAPED,), activation='softmax'))
我的理解是,这将创建一个具有两层的神经网络,在这种情况下,重塑的
为784,nbu类
为10,因此该网络将有一个输入层785个神经元和一个输出层10个神经元
然后我补充说:
model.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER, metrics=['accuracy'])
我知道我已经读过分类交叉熵的公式,但它似乎是按每个输出节点计算的。我的问题是,在训练过程中,如何将交叉熵的值结合起来创建一个标量值目标函数?它只是一个平均值吗?Keras计算每个实例损失值的平均值,可能加权(如果您感兴趣,请参阅
sample\u weight\u mode
参数)
以下是对源代码的引用:。如您所见,结果值经过K.mean(…)
,这确保了结果是标量
但是,一般来说,可以通过不同的方式减少损失,例如,只减少一笔损失,但通常情况下损失更大,因此平均值更可取(请参见)。感谢Maxim,这非常有意义!对于链接,非常有用。