不支持变量值的问题,python



嗨,有人能帮我解决这个++问题吗?

loss += total_variation_weight * total_variation_loss(combination_image)

错误

RuntimeError: Variable += value not supported. Use variable.assign_add(value) to modify the variable value and variable = variable + value to get a new Tensor object. 

如何将+=替换为assign_add()调用?

这行得通吗?

loss.assign_add(total_variation_weight * total_variation_loss(combination_image))

问题是loss是一个张量对象,而不是一个常规的Python数字变量。一些对正则数值变量有效的东西对张量无效。

在这种情况下,它归结为价值与身份。对于数字,值恒等式。也就是说,如果您指定x = 1,然后执行x += 1,那么意图是明确的,并且不必担心您以某种方式将数字1全局转换为数字2。您刚刚更改了CCD_;包含";。

对于对象,您可以选择。您是修改现有的张量对象以使其具有新值,还是用新值创建新的张量对象?纯功能设计需要后者,但Python允许前者;你应该选择哪一个取决于你正在解决的问题的其他方面。

因此,正如消息所说:如果您想保留相同的Tensor对象,但要更改它所代表的值,请使用.assign_add方法。如果你想制作一个新的张量对象,请使用这个:

loss = loss + total_variation_weight * total_variation_loss(combination_image)

最新更新