【问题标题】:PyTorch - modifications of autograd variablesPyTorch - autograd 变量的修改
【发布时间】:2018-09-06 18:36:23
【问题描述】:

在我的 PyTorch 程序中,我有一个在运行时不断更新的矩阵。

我想知道如何执行此更新。我尝试使用这样的东西:

matrix[0, index] = hidden[0]

matrixhidden 都是 autograd 变量。使用上面的示例时,我收到以下错误消息:

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation

我想知道如何解决这个问题并在不使用就地操作的情况下执行更新。

可能切片矩阵并使用 torch.cat 创建一个新矩阵会起作用,但这似乎不是一个很好的解决方案。

有更好的方法吗?

提前致谢!

【问题讨论】:

    标签: python gradient torch pytorch autograd


    【解决方案1】:

    也许发布一段代码会有所帮助,但是您是否尝试过使用数据集?您可以使用它高效地依次遍历数据。

    http://pytorch.org/docs/master/data.html#torch.utils.data.TensorDataset

    【讨论】:

    • 感谢您的回答!我使用 index_copy() 解决了这个问题,它工作得很好而且很有效,让我在没有就地 OP 的情况下修改矩阵。但是您的链接看起来仍然很有趣,以前我一直在寻找类似的东西。很高兴知道,谢谢! (我无法导入 torch.utils.data 但我猜它是在 v0.3.1 之后添加的。)
    • 不客气 :) 对了,好像是在v0.4中添加的
    猜你喜欢
    • 2020-05-12
    • 2021-09-20
    • 2021-10-02
    • 2020-05-13
    • 2017-10-27
    • 2021-07-23
    • 1970-01-01
    • 2018-12-05
    • 2020-01-11
    相关资源
    最近更新 更多