为什么我们在optimizer.apply_gradients(zip(grads,self.generator.trainable_variables))
中使用zip ?它是如何工作的?
当使用tape.gradient()
计算梯度时,它返回权重和偏差的梯度作为列表的列表。
的例子:
毕业生=[[[1,2,3],[1]],[[2、3、4],[2]]]# Op从
tape.gradient()
应该解释[[[W]、[B ] ], [ [ W]、[B]]]
将其视为trainable_weights或Initialized_weights
trainable_weights =[[[2、3、4],[0 ] ], [ [ 1、5、6],[8]]]
因此Zip将取两个变量的第一个值并将它们压缩以使优化器最小化。
压缩后的zip(grads,trainable_weights)
值看起来像这样。
[[1, 2, 3],[1]],[[2、3、4],[0]]
[[2,3,4], [2]], [[1,5,6], [8]]