Closed hagianga21 closed 4 years ago
data = Batch.from_data_list(dataset)
Hi, I got this error: IndexError: dimension specified as 0 but tensor has no dimensions
Here is my list:
[Data(B_corr=[3, 2], edge_index=[2, 736], pos=[97, 2], val=[], valid_set=[3], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 686], pos=[92, 2], val=[], valid_set=[8], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 618], pos=[85, 2], val=[], valid_set=[15], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 694], pos=[93, 2], val=[], valid_set=[7], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 756], pos=[99, 2], val=[], valid_set=[1], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 638], pos=[87, 2], val=[], valid_set=[13], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 660], pos=[89, 2], val=[], valid_set=[11], x=[100, 2], xn=[2, 1], y=[100, 1]), Data(B_corr=[3, 2], edge_index=[2, 744], pos=[98, 2], val=[], valid_set=[2], x=[100, 2], xn=[2, 1], y=[100, 1])]
What's the value of val
? Can you cast it to a 1-dim tensor?
Awesome. Thank you so much.
When I pass again to my network, it gives the errors: RuntimeError: copy_if failed to synchronize: cudaErrorAssert: device-side assert triggered
My Data:
Batch(B_corr=[24, 2], B_corr_batch=[24], batch=[800], edge_index=[2, 5386], pos=[723, 2], pos_batch=[723], val=[8, 1], valid_set=[77], x=[800, 2], xn=[16, 1], y=[800, 1])
My Network: ` class DQN(torch.nn.Module): def init(self, n_actions): super(DQN, self).init() self.conv1 = GCNConv(2, 32) self.conv2 = GCNConv(32, 16)
self.lin1 = torch.nn.Linear(2, 16)
self.lin2 = torch.nn.Linear(32, 16)
self.lin3 = torch.nn.Linear(16, n_actions)
def forward(self, data):
#Process Data
pos, edge_index, xn, val, B_corr, valid_set = data.pos, data.edge_index, data.xn, data.val, data.B_corr, data.valid_set
pos_batch = data.pos_batch
B_corr_batch = data.B_corr_batch
#Branch 1
x = self.conv1(pos, edge_index)
x = F.relu(x)
x = F.dropout(x, training=self.training)
x = self.conv2(x, edge_index)
x = global_max_pool(x, pos_batch)
#Add Corr Features
corr_features = self.lin1(B_corr)
corr_features = global_max_pool(corr_features, B_corr_batch)
#Total branch
x = torch.cat([x, corr_features], dim=1)
#print(x.shape)
x = self.lin2(x)
x = self.lin3(x)
return x `
Does it because of different input size elements in batch?
Can you look at the error message when running on CPU?
RuntimeError Traceback (most recent call last)
That indicates that edge_index
has a value greater than 722. That may happen because it shapes of x
and pos
do not match. You can fix that by setting data.num_nodes
explicitly for each graph.
Thank you so much. It's solved.
❓ Questions & Help
Hi, my dataset size is 32. I only want to create one batch and feed them all to my network. How could I do it? Thank you so much.