Giter Site home page Giter Site logo

stevenygd / pointflow Goto Github PK

View Code? Open in Web Editor NEW
717.0 19.0 97.0 71.99 MB

PointFlow : 3D Point Cloud Generation with Continuous Normalizing Flows

Home Page: https://www.guandaoyang.com/PointFlow/

License: MIT License

Python 76.69% Shell 3.33% Makefile 2.54% C++ 5.77% Cuda 11.67%
3d-point-clouds continuous-normalizing-flows shapes machine-learning computer-vision pytorch

pointflow's Introduction

PointFlow : 3D Point Cloud Generation with Continuous Normalizing Flows

This repository contains a PyTorch implementation of the paper:

PointFlow : 3D Point Cloud Generation with Continuous Normalizing Flows.
Guandao Yang*, Xun Huang*, Zekun Hao, Ming-Yu Liu, Serge Belongie, Bharath Hariharan (* equal contribution)
ICCV 2019 (Oral)

Introduction

As 3D point clouds become the representation of choice for multiple vision and graphics applications, the ability to synthesize or reconstruct high-resolution, high-fidelity point clouds becomes crucial. Despite the recent success of deep learning models in discriminative tasks of point clouds, generating point clouds remains challenging. This paper proposes a principled probabilistic framework to generate 3D point clouds by modeling them as a distribution of distributions. Specifically, we learn a two-level hierarchy of distributions where the first level is the distribution of shapes and the second level is the distribution of points given a shape. This formulation allows us to both sample shapes and sample an arbitrary number of points from a shape. Our generative model, named PointFlow, learns each level of the distribution with a continuous normalizing flow. The invertibility of normalizing flows enables computation of the likelihood during training and allows us to train our model in the variational inference framework. Empirically, we demonstrate that PointFlow achieves state-of-the-art performance in point cloud generation. We additionally show our model is able to faithfully reconstruct point clouds and learn useful representations in an unsupervised manner.

Examples

Dependencies

  • Python 3.6
  • CUDA 10.0.
  • G++ or GCC 5.
  • PyTorch. Codes are tested with version 1.0.1
  • torchdiffeq.
  • (Optional) Tensorboard for visualization of the training process.

Following is the suggested way to install these dependencies:

# Create a new conda environment
conda env create -f env.yaml
conda activate PointFlow 

# Compile structural losses, etc., but this step is not required 
# as there is a version of EMD/CD not requiring the CUDA kernel.
./install.sh

Dataset

The point clouds are uniformly sampled from meshes from ShapeNetCore dataset (version 2) and use the official split. Please use this link to download the ShapeNet point cloud. The point cloud should be placed into data directory.

mv ShapeNetCore.v2.PC15k.zip data/
cd data
unzip ShapeNetCore.v2.PC15k.zip

Please contact us if you need point clouds for the ModelNet dataset.

Training

Example training scripts can be found in scripts/ folder.

# Train auto-encoder (no latent CNF)
./scripts/shapenet_airplane_ae.sh # Train with single GPU, about 7-8 GB GPU memory
./scripts/shapenet_airplane_ae_dist.sh # Train with multiple GPUs

# Train generative model
./scripts/shapenet_airplane_gen.sh # Train with single GPU, about 7-8 GB GPU memory 
./scripts/shapenet_airplane_gen_dist.sh # Train with multiple GPUs 

Pre-trained models and test

Pretrained models can be downloaded from this link. The following is the suggested way to evaluate the performance of the pre-trained models.

unzip pretrained_models.zip;  # This will create a folder named pretrained_models

# Evaluate the reconstruction performance of an AE trained on the airplane category
CUDA_VISIBLE_DEVICES=0 ./scripts/shapenet_airplane_ae_test.sh; 

# Evaluate the reconstruction performance of an AE trained with the whole ShapeNet
CUDA_VISIBLE_DEVICES=0 ./scripts/shapenet_all_ae_test.sh;

# Evaluate the generative performance of PointFlow trained on the airplane category.
CUDA_VISIBLE_DEVICES=0 ./scripts/shapenet_airplane_gen_test.sh

Demo

The demo relies on Open3D. The following is the suggested way to install it:

conda install -c open3d-admin open3d 

The demo will sample shapes from a pre-trained model, save those shapes under the demo folder, and visualize those point clouds. Once this dependency is in place, you can use the following script to use the demo for the pre-trained model for airplanes:

CUDA_VISIBLE_DEVICES=0 ./scripts/shapenet_airplane_demo.sh

Point cloud rendering

Please refer to the following github repository for our point cloud rendering code: https://github.com/zekunhao1995/PointFlowRenderer.

Cite

Please cite our work if you find it useful:

@article{pointflow,
 title={PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows},
 author={Yang, Guandao and Huang, Xun and Hao, Zekun and Liu, Ming-Yu and Belongie, Serge and Hariharan, Bharath},
 journal={arXiv},
 year={2019}
}

pointflow's People

Contributors

stevenygd avatar watarungurunnn avatar xunhuang1995 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pointflow's Issues

How to understand divergence_approx

I'm trying to understand divergence_approx. I am not sure what exactly it is trying to compute, I suppose something related to the trace of the Jacobian, that is equation 7 in your paper (linking in case the numbering differed between versions or something).

I am confused on two levels. Firstly, I don't know what the variables mean: the function arguments are called (f, y, e) but the function returns something called dzdx and finally it is called in a context where f=dy and y=y, so it would compute something related to d^2y/y^2?? Secondly, I don't understand the overall implementation, why is it looping (and seemingly computing the same thing in a loop, since this call is equivalent to that from line 10 and its parameters are not being updated between the iterations. Finally, why is the e parameter fixed?

Thank you in advance for your response

Test results does not match Table1 in the paper

Hi, thanks for releasing the code.

I tried to run CUDA_VISIBLE_DEVICES=0 ./scripts/shapenet_airplane_gen_test.sh and get the following numbers:

#JSD:0.049739675370807035
 #{'1-NN-CD-acc': 0.5679012537002563,  # In table 1: 1-NN-CD=75.68 
 # '1-NN-EMD-acc': 0.5827160477638245, # In table 1: 1-NN-EMD=75.06
# 'lgan_cov-CD': 0.3580246865749359,  # In table 1: Cov-CD=46.91
# 'lgan_co -EMD': 0.3580246865749359, # In table 1: Cov-EMD=48.40
# 'lgan_mmd-CD': 0.00066999567206949, # In table 1: MMD-CD=0.000217
# 'lgan_mmd-EMD': 0.04634664207696915,# In table 1: MMD-EMD=0.0324

and other number:

# 'lgan_mmd_smp-CD': 0.00022050135885365307,
# 'lgan_mmd_smp-EMD': 0.0322880782186985}
# '1-NN-EMD-acc_f': 0.3333333432674408, # acc tn / (tn+tp)
# '1-NN-EMD-acc_t': 0.8320987820625305, # acc tp / (tp+fn)
# '1-NN-CD-acc_f': 0.2987654209136963,
# '1-NN-CD-acc_t': 0.8370370268821716,

Here is the table 1 from the paper:
image

It seems that only the JSD is close to the reported number in the paper ?

about loss

Hello, I would like to ask about the loss. I have been training for a long time, but the loss has always been large, which is maintained at about 30000.
Have I not been training long enough?Finally, after you've trained 15,000 EPOCHs, what is loss going to be?THANKS

Stuck during training

When I trained PointFlow on shapenet airplane class, it was stuck during training after epoch 9.
Does anybody know how to solve this problem?
pointflow_bug

Processes and GPU:0 Memory

Hello Guandao,

I am training your code with 8 GPUs, and I see that every process leaves some space on GPU:0. This limits the GPU utilization. I was wondering if this behavior should be expected, and if you know what might be the cause of this.

Thank you.

Cannot execute StructuralLosses

Hi,

Interesting work! I'd like to run the pipeline but it turns out that the installed "StructuredLosses" doesn't work. It shows error of:
"File "evaluation_metrics.py", line 9, in
from .StructuralLosses.match_cost import match_cost
ModuleNotFoundError: No module named 'main.StructuralLosses'; 'main' is not a package"

Would that be a workaround?

How to generate ShapeNetCore.v2.PC15k file?

I can see that the file can be downloaded from the Google Drive link provided in this repository.
However, I wish to know how you generated such file.
Many of the ShapeNetCore meshes are 1) not watertight and 2) contains reversed mesh faces.
I wish to know 1) how you defined surface from such noisy meshes and 2) how you sampled point from the surface?

ImportError: No module named StructuralLossesBackend

Traceback (most recent call last):
File "test.py", line 4, in
from metrics.evaluation_metrics import EMD_CD
File "/media/Drives/PointFlow-master/metrics/evaluation_metrics.py", line 9, in
from .StructuralLosses.match_cost import match_cost
File "/media/Drives/PointFlow-master/metrics/StructuralLosses/match_cost.py", line 3, in
from metrics.StructuralLosses.StructuralLossesBackend import ApproxMatch, MatchCost, MatchCostGrad
ImportError: No module named StructuralLossesBackend

TypeError: zip argument #1 must support iteration

Thanks for sharing this nice code. I tried to run the autoencoder script without dist, but get some error. It seems that I have got some output which is not iterable?

BTW, I am using python 3.7 with virtualenv, not conda and python3.6.
Pytorch version is 1.0.1.

Traceback (most recent call last):                                                                                    
  File "train.py", line 272, in <module>                                                                              
    main()                                                                                                            
  File "train.py", line 268, in main                                                                                  
    main_worker(args.gpu, save_dir, ngpus_per_node, args)                                                             
  File "train.py", line 176, in main_worker                                                                           
    out = model(inputs, optimizer, step, writer)                                                                      
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/modules/module.py", line 489
 in __call__                                                                                                          
    result = self.forward(*input, **kwargs)                                                                           
  File "/usr/people/jingpeng/workspace/PointFlow/models/networks.py", line 133, in forward                            
    z_mu, z_sigma = self.encoder(x)                                                                                   
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/modules/module.py", line 489
 in __call__                                                                                                          
    result = self.forward(*input, **kwargs)                                                                           
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", 
ine 144, in forward                                                                                                   
    return self.gather(outputs, self.output_device)                                                                   
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", 
ine 156, in gather                                                                                                    
    return gather(outputs, output_device, dim=self.dim)                                                               
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/parallel/scatter_gather.py",
line 67, in gather                                                                                                    
    return gather_map(outputs)                                                                                        
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/parallel/scatter_gather.py",
line 62, in gather_map                                                                                                
    return type(out)(map(gather_map, zip(*outputs)))                                                                  
  File "/usr/people/jingpeng/workspace/PointFlow/jwu/lib/python3.7/site-packages/torch/nn/parallel/scatter_gather.py",
line 62, in gather_map                                                                                                
    return type(out)(map(gather_map, zip(*outputs)))                                                                  
TypeError: zip argument #1 must support iteration                                                                     

Varying #samples during training and test time

Hi, thank you for releasing the code.

I ran the airplane experiments and found that the number of samples of each shape (tr_max_sample_points in args.py) is set to be 2048. Is it possible to vary the number of samples during training with the same network ? Or it just means maximum points and we can handle shape with fewer points by padding zeros ?

I am also wondering if it's possible to reconstruct more samples up to 4096 during test time after training on max. 2048 samples. Thanks in advance.

ModelNet40 和ModelNet10数据集

您好,请问下您能分享下这两个数据集吗?我想在这两个数据集上运行下,看下对应数据集的效果,非常感谢!!

Validation set and Test set

It seems that the validation set used In train.py and the test set used in test.py are the same since they are obtained through the same function 'get_datasets' in datasets.py

I'm wondering whether the authors used the test set or the validation for the reported result in the paper of PointFlow.

Compilation Error

Tried to install using the ./install.sh command. What ensued was an extremely long compilation error. I don't know where to start debugging this, but it appears the error is in compilation of structural_loss.o

I am on python3.6 (conda), CUDA 10.1, pytorch 1.7.1.

The error is actually far too large to paste here, so I'm abridging much of the middle of the stack trace.

For what it's worth, my gcc and g++ version are both 5.5.0.

$ ./install.sh 
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/user1/anaconda3/envs/PointFlow

  added / updated specs:
    - matplotlib
    - numpy
    - pillow
    - scikit-learn
    - scipy
    - tqdm


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    kiwisolver-1.3.0           |   py36h2531618_0          80 KB
    matplotlib-base-3.3.2      |   py36h817c723_0         5.1 MB
    scikit-learn-0.23.2        |   py36h0573a6f_0         5.0 MB
    scipy-1.5.2                |   py36h0b6359f_0        14.4 MB
    tornado-6.1                |   py36h27cfd23_0         581 KB
    ------------------------------------------------------------
                                           Total:        25.2 MB

The following NEW packages will be INSTALLED:

  cycler             pkgs/main/linux-64::cycler-0.10.0-py36_0
  dbus               pkgs/main/linux-64::dbus-1.13.18-hb2f20db_0
  expat              pkgs/main/linux-64::expat-2.2.10-he6710b0_2
  fontconfig         pkgs/main/linux-64::fontconfig-2.13.0-h9420a91_0
  glib               pkgs/main/linux-64::glib-2.66.1-h92f7085_0
  gst-plugins-base   pkgs/main/linux-64::gst-plugins-base-1.14.0-hbbd80ab_1
  gstreamer          pkgs/main/linux-64::gstreamer-1.14.0-hb31296c_0
  icu                pkgs/main/linux-64::icu-58.2-he6710b0_3
  joblib             pkgs/main/noarch::joblib-1.0.0-pyhd3eb1b0_0
  kiwisolver         pkgs/main/linux-64::kiwisolver-1.3.0-py36h2531618_0
  libgfortran-ng     pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
  libuuid            pkgs/main/linux-64::libuuid-1.0.3-h1bed415_2
  libxcb             pkgs/main/linux-64::libxcb-1.14-h7b6447c_0
  libxml2            pkgs/main/linux-64::libxml2-2.9.10-hb55368b_3
  matplotlib         pkgs/main/linux-64::matplotlib-3.3.2-h06a4308_0
  matplotlib-base    pkgs/main/linux-64::matplotlib-base-3.3.2-py36h817c723_0
  pcre               pkgs/main/linux-64::pcre-8.44-he6710b0_0
  pyparsing          pkgs/main/noarch::pyparsing-2.4.7-py_0
  pyqt               pkgs/main/linux-64::pyqt-5.9.2-py36h05f1152_2
  python-dateutil    pkgs/main/noarch::python-dateutil-2.8.1-py_0
  qt                 pkgs/main/linux-64::qt-5.9.7-h5867ecd_1
  scikit-learn       pkgs/main/linux-64::scikit-learn-0.23.2-py36h0573a6f_0
  scipy              pkgs/main/linux-64::scipy-1.5.2-py36h0b6359f_0
  sip                pkgs/main/linux-64::sip-4.19.8-py36hf484d3e_0
  threadpoolctl      pkgs/main/noarch::threadpoolctl-2.1.0-pyh5ca1d4c_0
  tornado            pkgs/main/linux-64::tornado-6.1-py36h27cfd23_0
  tqdm               pkgs/main/noarch::tqdm-4.54.1-pyhd3eb1b0_0



Downloading and Extracting Packages
scikit-learn-0.23.2  | 5.0 MB    | ##################################### | 100% 
kiwisolver-1.3.0     | 80 KB     | ##################################### | 100% 
scipy-1.5.2          | 14.4 MB   | ##################################### | 100% 
tornado-6.1          | 581 KB    | ##################################### | 100% 
matplotlib-base-3.3. | 5.1 MB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Collecting tensorflow-gpu==1.13.1
  Downloading tensorflow_gpu-1.13.1-cp36-cp36m-manylinux1_x86_64.whl (345.2 MB)
     |████████████████████████████████| 345.2 MB 6.7 kB/s 
Requirement already satisfied: wheel>=0.26 in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from tensorflow-gpu==1.13.1) (0.36.2)
Requirement already satisfied: six>=1.10.0 in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from tensorflow-gpu==1.13.1) (1.15.0)
Requirement already satisfied: numpy>=1.13.3 in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from tensorflow-gpu==1.13.1) (1.19.2)
Collecting absl-py>=0.1.6
  Using cached absl_py-0.11.0-py3-none-any.whl (127 kB)
Collecting astor>=0.6.0
  Using cached astor-0.8.1-py2.py3-none-any.whl (27 kB)
Collecting gast>=0.2.0
  Using cached gast-0.4.0-py3-none-any.whl (9.8 kB)
Collecting grpcio>=1.8.6
  Downloading grpcio-1.34.0-cp36-cp36m-manylinux2014_x86_64.whl (4.0 MB)
     |████████████████████████████████| 4.0 MB 107.8 MB/s 
Collecting keras-applications>=1.0.6
  Using cached Keras_Applications-1.0.8-py3-none-any.whl (50 kB)
Collecting keras-preprocessing>=1.0.5
  Using cached Keras_Preprocessing-1.1.2-py2.py3-none-any.whl (42 kB)
Collecting protobuf>=3.6.1
  Using cached protobuf-3.14.0-cp36-cp36m-manylinux1_x86_64.whl (1.0 MB)
Collecting tensorboard<1.14.0,>=1.13.0
  Downloading tensorboard-1.13.1-py3-none-any.whl (3.2 MB)
     |████████████████████████████████| 3.2 MB 62.0 MB/s 
Collecting markdown>=2.6.8
  Using cached Markdown-3.3.3-py3-none-any.whl (96 kB)
Collecting tensorflow-estimator<1.14.0rc0,>=1.13.0
  Downloading tensorflow_estimator-1.13.0-py2.py3-none-any.whl (367 kB)
     |████████████████████████████████| 367 kB 106.9 MB/s 
Collecting mock>=2.0.0
  Downloading mock-4.0.3-py3-none-any.whl (28 kB)
Collecting termcolor>=1.1.0
  Using cached termcolor-1.1.0-py3-none-any.whl
Collecting werkzeug>=0.11.15
  Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
Collecting h5py
  Downloading h5py-3.1.0-cp36-cp36m-manylinux1_x86_64.whl (4.0 MB)
     |████████████████████████████████| 4.0 MB 100.8 MB/s 
Collecting cached-property
  Using cached cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)
Collecting importlib-metadata
  Downloading importlib_metadata-3.3.0-py3-none-any.whl (10 kB)
Requirement already satisfied: typing-extensions>=3.6.4 in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from importlib-metadata->markdown>=2.6.8->tensorboard<1.14.0,>=1.13.0->tensorflow-gpu==1.13.1) (3.7.4.3)
Collecting zipp>=0.5
  Using cached zipp-3.4.0-py3-none-any.whl (5.2 kB)
Installing collected packages: zipp, importlib-metadata, cached-property, werkzeug, protobuf, mock, markdown, h5py, grpcio, absl-py, termcolor, tensorflow-estimator, tensorboard, keras-preprocessing, keras-applications, gast, astor, tensorflow-gpu
Successfully installed absl-py-0.11.0 astor-0.8.1 cached-property-1.5.2 gast-0.4.0 grpcio-1.34.0 h5py-3.1.0 importlib-metadata-3.3.0 keras-applications-1.0.8 keras-preprocessing-1.1.2 markdown-3.3.3 mock-4.0.3 protobuf-3.14.0 tensorboard-1.13.1 tensorflow-estimator-1.13.0 tensorflow-gpu-1.13.1 termcolor-1.1.0 werkzeug-1.0.1 zipp-3.4.0
Collecting tensorboardX==1.7
  Using cached tensorboardX-1.7-py2.py3-none-any.whl (238 kB)
Requirement already satisfied: numpy in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from tensorboardX==1.7) (1.19.2)
Requirement already satisfied: protobuf>=3.2.0 in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from tensorboardX==1.7) (3.14.0)
Requirement already satisfied: six in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from tensorboardX==1.7) (1.15.0)
Installing collected packages: tensorboardX
Successfully installed tensorboardX-1.7
CXX src/structural_loss.cpp
g++ src/structural_loss.cpp -MMD -MP -pthread -fPIC -fwrapv -std=c++11 -DNDEBUG -O3 -I./ -I/usr/local/cuda/include -I/home/user1/anaconda3/envs/PointFlow/include/python3.6m -I/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include -I/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/TH -I/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/THC -DTORCH_API_INCLUDE_EXTENSION_H -D_GLIBCXX_USE_CXX11_ABI=0 -Wall -Wno-sign-compare -Wcomment -c -o objs/structural_loss.o
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:19:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/DispatchKey.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Layout.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:24:2: error: #error You need C++14 to compile PyTorch
 #error You need C++14 to compile PyTorch
  ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4:0,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:4:2: error: #error C++14 or later compatible compiler is required to use PyTorch.
 #error C++14 or later compatible compiler is required to use PyTorch.
  ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/ATen.h:4:2: error: #error C++14 or later compatible compiler is required to use ATen.
 #error C++14 or later compatible compiler is required to use ATen.
  ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Parallel.h:149:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/utils.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/ParallelOpenMP.h:84:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
 #pragma omp parallel for if ((end - begin) >= grain_size)
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:5,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/StringUtil.h:86:17: error: expected primary-expression before ‘auto’
 inline decltype(auto) str(const Args&... args) {
                 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/StringUtil.h:86:17: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/StringUtil.h:86:8: error: expected unqualified-id before ‘decltype’
 inline decltype(auto) str(const Args&... args) {
        ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h: In member function ‘void c10::Device::validate()’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:96:5: note: in expansion of macro ‘TORCH_CHECK’
     TORCH_CHECK(index_ == -1 || index_ >= 0,
     ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:98:5: note: in expansion of macro ‘TORCH_CHECK’
     TORCH_CHECK(!is_cpu() || index_ <= 0,
     ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:18:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/DispatchKey.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Layout.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h: At global scope:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h:965:38: error: ‘std::enable_if_t’ has not been declared
   template <typename Container, std::enable_if_t<
                                      ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h:965:49: error: expected ‘>’ before ‘<’ token
   template <typename Container, std::enable_if_t<
                                                 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h:999:38: error: ‘std::enable_if_t’ has not been declared
   template <typename Container, std::enable_if_t<
                                      ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h:999:49: error: expected ‘>’ before ‘<’ token
   template <typename Container, std::enable_if_t<
                                                 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h:1030:38: error: ‘std::enable_if_t’ has not been declared
   template <typename Container, std::enable_if_t<
                                      ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/SmallVector.h:1030:49: error: expected ‘>’ before ‘<’ token
   template <typename Container, std::enable_if_t<
                                                 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:19:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/DispatchKey.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Layout.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:61:25: error: expected template-name before ‘<’ token
     : std::conditional_t<bool(B1::value), conjunction<Bn...>, B1> {};
                         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:61:25: error: expected ‘{’ before ‘<’ token
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:61:25: error: expected unqualified-id before ‘<’ token
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:68:25: error: expected template-name before ‘<’ token
     : std::conditional_t<bool(B1::value), B1, disjunction<Bn...>>  { };
                         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:68:25: error: expected ‘{’ before ‘<’ token
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:68:25: error: expected unqualified-id before ‘<’ token
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:121:37: error: expected primary-expression before ‘auto’
 CUDA_HOST_DEVICE constexpr decltype(auto) apply_impl(F&& f, Tuple&& t, std::ind
                                     ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:121:37: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:121:28: error: expected unqualified-id before ‘decltype’
 CUDA_HOST_DEVICE constexpr decltype(auto) apply_impl(F&& f, Tuple&& t, std::ind
                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:129:37: error: expected primary-expression before ‘auto’
 CUDA_HOST_DEVICE constexpr decltype(auto) apply(F&& f, Tuple&& t) {
                                     ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:129:37: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:129:28: error: expected unqualified-id before ‘decltype’
 CUDA_HOST_DEVICE constexpr decltype(auto) apply(F&& f, Tuple&& t) {
                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:167:12: error: expected primary-expression before ‘auto’
   decltype(auto) operator()(T&& arg) {
            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:167:12: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:167:3: error: expected unqualified-id before ‘decltype’
   decltype(auto) operator()(T&& arg) {
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:189:57: error: ‘std::enable_if_t’ has not been declared
   template<class ThenCallback, class ElseCallback, std::enable_if_t<function_ta
                                                         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:189:68: error: expected ‘>’ before ‘<’ token
   template<class ThenCallback, class ElseCallback, std::enable_if_t<function_ta
                                                                    ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:190:19: error: expected primary-expression before ‘auto’
   static decltype(auto) call(ThenCallback&& thenCallback, ElseCallback&& /* els
                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:190:19: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:190:10: error: expected unqualified-id before ‘decltype’
   static decltype(auto) call(ThenCallback&& thenCallback, ElseCallback&& /* els
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:196:57: error: ‘std::enable_if_t’ has not been declared
   template<class ThenCallback, class ElseCallback, std::enable_if_t<!function_t
                                                         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:196:68: error: expected ‘>’ before ‘<’ token
   template<class ThenCallback, class ElseCallback, std::enable_if_t<!function_t
                                                                    ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:197:19: error: expected primary-expression before ‘auto’
   static decltype(auto) call(ThenCallback&& thenCallback, ElseCallback&& /* els
                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:197:19: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:197:10: error: expected unqualified-id before ‘decltype’
   static decltype(auto) call(ThenCallback&& thenCallback, ElseCallback&& /* els
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:204:57: error: ‘std::enable_if_t’ has not been declared
   template<class ThenCallback, class ElseCallback, std::enable_if_t<function_ta
                                                         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:204:68: error: expected ‘>’ before ‘<’ token
   template<class ThenCallback, class ElseCallback, std::enable_if_t<function_ta
                                                                    ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:205:19: error: expected primary-expression before ‘auto’
   static decltype(auto) call(ThenCallback&& /* thenCallback */, ElseCallback&& 
                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:205:19: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:205:10: error: expected unqualified-id before ‘decltype’
   static decltype(auto) call(ThenCallback&& /* thenCallback */, ElseCallback&& 
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:211:57: error: ‘std::enable_if_t’ has not been declared
   template<class ThenCallback, class ElseCallback, std::enable_if_t<!function_t
                                                         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:211:68: error: expected ‘>’ before ‘<’ token
   template<class ThenCallback, class ElseCallback, std::enable_if_t<!function_t
                                                                    ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:212:19: error: expected primary-expression before ‘auto’
   static decltype(auto) call(ThenCallback&& /* thenCallback */, ElseCallback&& 
                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:212:19: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:212:10: error: expected unqualified-id before ‘decltype’
   static decltype(auto) call(ThenCallback&& /* thenCallback */, ElseCallback&& 
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:263:10: error: expected primary-expression before ‘auto’
 decltype(auto) if_constexpr(ThenCallback&& thenCallback, ElseCallback&& elseCal
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:263:10: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:263:1: error: expected unqualified-id before ‘decltype’
 decltype(auto) if_constexpr(ThenCallback&& thenCallback, ElseCallback&& elseCal
 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:288:10: error: expected primary-expression before ‘auto’
 decltype(auto) if_constexpr(ThenCallback&& thenCallback) {
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:288:10: error: expected ‘)’ before ‘auto’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/C++17.h:288:1: error: expected unqualified-id before ‘decltype’
 decltype(auto) if_constexpr(ThenCallback&& thenCallback) {
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h: In member function ‘constexpr const T& c10::ArrayRef<T>::front() const’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:149:5: note: in expansion of macro ‘TORCH_CHECK’
     TORCH_CHECK(!empty(), "ArrayRef: attempted to access front() of empty list"
     ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h: In member function ‘constexpr const T& c10::ArrayRef<T>::back() const’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:155:5: note: in expansion of macro ‘TORCH_CHECK’
     TORCH_CHECK(!empty(), "ArrayRef: attempted to access back() of empty list")
     ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h: In member function ‘constexpr c10::ArrayRef<T> c10::ArrayRef<T>::slice(size_t, size_t) const’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:167:5: note: in expansion of macro ‘TORCH_CHECK’
     TORCH_CHECK(
     ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h: In member function ‘constexpr const T& c10::ArrayRef<T>::at(size_t) const’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/ArrayRef.h:192:5: note: in expansion of macro ‘TORCH_CHECK’
     TORCH_CHECK(
     ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Layout.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/DispatchKeySet.h: In constructor ‘c10::DispatchKeySet::DispatchKeySet(std::initializer_list<c10::DispatchKey>)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/DispatchKeySet.h:62:3: error: constexpr constructor does not have empty body
   }
   ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/DispatchKeySet.h: In member function ‘bool c10::DispatchKeySet::has(c10::DispatchKey) const’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:286:28: error: ‘str’ is not a member of ‘c10’
     C10_THROW_ERROR(Error, ::c10::str(        \
                            ^
ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE ABRIDGED HERE 

In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/Dimname.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/NamedTensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:19,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:86:11: note:   ‘c10::aten::str’
   _(aten, str)                       \
           ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:502:35: note: in definition of macro ‘DEFINE_SYMBOL’
   namespace ns { constexpr Symbol s(static_cast<unique_t>(_keys::ns##_##s)); }
                                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:503:1: note: in expansion of macro ‘FORALL_NS_SYMBOLS’
 FORALL_NS_SYMBOLS(DEFINE_SYMBOL)
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue.h:895:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/ATen.h:33,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h: At global scope:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:657:19: error: ‘_guarded_unsigned_long’ in namespace ‘c10::detail’ does not name a type
 DEFINE_TO(detail::_guarded_unsigned_long, toInt)
                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:640:8: note: in definition of macro ‘DEFINE_TO’
 inline type IValue::to<type>() && { \
        ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:657:19: error: ‘_guarded_unsigned_long’ in namespace ‘c10::detail’ does not name a type
 DEFINE_TO(detail::_guarded_unsigned_long, toInt)
                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:644:8: note: in definition of macro ‘DEFINE_TO’
 inline type IValue::to<type>() const & { \
        ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h: In member function ‘c10::intrusive_ptr<T> c10::IValue::toCustomClass() &&’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:719:3: note: in expansion of macro ‘TORCH_CHECK’
   TORCH_CHECK(obj->slots().size() == 1,
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: note: suggested alternative:
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:719:3: note: in expansion of macro ‘TORCH_CHECK’
   TORCH_CHECK(obj->slots().size() == 1,
   ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/Dimname.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/NamedTensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:19,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:86:11: note:   ‘c10::aten::str’
   _(aten, str)                       \
           ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:502:35: note: in definition of macro ‘DEFINE_SYMBOL’
   namespace ns { constexpr Symbol s(static_cast<unique_t>(_keys::ns##_##s)); }
                                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:503:1: note: in expansion of macro ‘FORALL_NS_SYMBOLS’
 FORALL_NS_SYMBOLS(DEFINE_SYMBOL)
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Device.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h: In member function ‘c10::intrusive_ptr<T> c10::IValue::toCustomClass() const &’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: error: ‘str’ is not a member of ‘c10’
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:734:3: note: in expansion of macro ‘TORCH_CHECK’
   TORCH_CHECK(obj->slots().size() == 1,
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:333:9: note: suggested alternative:
         ::c10::str(__VA_ARGS__),                                      \
         ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:214:80: note: in definition of macro ‘C10_THROW_ERROR’
 row ::c10::err_type({__func__, __FILE__, static_cast<uint32_t>(__LINE__)}, msg)
                                                                            ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:318:3: note: in expansion of macro ‘TORCH_CHECK_WITH_MSG’
   TORCH_CHECK_WITH_MSG(error_t, cond, "", __VA_ARGS__)
   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Exception.h:341:32: note: in expansion of macro ‘TORCH_CHECK_WITH’
 #define TORCH_CHECK(cond, ...) TORCH_CHECK_WITH(Error, cond, __VA_ARGS__)
                                ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:734:3: note: in expansion of macro ‘TORCH_CHECK’
   TORCH_CHECK(obj->slots().size() == 1,
   ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/Dimname.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/NamedTensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:19,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:86:11: note:   ‘c10::aten::str’
   _(aten, str)                       \
           ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:502:35: note: in definition of macro ‘DEFINE_SYMBOL’
   namespace ns { constexpr Symbol s(static_cast<unique_t>(_keys::ns##_##s)); }
                                   ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/interned_strings.h:503:1: note: in expansion of macro ‘FORALL_NS_SYMBOLS’
 FORALL_NS_SYMBOLS(DEFINE_SYMBOL)
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue.h:895:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/ATen.h:33,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/hom/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:1204:17: note:   candidate expects 4 arguments, 1 provided
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:69:56: error: no matching function for call to ‘at::Tensor::to(const c10::Device&) const’
       auto data = device && tensor.device() != *device ?
                                                        ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:953:10: note: candidate: at::Tensor at::Tensor::to(const c10::TensorOptions&, bool, bool, c10::optional<c10::MemoryFormat>) const
   Tensor to(const TensorOptions & options={}, bool non_blocking=false, bool cop
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:953:10: note:   no known conversion for argument 1 from ‘const c10::Device’ to ‘const c10::TensorOptions&’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:954:10: note: candidate: at::Tensor at::Tensor::to(c10::Device, c10::ScalarType, bool, bool, c10::optional<c10::MemoryFormat>) const
   Tensor to(Device device, ScalarType dtype, bool non_blocking=false, bool copy
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:954:10: note:   candidate expects 5 arguments, 1 provided
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:955:10: note: candidate: at::Tensor at::Tensor::to(c10::ScalarType, bool, bool, c10::optional<c10::MemoryFormat>) const
   Tensor to(ScalarType dtype, bool non_blocking=false, bool copy=false, c10::op
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:955:10: note:   no known conversion for argument 1 from ‘const c10::Device’ to ‘c10::ScalarType’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:956:10: note: candidate: at::Tensor at::Tensor::to(const at::Tensor&, bool, bool, c10::optional<c10::MemoryFormat>) const
   Tensor to(const Tensor & other, bool non_blocking=false, bool copy=false, c10
          ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:956:10: note:   no known conversion for argument 1 from ‘const c10::Device’ to ‘const at::Tensor&’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:1201:17: note: candidate: at::Tensor at::Tensor::to(caffe2::TypeMeta, bool, bool) const
   inline Tensor to(caffe2::TypeMeta type_meta, bool non_blocking=false, bool co
                 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:1201:17: note:   no known conversion for argument 1 from ‘const c10::Device’ to ‘caffe2::TypeMeta’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:1204:17: note: candidate: at::Tensor at::Tensor::to(c10::Device, caffe2::TypeMeta, bool, bool) const
   inline Tensor to(Device device, caffe2::TypeMeta type_meta, bool non_blocking
                 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:1204:17: note:   candidate expects 4 arguments, 1 provided
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h:7:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Scalar.h:10,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h: In instantiation of ‘c10::optional<T>& c10::optional<T>::operator=(c10::optional<T>&&) [with T = torch::ExpandingArray<3ul>]’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/pooling.h:428:8:   required from ‘void torch::nn::Cloneable<Derived>::clone_(torch::nn::Module&, const c10::optional<c10::Device>&) [with Derived = torch::nn::FractionalMaxPool3dImpl]’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/optim/sgd.h:48:17:   required from here
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:402:23: error: passing ‘const torch::ExpandingArray<3ul>’ as ‘this’ argument discards qualifiers [-fpermissive]
       contained_val() = std::move(*rhs);
                       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/conv.h:6:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional/conv.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/expanding_array.h:23:7: note:   in call to ‘torch::ExpandingArray<3ul>& torch::ExpandingArray<3ul>::operator=(const torch::ExpandingArray<3ul>&)’
 class ExpandingArray {
       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h:7:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Scalar.h:10,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h: In instantiation of ‘c10::optional<T>& c10::optional<T>::operator=(c10::optional<T>&&) [with T = torch::ExpandingArray<3ul, double>]’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/pooling.h:428:8:   required from ‘void torch::nn::Cloneable<Derived>::clone_(torch::nn::Module&, const c10::optional<c10::Device>&) [with Derived = torch::nn::FractionalMaxPool3dImpl]’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/optim/sgd.h:48:17:   required from here
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:402:23: error: passing ‘const torch::ExpandingArray<3ul, double>’ as ‘this’ argument discards qualifiers [-fpermissive]
       contained_val() = std::move(*rhs);
                       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/conv.h:6:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional/conv.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/expanding_array.h:23:7: note:   in call to ‘torch::ExpandingArray<3ul, double>& torch::ExpandingArray<3ul, double>::operator=(const torch::ExpandingArray<3ul, double>&)’
 class ExpandingArray {
       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h:7:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Scalar.h:10,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h: In instantiation of ‘c10::optional<T>& c10::optional<T>::operator=(c10::optional<T>&&) [with T = torch::ExpandingArray<2ul>]’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/pooling.h:428:8:   required from ‘void torch::nn::Cloneable<Derived>::clone_(torch::nn::Module&, const c10::optional<c10::Device>&) [with Derived = torch::nn::FractionalMaxPool2dImpl]’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/optim/sgd.h:48:17:   required from here
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:402:23: error: passing ‘const torch::ExpandingArray<2ul>’ as ‘this’ argument discards qualifiers [-fpermissive]
       contained_val() = std::move(*rhs);
                       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/conv.h:6:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional/conv.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/expanding_array.h:23:7: note:   in call to ‘torch::ExpandingArray<2ul>& torch::ExpandingArray<2ul>::operator=(const torch::ExpandingArray<2ul>&)’
 class ExpandingArray {
       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h:7:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Scalar.h:10,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h: In instantiation of ‘c10::optional<T>& c10::optional<T>::operator=(c10::optional<T>&&) [with T = torch::ExpandingArray<2ul, double>]’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/pooling.h:428:8:   required from ‘void torch::nn::Cloneable<Derived>::clone_(torch::nn::Module&, const c10::optional<c10::Device>&) [with Derived = torch::nn::FractionalMaxPool2dImpl]’
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/optim/sgd.h:48:17:   required from here
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:402:23: error: passing ‘const torch::ExpandingArray<2ul, double>’ as ‘this’ argument discards qualifiers [-fpermissive]
       contained_val() = std::move(*rhs);
                       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/options/conv.h:6:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional/conv.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn/functional.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/expanding_array.h:23:7: note:   in call to ‘torch::ExpandingArray<2ul, double>& torch::ExpandingArray<2ul, double>::operator=(const torch::ExpandingArray<2ul, double>&)’
 class ExpandingArray {
       ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Scalar.h:10:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h: In function ‘caffe2::TypeMeta c10::scalarTypeToTypeMeta(c10::ScalarType)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h:179:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h: In function ‘c10::ScalarType c10::typeMetaToScalarType(caffe2::TypeMeta)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/ScalarType.h:201:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/jit/api/module.h:13:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/serialize/input-archive.h:7,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/serialize/archive.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/samplers/serialize.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/samplers.h:8,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/datasets/chunk.h:6,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/datasets.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/ordered_dict.h: In member function ‘Value& torch::OrderedDict<Key, Value>::operator[](const Key&) [with Key = std::basic_string<char>; Value = std::shared_ptr<torch::nn::Module>]’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/ordered_dict.h:350:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/List_inl.h:4:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/List.h:472,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue_inl.h:13,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/ivalue.h:895,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/ATen.h:33,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/torch/extension.h:4,
                 from src/structural_loss.cpp:2:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/jit_type.h: In static member function ‘static c10::DictTypePtr c10::DictType::create(c10::TypePtr, c10::TypePtr)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/jit_type.h:917:3: warning: control reaches end of non-void function [-Wreturn-type]
   }
   ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Layout.h:3:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h: In function ‘c10::Backend c10::dispatchKeyToBackend(c10::DispatchKey)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h:127:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h: In function ‘c10::DeviceType c10::backendToDeviceType(c10::Backend)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/Backend.h:196:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
In file included from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/core/TensorBody.h:5:0,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Tensor.h:3,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/Context.h:4,
                 from /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/ATen/cuda/CUDAContext.h:14,
                 from src/structural_loss.cpp:1:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/MemoryFormat.h: In function ‘std::vector<long int> c10::get_channels_last_strides_2d(c10::IntArrayRef)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/MemoryFormat.h:73:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/MemoryFormat.h: In function ‘std::vector<long int> c10::get_channels_last_strides_3d(c10::IntArrayRef)’:
/home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/include/c10/core/MemoryFormat.h:94:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
Makefile:83: recipe for target 'objs/structural_loss.o' failed
make: *** [objs/structural_loss.o] Error 1
Cloning into 'torchdiffeq'...
remote: Enumerating objects: 300, done.
remote: Counting objects: 100% (300/300), done.
remote: Compressing objects: 100% (138/138), done.
remote: Total 1004 (delta 175), reused 275 (delta 162), pack-reused 704
Receiving objects: 100% (1004/1004), 8.22 MiB | 0 bytes/s, done.
Resolving deltas: 100% (601/601), done.
Checking connectivity... done.
Obtaining file:///home/user1/ResearchCode/PointFlow/torchdiffeq
Requirement already satisfied: torch>=1.3.0 in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from torchdiffeq==0.1.1) (1.7.1)
Requirement already satisfied: typing_extensions in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from torch>=1.3.0->torchdiffeq==0.1.1) (3.7.4.3)
Requirement already satisfied: numpy in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from torch>=1.3.0->torchdiffeq==0.1.1) (1.19.2)
Requirement already satisfied: dataclasses in /home/user1/anaconda3/envs/PointFlow/lib/python3.6/site-packages (from torch>=1.3.0->torchdiffeq==0.1.1) (0.7)
Installing collected packages: torchdiffeq
  Running setup.py develop for torchdiffeq
Successfully installed torchdiffeq

Render animation

Great repo, thank you! I have seen that you have another repo for rendering the point cloud for visualisation but cannot see how you created animations. Would it be possible to share this code too?

GPU memory

Could I use a 1080ti GPU with 11GB memory to reproduce your method? And how long does your model need to train?

Thank you

An autograd hack?

I'm trying to figure out the role of this line. It looks like some autograd hack similar to straight through estimators of form

logits = ...
smooth_probs = torch.sigmoid(logits)
hard_samples = (logits > 0).to(logits.dtype)

# values come from `hard_samples` but gradient from `smooth_probs`
binary_straight_through = hard_samples + smooth_probs - smooth_probs.detach()

but in this case it really seems to be a no-op. Could I ask for some explanation?

Thank you

Pretrained Model on Chair Class

Thanks for the great work!

Could you please also release the pretrained model on ShapeNet chair class? We need it for paper submission, so it would be great if you can release it as soon as possible.

ModuleNotFoundError: No module named 'metrics.StructuralLosses'

File "train.py", line 273, in
main()
File "train.py", line 269, in main
main_worker(args.gpu, save_dir, ngpus_per_node, args)
File "train.py", line 192, in main_worker
validate(test_loader, model, epoch, writer, save_dir, args, clf_loaders=clf_loaders)
File "/home/leon/a312/xhs/point-cloud/PointFlow/utils.py", line 372, in validate
save_dir=save_dir)
File "/home/leon/a312/xhs/point-cloud/PointFlow/utils.py", line 211, in validate_conditioned
from metrics.evaluation_metrics import EMD_CD
File "/home/leon/a312/xhs/point-cloud/PointFlow/metrics/evaluation_metrics.py", line 9, in
from .pytorch_structural_losses.match_cost import match_cost
File "/home/leon/a312/xhs/point-cloud/PointFlow/metrics/pytorch_structural_losses/match_cost.py", line 3, in
from metrics.StructuralLosses.StructuralLossesBackend import ApproxMatch, MatchCost, MatchCostGrad
ModuleNotFoundError: No module named 'metrics.StructuralLosses'

CUDA kernel error

Hi, thank you for sharing the code!

I was trying to run the evaluation code with
CUDA_VISIBLE_DEVICES=0 ./scripts/shapenet_airplane_ae_test.sh
but got the following error:

  File "test.py", line 167, in <module>
    main(args)
  File "test.py", line 159, in main
    evaluate_recon(model, args)
  File "test.py", line 69, in evaluate_recon
    results = EMD_CD(sample_pcs, ref_pcs, args.batch_size, accelerated_cd=True)
  File "/home/xxx/PointFlow/metrics/evaluation_metrics.py", line 66, in EMD_CD
    cd_lst.append(dl.mean(dim=1) + dr.mean(dim=1))
RuntimeError: CUDA error: no kernel image is available for execution on the device

I am using Tesla K80 GPU. And I installed dependencies as instructed with python 3.6.9, using the install.sh file ( CUDA 10.0, GCC 5.2.0, pytorch 1.0.1). install.sh gives no error (see below for part of the output I think is relevant).

CXX src/structural_loss.cpp
g++ src/structural_loss.cpp -MMD -MP -pthread -fPIC -fwrapv -std=c++11 -DDEBUG -g -O0 -I./ -I/usr/local/cuda/include -I/home/xxx/anaconda3/envs/PointFlow/include/python3.6m -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/TH -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/THC -DTORCH_API_INCLUDE_EXTENSION_H -D_GLIBCXX_USE_CXX11_ABI=0 -Wall -Wno-sign-compare -Wcomment -c -o objs/structural_loss.o
NVCC src/approxmatch.cu
/usr/local/cuda/bin/nvcc -g -G  -std=c++11 -ccbin=g++ -Xcompiler -fPIC -DDEBUG -g -O0 -I./ -I/usr/local/cuda/include -I/home/xxx/anaconda3/envs/PointFlow/include/python3.6m -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/TH -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/THC -DTORCH_API_INCLUDE_EXTENSION_H -D_GLIBCXX_USE_CXX11_ABI=0 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61 -gencode arch=compute_52,code=sm_52 -M src/approxmatch.cu -o objs/cuda/approxmatch.d \
	-odir objs/cuda
/usr/local/cuda/bin/nvcc -g -G  -std=c++11 -ccbin=g++ -Xcompiler -fPIC -DDEBUG -g -O0 -I./ -I/usr/local/cuda/include -I/home/xxx/anaconda3/envs/PointFlow/include/python3.6m -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/TH -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/THC -DTORCH_API_INCLUDE_EXTENSION_H -D_GLIBCXX_USE_CXX11_ABI=0 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61 -gencode arch=compute_52,code=sm_52 -c src/approxmatch.cu -o objs/cuda/approxmatch.o
NVCC src/nndistance.cu
/usr/local/cuda/bin/nvcc -g -G  -std=c++11 -ccbin=g++ -Xcompiler -fPIC -DDEBUG -g -O0 -I./ -I/usr/local/cuda/include -I/home/xxx/anaconda3/envs/PointFlow/include/python3.6m -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/TH -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/THC -DTORCH_API_INCLUDE_EXTENSION_H -D_GLIBCXX_USE_CXX11_ABI=0 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61 -gencode arch=compute_52,code=sm_52 -M src/nndistance.cu -o objs/cuda/nndistance.d \
	-odir objs/cuda
/usr/local/cuda/bin/nvcc -g -G  -std=c++11 -ccbin=g++ -Xcompiler -fPIC -DDEBUG -g -O0 -I./ -I/usr/local/cuda/include -I/home/xxx/anaconda3/envs/PointFlow/include/python3.6m -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/TH -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/THC -DTORCH_API_INCLUDE_EXTENSION_H -D_GLIBCXX_USE_CXX11_ABI=0 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61 -gencode arch=compute_52,code=sm_52 -c src/nndistance.cu -o objs/cuda/nndistance.o
rm -f -f ./objs/libmake_pytorch.a
rm -f -rf build dist
LD -o objs/libmake_pytorch.a
ar rc ./objs/libmake_pytorch.a ./objs/structural_loss.o ./objs/cuda/approxmatch.o ./objs/cuda/nndistance.o
python setup.py build
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.6
creating build/lib.linux-x86_64-3.6/StructuralLosses
copying ./__init__.py -> build/lib.linux-x86_64-3.6/StructuralLosses
copying ./nn_distance.py -> build/lib.linux-x86_64-3.6/StructuralLosses
copying ./match_cost.py -> build/lib.linux-x86_64-3.6/StructuralLosses
running build_ext
building 'StructuralLossesBackend' extension
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/pybind
gcc -pthread -B /home/xxx/anaconda3/envs/PointFlow/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I./ -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/TH -I/home/xxx/anaconda3/envs/PointFlow/lib/python3.6/site-packages/torch/lib/include/THC -I/usr/local/cuda/include -I/home/xxx/anaconda3/envs/PointFlow/include/python3.6m -c pybind/bind.cpp -o build/temp.linux-x86_64-3.6/pybind/bind.o -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=StructuralLossesBackend -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
g++ -pthread -shared -B /home/xxx/anaconda3/envs/PointFlow/compiler_compat -L/home/xxx/anaconda3/envs/PointFlow/lib -Wl,-rpath=/home/xxx/anaconda3/envs/PointFlow/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/pybind/bind.o -Lobjs -L/usr/local/cuda/lib64 -lmake_pytorch -lcudart -o build/lib.linux-x86_64-3.6/StructuralLossesBackend.cpython-36m-x86_64-linux-gnu.so

Any suggestions how to make it work? Thanks!

The code cannot run successfully now.

Since the torchdiffeq has updated recently, the torch has to update to >1.3. Otherwise, the old torch does not have promote_types function. When I updated the torch, I got the error "AssertionError: If using tupled rtol it must have the same length as the tuple y0
"?

Can you check the code and solve this issue? Thanks.

Train script doesn't work

Hello, I have tried all scripts and everywhere I have the same issue.

Traceback (most recent call last):
File "train.py", line 272, in
main()
File "train.py", line 268, in main
main_worker(args.gpu, save_dir, ngpus_per_node, args)
File "train.py", line 176, in main_worker
out = model(inputs, optimizer, step, writer)
File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "/content/PointFlow/models/networks.py", line 167, in forward
loss.backward()
File "/usr/local/lib/python3.7/dist-packages/torch/tensor.py", line 221, in backward
torch.autograd.backward(self, gradient, retain_graph, create_graph)
File "/usr/local/lib/python3.7/dist-packages/torch/autograd/init.py", line 132, in backward
allow_unreachable=True) # allow_unreachable flag
File "/usr/local/lib/python3.7/dist-packages/torch/autograd/function.py", line 89, in apply
return self._forward_cls.backward(self, *args) # type: ignore
File "/usr/local/lib/python3.7/dist-packages/torchdiffeq/_impl/adjoint.py", line 129, in backward
rtol=adjoint_rtol, atol=adjoint_atol, method=adjoint_method, options=adjoint_options
File "/usr/local/lib/python3.7/dist-packages/torchdiffeq/_impl/odeint.py", line 72, in odeint
shapes, func, y0, t, rtol, atol, method, options, event_fn, t_is_reversed = _check_inputs(func, y0, t, rtol, atol, method, options, event_fn, SOLVERS)
File "/usr/local/lib/python3.7/dist-packages/torchdiffeq/_impl/misc.py", line 209, in _check_inputs
rtol = _tuple_tol('rtol', rtol, shapes)
File "/usr/local/lib/python3.7/dist-packages/torchdiffeq/_impl/misc.py", line 115, in _tuple_tol
assert len(tol) == len(shapes), "If using tupled {} it must have the same length as the tuple y0".format(name)
AssertionError: If using tupled rtol it must have the same length as the tuple y0
Done

Makefile for CUDA 11

Hello,
I'm trying to compile the makefile for CUDA 11 but it doesn't seem to work. Could you please let me know how to proceed? The error it throws is as follows

mv: cannot stat 'build/lib.linux-x86_64-3.6/StructuralLosses': No such file or directory

Kindly let me know how to resolve this. Thanks

StructuralLosses/StructuralLossessBackend

From the match_cost.py file, I see "from metrics.StructuralLosses.StructuralLossesBackend import ApproxMatch, MatchCost, MatchCostGrad"

Currently when compiling I get a warning and instead of including the StructuralLossessBackend.py , my metrics/StructuralLosses/ directory contains a init.py, match_cost.py, nn_distance.py and StructuralLossesBackend.cpython-36m-x86_64-linus-gnu.so.

I am wondering if instead of StructuralLossesBackend.cpython-36m-x86_64-linus-gnu.so I should have a StructuralLossessBackend.py after compiling ? I can see the functions in metrics/pytorch_structural_losses/src/structural_loss.cpp but I'm not where in the metrics/StructuralLosses/ directory the match_cost.py file is importing from.

I am currently running gcc5.2.0, pytorch 1.0.1 and cuda 10.0.
Any advice would be greatly appreciated.

This warning:

**creating build/temp.linux-x86_64-3.6/pybind
gcc -pthread -B /scratch/wqg203/conda-envs/pytorch/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I./ -I/scratch/wqg203/conda-envs/pytorch/lib/python3.6/site-packages/torch/lib/include -I/scratch/wqg203/conda-envs/pytorch/lib/python3.6/site-packages/torch/lib/include/torch/csrc/api/include -I/scratch/wqg203/conda-envs/pytorch/lib/python3.6/site-packages/torch/lib/include/TH -I/scratch/wqg203/conda-envs/pytorch/lib/python3.6/site-packages/torch/lib/include/THC -I/scratch/wqg203/conda-envs/pytorch2/include -I/scratch/wqg203/conda-envs/pytorch/include/python3.6m -c pybind/bind.cpp -o build/temp.linux-x86_64-3.6/pybind/bind.o -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=StructuralLossesBackend -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11

cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++

g++ -pthread -shared -B /scratch/wqg203/conda-envs/pytorch/compiler_compat -L/scratch/wqg203/conda-envs/pytorch/lib -Wl,-rpath=/scratch/wqg203/conda-envs/pytorch/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/pybind/bind.o -Lobjs -L/scratch/wqg203/conda-envs/pytorch2/lib64 -lmake_pytorch -lcudart -o build/lib.linux-x86_64-3.6/StructuralLossesBackend.cpython-36m-x86_64-linux-gnu.so**

Point cloud to mesh

Hello:) I got a point cloud, but I don't know how to wrap it in a mesh, I tried a lot of methods, but they all turn out too not pretty (example in the picture). Do you know how to improve the point cloud to get a better mesh shape? or maybe you know cool algorithms for getting a beautiful mesh shape?
image

ModelNet10/40 datasets

Hi Steven,

Thanks for sharing the PointFlow code. Per your instruction, we get in touch to understand the procedure to obtain ModelNet10/40 datasets. It is our understanding that Pytorch Geometric can download raw ModelNet data (.txt). May we please ask if you can share the code to preprocess raw data into numpy array?

Cheers,

V

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.