python - 错误:优化器得到一个空的参数列表
问题描述
这是代码:
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
我很困惑,我无法解决问题。谢谢你的帮助!
解决方案
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)
推荐阅读
- python - 如何在python中拟合三个高斯峰?
- sql - 如何从 SQL 中的同一个表中进行递归选择?
- delphi - Delphi try..finally 退出 10.1 和 10.2 版本之间的行为变化
- c# - 给定玩家可以访问哪些位置?
- rust - 尝试使用 dyn AsyncReadExt,“无法将特征制成对象”错误
- powershell - PowerShell 中的“Select”和“Select-Object”有什么区别?
- arrays - Excel 筛选功能 - 选择要返回的溢出列
- styled-components - 在样式化组件中使用主题时如何添加背景图像?
- reactjs - TypeScript 中 FieldArray 的 Redux 表单验证
- python - 使用 boto3 更新 DynamoDb