当我做loss backward的时候,遇到这个问题。
先是查到,这个问题可以通过autograd.variable解决,我将最后得到loss的中间变量加上之后觉得无法利用之前的信息
手写双线性插值也并不能解决这个问题
在pytorch社区发现类似问题,有人提出,不用index,而是用 gather, index_put_ , masked_scatter_ or grid_sample ,给我提供了解决方法。
https://discuss.pytorch.org/t/leaf-variable-moved-into-graph-interior/17489/5
有了整体方向,接下来一个比较大的问题,就是我发现这些函数都是针对某行或者某列操作,交叉用的话,还是需要提取最后得到的矩阵的对角线的值,还没无法避免取[index]的过程。
解决方法是,用.view(-1)将矩阵拉平,再找对应的值。
后面还涉及到我以为torch.cat没法把我的两个行向量组成一个两行的矩阵,最后发现是需要用unsqueeze进行维度扩展等等,不过都是小问题,卡的时间不久。