我使用了带有元组的哈希函数,但它不起作用

发布于 2025-01-09 21:03:15 字数 839 浏览 2 评论 0原文

实际上我正在研究 Pytorch 和 Pytorch Geometric。

我制作了数据

x = torch.tensor([[1], [1], [1], [1], [1]], dtype=torch.float)

edge_index = torch.tensor([[0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4],
                           [1, 4, 0, 2, 1, 3, 4, 2, 4, 0, 2, 3]], dtype=torch.long)

并执行了 WLConv 的过程(来自文档)

adj_t = edge_index
isinstance(adj_t, SparseTensor)

adj_t = SparseTensor(row=edge_index[1], col=edge_index[0],
                                 sparse_sizes=(x.size(0), x.size(0)))

out=[]

col
_, col, _ = adj_t.coo()
deg = adj_t.storage.rowcount().tolist()

print(zip(x.tolist(), x[col].split(deg)))
for node, neighbors in zip(x.tolist(), x[col].split(deg)):
    idx = hash(tuple([node] + neighbors.sort()[0].tolist()))

但是,发生了错误:unhashable type: 'list' 我认为这已经足够了,因为我做了元组,但是出了什么问题?

Actually I am studying Pytorch and Pytorch Geometric.

I made my data

x = torch.tensor([[1], [1], [1], [1], [1]], dtype=torch.float)

edge_index = torch.tensor([[0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4],
                           [1, 4, 0, 2, 1, 3, 4, 2, 4, 0, 2, 3]], dtype=torch.long)

and do the process of WLConv(from docs)

adj_t = edge_index
isinstance(adj_t, SparseTensor)

adj_t = SparseTensor(row=edge_index[1], col=edge_index[0],
                                 sparse_sizes=(x.size(0), x.size(0)))

out=[]

col
_, col, _ = adj_t.coo()
deg = adj_t.storage.rowcount().tolist()

print(zip(x.tolist(), x[col].split(deg)))
for node, neighbors in zip(x.tolist(), x[col].split(deg)):
    idx = hash(tuple([node] + neighbors.sort()[0].tolist()))

However, Error happens : unhashable type: 'list'
I think it is enough because I made tuple, but what was wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文