在运行基于gluonts软件包的scoregrad模型时出现IndexError: tensors used as indices must be long, byte or bool tensors

IndexError: tensors used as indices must be long, byte or bool tensors

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    这个问题的错误提示很明显,索引必须是一个long、byte或bool tensor,但p_inds是一个floatTensor类型的tensor,因此需要将其转化为long类型。 下面是可能的解决方案:

    1. 检查代码中是否有将tensor类型转化为float类型的操作,如果有,可以考虑将其改为long类型或bool类型。

    2. 在p_inds被使用之前,可以使用.long()将其转化为long类型。代码可以像下面一样:

    p_inds, n_inds = p_inds.long(), n_inds.long()
    p_local_features = local_features[p_inds]  # 使用p_inds进行索引p_inds是long类型的tensor
    
    1. 如果使用以上方法仍然遇到错误,可以检查索引中是否有负数或过大的数值,如果有,可以尝试对其进行调整或截断,以保证其在索引范围内。 如果以上方法均不起作用,可能需要检查代码中更深层次的问题,或者参考其他相关问题的解决方案。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^