:param x: tuple (s, V) of `torch.Tensor` :param edge_index: array of shape [2, n_edges] :param edge_attr: tuple (s, V) of `torch.Tensor`
(self, x, edge_index, edge_attr)
| 271 | self.message_func = nn.Sequential(*module_list) |
| 272 | |
| 273 | def forward(self, x, edge_index, edge_attr): |
| 274 | ''' |
| 275 | :param x: tuple (s, V) of `torch.Tensor` |
| 276 | :param edge_index: array of shape [2, n_edges] |
| 277 | :param edge_attr: tuple (s, V) of `torch.Tensor` |
| 278 | ''' |
| 279 | x_s, x_v = x |
| 280 | message = self.propagate(edge_index, |
| 281 | s=x_s, v=x_v.reshape(x_v.shape[0], 3*x_v.shape[1]), |
| 282 | edge_attr=edge_attr) |
| 283 | return _split(message, self.vo) |
| 284 | |
| 285 | def message(self, s_i, v_i, s_j, v_j, edge_attr): |
| 286 | v_j = v_j.view(v_j.shape[0], v_j.shape[1]//3, 3) |