python - 我如何解决backward()得到了一个意外的关键字参数'retain_variables'?
问题描述
我写了下面的代码,但我收到了这个错误:
TypeError: backward() got an unexpected keyword argument 'retain_variables'
我的代码是:
def learn(self, batch_state, batch_next_state, batch_reward, batch_action):
outputs = self.model(batch_state).gather(1, batch_action.unsqueeze(1)).squeeze(1)
next_outputs = self.model(batch_next_state).detach().max(1)[0]
target = self.gamma*next_outputs + batch_reward
td_loss = F.smooth_l1_loss(outputs, target)
self.optimizer.zero_grad()
td_loss.backward(retain_variables = True)
self.optimizer.step()
解决方案
我遇到了同样的问题。这个解决方案对我有用。
td_loss.backward(retain_graph = True)
有效。
推荐阅读
- vba - Access VBA 中的图表/图形
- sml - 为什么 List 结构中的某些函数需要“List”前缀而有些则不需要?
- c# - 从嵌套用户控件 (MVVM) 导出数据
- javascript - 从不同按钮调用 JS/jQuery 函数的问题
- c# - 使用相机脚本在对撞机处旋转角色
- java - 如何用不同类的对象填充数组?详情如下
- validation - 在 Vaadin 8 中调用验证用户反馈,无需 binder 和 bean
- string - 字符串切片是否执行基础数据的复制?
- google-app-engine - 带有 App Engine 的 Google Domains 无法正常工作
- git - 将来自两个独立存储库的项目合并为一个