嗨,有人能帮我解决这个++问题吗?
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)