You need to enable JavaScript to run this app. 使用PyTorch张量创建邻接矩阵时报int对象不支持赋值错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用PyTorch张量创建邻接矩阵时报int对象不支持赋值错误如何解决

问题原因

你遇到的报错和函数本身的逻辑无关,是调用函数时传入的参数不是你预期的torch.Tensor类型,实际传入了整数类型的值。
你单独运行代码时提前给a赋值为torch.rand(3,3)生成的张量,所以索引赋值操作可以正常执行;但调用create_adj的时候大概率是直接传入了邻接矩阵的尺寸整数(比如create_adj(3)),函数拿到的参数a是int类型,自然不支持张量的索引赋值操作,就抛出了对应错误。

验证方法

你可以在函数第一行新增打印逻辑,确认输入参数的实际类型:

def create_adj(a):
    # 新增此行查看输入的实际类型和值
    print(f"输入参数类型:{type(a)},输入参数值:{a}")
    a[a>0.5] = 1
    a[a<=0.5] = 0
    return a
正确使用方式

方式1:保持原函数逻辑,调用时传入张量参数

import torch
# 先生成随机张量再传入函数
input_tensor = torch.rand(3,3)
adj_matrix = create_adj(input_tensor)
print(adj_matrix)

方式2:调整函数参数为尺寸,内部生成张量

如果你希望直接传入邻接矩阵的边长生成对应矩阵,可以修改函数逻辑:

def create_adj(matrix_size):
    a = torch.rand(matrix_size, matrix_size)
    a[a>0.5] = 1
    a[a<=0.5] = 0
    return a

# 调用示例:生成3*3的随机邻接矩阵
adj_matrix = create_adj(3)

内容的提问来源于stack exchange,提问作者James Arten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 22:51:00