justanhduc / graphx-conv

Official implementation of GraphX-Convolution
https://justanhduc.github.io/2019/09/29/GraphX-Convolution.html
MIT License
62 stars 17 forks source link

RuntimeError: Expected 4-dimensional input for 4-dimensional weight 16 1 3 3, but got 3-dimensional input of size [4, 250, 3] instead #2

Closed xiaomingjie closed 4 years ago

xiaomingjie commented 4 years ago

Result folder: results\ICCV-lowrankgraphx-conv-up-final\run1 Training... C:\Users\37230\Anaconda3\lib\site-packages\torch\optim\lr_scheduler.py:100: UserWarning: Detected call of lr_scheduler.step() before optimizer.step(). In PyTorch 1.1.0 and later, you should call them in the opposite order: optimizer.step() before lr_scheduler.step(). Failure to do this will result in PyTorch skipping the first value of the learning rate schedule.See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate "https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate", UserWarning) 04/11/2019 10:04:23 Elapsed time 0.07mins Iteration 0/210066 (0.00%) Epoch 1
Traceback (most recent call last): File "train.py", line 89, in train_valid() File "C:\Users\37230\Anaconda3\lib\site-packages\gin\config.py", line 1073, in gin_wrapper utils.augment_exception_message_and_reraise(e, err_str) File "C:\Users\37230\Anaconda3\lib\site-packages\gin\utils.py", line 49, in augment_exception_message_and_reraise six.raise_from(proxy.with_traceback(exception.traceback), None) File "", line 3, in raise_from File "C:\Users\37230\Anaconda3\lib\site-packages\gin\config.py", line 1050, in gin_wrapper return fn(*new_args, new_kwargs) File "train.py", line 83, in train_valid mon.run_training(net, net.optim, train_loader, n_epochs, val_loader, valid_freq=val_freq, reduce='mean') File "C:\Users\37230\Anaconda3\lib\site-packages\neuralnet_pytorch\monitor.py", line 547, in run_training net.learn(optim, batch_cuda, args, kwargs) File "D:\projects\graphx-conv\src\networks.py", line 320, in learn loss = self.train_procedure(init_pc, input, gt_pc, reduce='mean') File "D:\projects\graphx-conv\src\networks.py", line 303, in train_procedure pred_pc = self(input, init_pc) File "C:\Users\37230\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 541, in call result = self.forward(*input, kwargs) File "D:\projects\graphx-conv\src\networks.py", line 289, in forward img_feats = self.img_enc(input) File "C:\Users\37230\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 541, in call result = self.forward(*input, *kwargs) File "D:\projects\graphx-conv\src\networks.py", line 198, in forward return super()._forward(input) File "D:\projects\graphx-conv\src\networks.py", line 126, in _forward output = block(output) File "C:\Users\37230\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 541, in call result = self.forward(input, kwargs) File "C:\Users\37230\Anaconda3\lib\site-packages\neuralnet_pytorch\layers.py", line 303, in forward input = module(input, *args, *kwargs) File "C:\Users\37230\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 541, in call result = self.forward(input, **kwargs) File "C:\Users\37230\Anaconda3\lib\site-packages\neuralnet_pytorch\layers.py", line 567, in forward input = self.activation(super().forward(input)) File "C:\Users\37230\Anaconda3\lib\site-packages\torch\nn\modules\conv.py", line 345, in forward return self.conv2d_forward(input, self.weight) File "C:\Users\37230\Anaconda3\lib\site-packages\torch\nn\modules\conv.py", line 342, in conv2d_forward self.padding, self.dilation, self.groups) RuntimeError: Expected 4-dimensional input for 4-dimensional weight 16 1 3 3, but got 3-dimensional input of size [4, 250, 3] instead In call to configurable 'GraphX' (<function train_valid at 0x00000233599A5DC8>)

justanhduc commented 4 years ago

hi. thanks for your interest. it seems that the input to the convolution is a point cloud, not image. i think you can try to change the order of the arguments.

the problem with the code is that neuralnet has been updated many times and there is no backward compatibility. you can download the first commit of this code. it runs on bare Pytorch so it should work fine. otherwise you have to debug by yourself or wait for my fix at least after my deadline which is middle of this month. please let me know if you need a fix i will try to work on that soon. sorry about that.

xiaomingjie commented 4 years ago

Yeah, I think it is an arguments order problem. So where should I check? In networks.py?

xiaomingjie commented 4 years ago

Fixed and I also create a pull request that may help you to fix these bugs.