self.gat1 = GATConv(self.input_dim, self.hidden_dim, dropout=0.5, heads=self.heads)
self.gat2 = GATConv(self.hidden_dim*self.heads, self.out_dim, dropout=0.5, heads=1, concat=False)
self.inner_attention = nn.Sequential(
self.gat1,
nn.ReLU(),
nn.Dropout(p=0.6),
self.gat2,
nn.ReLU()
)
# 请问我这样调用的时候为什么会报错啊?谢谢
x, edge_index = graph_data.x, graph_data.edge_index
out = self.inner_attention()(x, edge_index)
TypeError: forward() missing 1 required positional argument: 'input'
pytorch与PyG
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 爱晚乏客游 2022-01-07 10:23关注
我还以为是你自己实现的网络结构呢。。如果是自带的话,那就是输入格式的问题了。具体你可以看看这个,Sequential多输入需要封装一下。
https://blog.csdn.net/qq_23968185/article/details/108277724
或者你可以直接写在forward()里面,不用Sequential。import torch import torch.nn as nn import torch.nn.functional as F from torch_geometric.nn import GATConv from torch_geometric.data import Data class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.gat1 = GATConv(self.input_dim, self.hidden_dim, dropout=0.5, heads=self.heads) self.gat2 = GATConv(self.hidden_dim * self.heads, self.out_dim, dropout=0.5, heads=1, concat=False) def forward(self, data): x, edge_index = data.x, data.edge_index x = self.gat1(x, edge_index) x = F.relu(x) x = F.dropout(x, training=self.training) x = self.gat2(x, edge_index) x = F.relu(x) return x #返回什么自己确定下 edge_index = torch.tensor([[0, 1, 1, 2],[1, 0, 2, 1]], dtype=torch.long) x = torch.tensor([[-1], [0], [1]], dtype=torch.float) data = Data(x=x, edge_index=edge_index) model=Net() out=model(data) print(out)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 SQL Server下载
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
- ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
- ¥15 python爬取bilibili校园招聘网站
- ¥30 求解达问题(有红包)
- ¥15 请解包一个pak文件
- ¥15 不同系统编译兼容问题
- ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
- ¥30 数字电源对DSP芯片的具体要求