Skip to main content
 首页 » 编程设计

python之tensorflow.get_collection()中的collection是否清空

2025年04月02日28lyj

我正在通过斯坦福类(class)学习使用 Tensorflow 的神经网络。我在实现 RNN 时发现了这一点,但不太明白为什么会累积损失:

# This adds a loss operation to the Graph for batch training 
def add_loss_op(self, output): 
    all_ones = [tf.ones([self.config.batch_size * self.config.num_steps])] 
    cross_entropy = sequence_loss( 
        [output], [tf.reshape(self.labels_placeholder, [-1])], all_ones, len(self.vocab)) 
    tf.add_to_collection('total_loss', cross_entropy) 
    # Doesn't this increase in size every batch of training? 
    loss = tf.add_n(tf.get_collection('total_loss'))  
    return loss 

get_collection() 的文档 here没有提及有关清除变量的任何内容。由于这是针对每个训练步骤运行的,因此损失是否会在每个时期/小批量训练中增加并结转?

我对神经网络还是个新手,所以请纠正我对此的任何误解!

请您参考如下方法:

我相信这里的 add_n 实际上只是为了确保将“total_loss”集合中任何预先存在的损失添加到最终结果中。它不会更改任何变量,只是将其输入相加并返回总数。