gpt4 book ai didi

tensorflow - 可变长度 rnn 填充和屏蔽填充梯度

转载 作者:行者123 更新时间:2023-12-03 00:40:54 25 4
gpt4 key购买 nike

我正在构建一个 rnn 并使用 sequene_length 参数来提供批处理中序列的长度列表,并且批处理中的所有序列都填充到相同的长度。

但是,在进行反向传播时,是否可以屏蔽掉与填充步骤相对应的梯度,从而使这些步骤对权重更新的贡献为 0?我已经像这样屏蔽了它们相应的成本(其中batch_weights是0和1的向量,其中与填充步骤对应的元素是0):

loss = tf.mul(tf.nn.sparse_softmax_cross_entropy_with_logits(logits, tf.reshape(self._targets, [-1])), batch_weights)

self._cost = cost = tf.reduce_sum(loss) / tf.to_float(tf.reduce_sum(batch_weights))

问题是我不确定通过执行上述操作,填充步骤的梯度是否归零?

最佳答案

对于所有逐帧/前馈(非循环)操作,掩盖损失/成本就足够了。

对于所有序列/循环操作(例如dynamic_rnn),总是有一个sequence_length参数,您需要将其设置为相应的序列长度。那么零填充步骤将不会有梯度,或者换句话说,它将有 0 贡献。

关于tensorflow - 可变长度 rnn 填充和屏蔽填充梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35732281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com