首页 > 解决方案 > 错误:优化器得到一个空的参数列表

问题描述

这是代码:

import torch
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from torch_geometric.datasets import Planetoid
from torch_geometric.nn import Node2Vec
from collections import namedtuple

dataset = Planetoid(root='tmp/', name='Cora')
data = dataset[0]

device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = Node2Vec(data.edge_index, embedding_dim=128, walk_length=20,
                 context_size=10, walks_per_node=10, num_negative_samples=1,
                 sparse=True).to(device)
loader = model.loader(batch_size=128, shuffle=True, num_workers=4)

optimizer = torch.optim.SparseAdam(model.parameters(), lr=0.01)

运行这些代码时

optimizer = torch.optim.SparseAdam(model.parameters(), lr=0.01)

我有:

ValueError: optimizer got an empty parameter list

我很困惑,我无法解决问题。谢谢你的帮助!

标签: pythonpytorch

解决方案


to()修改模型并返回一个张量。

这可能就是为什么您的模型的参数是一个空列表的原因。

尝试将您的代码修改为:

model = Node2Vec(data.edge_index, embedding_dim=128, walk_length=20,
             context_size=10, walks_per_node=10, num_negative_samples=1,
             sparse=True)
model.to(device)

推荐阅读