【发布时间】:2019-08-27 05:51:31
【问题描述】:
假设我想创建一个大小为 [2,3] 且填充了随机元素的 torch.tensor 对象,并且我打算在网络中使用这个矩阵并优化它的值。但是,我只想更新矩阵中的一些值。
我知道可以通过将参数requires_grad 设置为True 或False 来为张量完成。但是,下面的代码
z = torch.rand([2,3], requires_grad=True)
z[-1][-1].requires_grad=False
没有按预期工作
RuntimeError: you can only change requires_grad flags of leaf variables. If you want to use a computed variable in a subgraph that doesn't require differentiation use var_no_grad = var.detach().
如何修复这个 RuntimeError?如何初始化torch张量,然后定义哪些元素会有requires_grad =True?
如果我以类似的方式编写代码:
z = torch.rand([2,3], requires_grad=False)
z[-1][-1].requires_grad=True
不会有错误,但 requires_grad 也不会改变。
【问题讨论】:
标签: python pytorch tensor gradient-descent