Traceback (most recent call last): File "E:/403/myworld/GraphNet.py", line 14, in <module> g.ndata['feat'] = feat File "D:\code\myworld\lib\site-packages\dgl\view.py", line 99, in __setitem__ self._graph._set_n_repr(self._ntid, self._nodes, {key: val}) File "D:\code\myworld\lib\site-packages\dgl\heterograph.py", line 4346, in _set_n_repr if F.context(val) != self.device: File "D:\code\myworld\lib\site-packages\dgl\backend\pytorch\tensor.py", line 99, in context return input.device AttributeError: 'numpy.ndarray' object has no attribute 'device' 进程已结束,退出代码1
时间: 2023-07-21 19:07:02 浏览: 49
这个错误发生在使用 DGL 库设置节点属性时,因为传入的特征值是 Numpy 数组,而不是 PyTorch 张量。可以将 Numpy 数组转换为 PyTorch 张量,例如:
```python
import torch
import numpy as np
feat = np.ones((10, 16))
feat_tensor = torch.from_numpy(feat)
g.ndata['feat'] = feat_tensor
```
这里我们将 Numpy 数组 `feat` 转换为 PyTorch 张量 `feat_tensor`,然后将其设置为节点特征。
相关问题
Traceback (most recent call last): File "E:/403/myworld/GraphNet.py", line 4, in <module> from torch_geometric.nn import SAGEConv ModuleNotFoundError: No module named 'torch_geometric'
这错误提示是因为没有安装 `torch_geometric` 模块。可以使用以下命令安装:
```shell
pip install torch-geometric
```
如果你使用的是conda环境,可以使用以下命令安装:
```shell
conda install pytorch-geometric -c rusty1s -c conda-forge
```
安装完成后,再次运行代码即可。
Traceback (most recent call last): File "E:/403/myworld/GraphNet.py", line 22, in <module> g.ndata['label'] = torch.from_numpy([labels]) TypeError: expected np.ndarray (got list)
这个错误是因为你传递给`torch.from_numpy()`函数的参数是一个列表,而不是一个NumPy数组。你需要先将列表转换为NumPy数组,然后再将其传递给该函数。
例如,假设你的标签列表是`labels_list`,你可以使用以下代码将其转换为NumPy数组:
```
import numpy as np
labels_array = np.array(labels_list)
```
然后你可以将`labels_array`传递给`torch.from_numpy()`函数:
```
g.ndata['label'] = torch.from_numpy(labels_array)
```
这样就不会出现上述错误了。