Python 在多维标签的情况下,我们为什么需要分摊损失?
我正在学习TensorFlow的教程。 有两件事我不明白: 首先,在定义损失时,作者指出,在多维标签的情况下,除以一个示例的形状: “如果Python 在多维标签的情况下,我们为什么需要分摊损失?,python,tensorflow,Python,Tensorflow,我正在学习TensorFlow的教程。 有两件事我不明白: 首先,在定义损失时,作者指出,在多维标签的情况下,除以一个示例的形状: “如果标签是多维的,则平均每个样本中元素数量的每例损失。例如,如果预测形状是(批次大小,H,W,n类)且标签是(批次大小,H,W),您将需要更新每个示例的损失,例如:每个示例的损失/=tf.cast(tf.reduce\u prod(tf.shape(labels)[1:],tf.float32)” 我们为什么要这样重新计算损失 其次,一个一般性问题:我注意到有几个
标签
是多维的,则平均每个样本中元素数量的每例损失
。例如,如果预测形状是(批次大小,H,W,n类)
且标签是(批次大小,H,W)
,您将需要更新每个示例的损失,例如:每个示例的损失/=tf.cast(tf.reduce\u prod(tf.shape(labels)[1:],tf.float32)
”
我们为什么要这样重新计算损失
其次,一个一般性问题:我注意到有几个函数将与strategy.scope()一起使用注释。如果这个对象是全局可用的,那么我们可以像这样在全局级别定义一个函数
with strategy.scope():
def example_function():
#do stuff
如果对象在全局范围内不可用,我们必须按如下方式构造代码:
def train():
strategy = ...
with strategy.scope():
def sub_function1():
#do stuff
这就产生了一个大函数,train()
,其中包含许多短子函数。我希望在与train()
相同的级别上定义子函数,而不使用全局策略
对象。
是否有解决方法来实现此目的?对于其他用户,此问题已得到回答