python - 变量值不支持问题,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。您刚刚更改了x
“包含”的数字。
对于对象,您可以选择。您是修改现有的 Tensor 对象以使其具有新值,还是从新值中创建一个新的 Tensor 对象?纯函数式设计需要后者,但 Python 允许前者;您应该选择哪一个取决于您正在解决的问题的其他方面。
所以就像消息说的那样:如果你想保持相同的 Tensor 对象但改变它所代表的值,使用.assign_add
方法。如果你想创建一个新的张量对象,请改用这个:
loss = loss + total_variation_weight * total_variation_loss(combination_image)
推荐阅读
- signalr - 如何将 SignalR IHubContext 正确注入 Quartz.net 作业?
- c# - 使用对 Textfield Unity 的引用编译错误
- powerbi - 使用重复数据创建 idex
- angular - 角度单元测试 NullInjectorError: R3InjectorError(DynamicTestModule)[MatSnackBarComponent -> MatSnackBarComponent]:
- google-ads-api - 了解“keyword_view”报告
- python - 使现有函数可从类中访问
- css - 如何纠正由 transform:translateY() 导致的页面中断流?
- c++ - 如何在flutter中调用C++类方法
- node.js - 浏览 mongoose 中的每条记录,查看特定列与数组中的项目匹配的次数
- python - 以日期时间为索引绘制数据框,仅在 python 的 x 轴上显示小时、分钟和秒