diff --git a/.gitignore b/.gitignore
index 06a5b99..6f01003 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
data/
log/
*.pyc
-
+.DS_Store
diff --git a/README.md b/README.md
index 2e327f0..1e0e0ee 100644
--- a/README.md
+++ b/README.md
@@ -4,28 +4,22 @@ We propose a new neural network module dubbed EdgeConv suitable for CNN-based hi
[[Project]](https://liuziwei7.github.io/projects/DGCNN) [[Paper]](https://arxiv.org/abs/1801.07829)
## Overview
-`DGCNN` is the author's re-implementation of Dynamic Graph CNN, which achieves state-of-the-art performance on point-cloud-related high-level tasks including category classification, semantic segmentation and part segmentation.
+`DGCNN` is the author's re-implementation of Dynamic Graph CNN, which achieves state-of-the-art performance on point-cloud-related high-level tasks including category classification, semantic segmentation and part segmentation.
-
+
Further information please contact [Yue Wang](https://www.csail.mit.edu/person/yue-wang) and [Yongbin Sun](https://autoid.mit.edu/people-2).
-## Other Implementations
-* [pytorch-dgcnn](https://rusty1s.github.io/pytorch_geometric/build/html/modules/nn.html#torch_geometric.nn.conv.EdgeConv)
+## Author's Implementations
+
+The classification experiments in our paper are done with the pytorch implementation.
-## Requirements
-* [TensorFlow](https://www.tensorflow.org/)
+* [tensorflow-dgcnn](./tensorflow)
+* [pytorch-dgcnn](./pytorch)
-## Point Cloud Classification
-* Run the training script:
-``` bash
-python train.py
-```
-* Run the evaluation script after training finished:
-``` bash
-python evalutate.py
+## Other Implementations
+* [pytorch-geometric](https://rusty1s.github.io/pytorch_geometric/build/html/modules/nn.html#torch_geometric.nn.conv.EdgeConv)
-```
## Citation
Please cite this paper if you want to use it in your work,
diff --git a/pytorch/README.md b/pytorch/README.md
new file mode 100644
index 0000000..5352c6a
--- /dev/null
+++ b/pytorch/README.md
@@ -0,0 +1,33 @@
+# Dynamic Graph CNN for Learning on Point Clouds (PyTorch)
+
+## Point Cloud Classification
+* Run the training script:
+
+
+``` 1024 points
+python main.py --exp_name=dgcnn_1024 --model=dgcnn --num_points=1024 --k=20 --use_sgd=True
+```
+
+``` 2048 points
+python main.py --exp_name=dgcnn_2048 --model=dgcnn --num_points=2048 --k=40 --use_sgd=True
+```
+
+* Run the evaluation script after training finished:
+
+``` 1024 points
+python main.py --exp_name=dgcnn_1024_eval --model=dgcnn --num_points=1024 --k=20 --use_sgd=True --eval=True --model_path=checkpoints/dgcnn_1024/models/model.t7
+```
+
+``` 2048 points
+python main.py --exp_name=dgcnn_2048_eval --model=dgcnn --num_points=2048 --k=40 --use_sgd=True --eval=True --model_path=checkpoints/dgcnn_2048/models/model.t7
+```
+
+* Run the evaluation script with pretrained models:
+
+``` 1024 points
+python main.py --exp_name=dgcnn_1024_eval --model=dgcnn --num_points=1024 --k=20 --use_sgd=True --eval=True --model_path=pretrained/model.1024.t7
+```
+
+``` 2048 points
+python main.py --exp_name=dgcnn_2048_eval --model=dgcnn --num_points=2048 --k=40 --use_sgd=True --eval=True --model_path=pretrained/model.2048.t7
+```
diff --git a/tensorflow/README.md b/tensorflow/README.md
new file mode 100644
index 0000000..a2381bb
--- /dev/null
+++ b/tensorflow/README.md
@@ -0,0 +1,15 @@
+# Dynamic Graph CNN for Learning on Point Clouds (TensorFlow)
+
+## Point Cloud Classification
+* Run the training script:
+
+``` bash
+python train.py
+```
+
+* Run the evaluation script after training finished:
+
+``` bash
+python evalutate.py
+
+```
diff --git a/evaluate.py b/tensorflow/evaluate.py
similarity index 100%
rename from evaluate.py
rename to tensorflow/evaluate.py
diff --git a/misc/demo_teaser.png b/tensorflow/misc/demo_teaser.png
similarity index 100%
rename from misc/demo_teaser.png
rename to tensorflow/misc/demo_teaser.png
diff --git a/models/dgcnn.py b/tensorflow/models/dgcnn.py
similarity index 100%
rename from models/dgcnn.py
rename to tensorflow/models/dgcnn.py
diff --git a/models/transform_nets.py b/tensorflow/models/transform_nets.py
similarity index 100%
rename from models/transform_nets.py
rename to tensorflow/models/transform_nets.py
diff --git a/part_seg/README.md b/tensorflow/part_seg/README.md
similarity index 100%
rename from part_seg/README.md
rename to tensorflow/part_seg/README.md
diff --git a/part_seg/download_data.sh b/tensorflow/part_seg/download_data.sh
similarity index 100%
rename from part_seg/download_data.sh
rename to tensorflow/part_seg/download_data.sh
diff --git a/part_seg/part_seg_model.py b/tensorflow/part_seg/part_seg_model.py
similarity index 100%
rename from part_seg/part_seg_model.py
rename to tensorflow/part_seg/part_seg_model.py
diff --git a/part_seg/test.py b/tensorflow/part_seg/test.py
similarity index 100%
rename from part_seg/test.py
rename to tensorflow/part_seg/test.py
diff --git a/part_seg/testing_ply_file_list.txt b/tensorflow/part_seg/testing_ply_file_list.txt
similarity index 100%
rename from part_seg/testing_ply_file_list.txt
rename to tensorflow/part_seg/testing_ply_file_list.txt
diff --git a/part_seg/train_multi_gpu.py b/tensorflow/part_seg/train_multi_gpu.py
similarity index 100%
rename from part_seg/train_multi_gpu.py
rename to tensorflow/part_seg/train_multi_gpu.py
diff --git a/part_seg/train_results/trained_models/checkpoint b/tensorflow/part_seg/train_results/trained_models/checkpoint
similarity index 100%
rename from part_seg/train_results/trained_models/checkpoint
rename to tensorflow/part_seg/train_results/trained_models/checkpoint
diff --git a/part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001 b/tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001
similarity index 100%
rename from part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001
rename to tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.data-00000-of-00001
diff --git a/part_seg/train_results/trained_models/epoch_175.ckpt.index b/tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.index
similarity index 100%
rename from part_seg/train_results/trained_models/epoch_175.ckpt.index
rename to tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.index
diff --git a/part_seg/train_results/trained_models/epoch_175.ckpt.meta b/tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.meta
similarity index 100%
rename from part_seg/train_results/trained_models/epoch_175.ckpt.meta
rename to tensorflow/part_seg/train_results/trained_models/epoch_175.ckpt.meta
diff --git a/provider.py b/tensorflow/provider.py
similarity index 100%
rename from provider.py
rename to tensorflow/provider.py
diff --git a/sem_seg/README.md b/tensorflow/sem_seg/README.md
similarity index 100%
rename from sem_seg/README.md
rename to tensorflow/sem_seg/README.md
diff --git a/sem_seg/batch_inference.py b/tensorflow/sem_seg/batch_inference.py
similarity index 100%
rename from sem_seg/batch_inference.py
rename to tensorflow/sem_seg/batch_inference.py
diff --git a/sem_seg/collect_indoor3d_data.py b/tensorflow/sem_seg/collect_indoor3d_data.py
similarity index 100%
rename from sem_seg/collect_indoor3d_data.py
rename to tensorflow/sem_seg/collect_indoor3d_data.py
diff --git a/sem_seg/download_data.sh b/tensorflow/sem_seg/download_data.sh
similarity index 100%
rename from sem_seg/download_data.sh
rename to tensorflow/sem_seg/download_data.sh
diff --git a/sem_seg/eval_iou_accuracy.py b/tensorflow/sem_seg/eval_iou_accuracy.py
similarity index 100%
rename from sem_seg/eval_iou_accuracy.py
rename to tensorflow/sem_seg/eval_iou_accuracy.py
diff --git a/sem_seg/indoor3d_util.py b/tensorflow/sem_seg/indoor3d_util.py
similarity index 100%
rename from sem_seg/indoor3d_util.py
rename to tensorflow/sem_seg/indoor3d_util.py
diff --git a/sem_seg/meta/all_data_label.txt b/tensorflow/sem_seg/meta/all_data_label.txt
similarity index 100%
rename from sem_seg/meta/all_data_label.txt
rename to tensorflow/sem_seg/meta/all_data_label.txt
diff --git a/sem_seg/meta/anno_paths.txt b/tensorflow/sem_seg/meta/anno_paths.txt
similarity index 100%
rename from sem_seg/meta/anno_paths.txt
rename to tensorflow/sem_seg/meta/anno_paths.txt
diff --git a/sem_seg/meta/area1_data_label.txt b/tensorflow/sem_seg/meta/area1_data_label.txt
similarity index 100%
rename from sem_seg/meta/area1_data_label.txt
rename to tensorflow/sem_seg/meta/area1_data_label.txt
diff --git a/sem_seg/meta/area2_data_label.txt b/tensorflow/sem_seg/meta/area2_data_label.txt
similarity index 100%
rename from sem_seg/meta/area2_data_label.txt
rename to tensorflow/sem_seg/meta/area2_data_label.txt
diff --git a/sem_seg/meta/area3_data_label.txt b/tensorflow/sem_seg/meta/area3_data_label.txt
similarity index 100%
rename from sem_seg/meta/area3_data_label.txt
rename to tensorflow/sem_seg/meta/area3_data_label.txt
diff --git a/sem_seg/meta/area4_data_label.txt b/tensorflow/sem_seg/meta/area4_data_label.txt
similarity index 100%
rename from sem_seg/meta/area4_data_label.txt
rename to tensorflow/sem_seg/meta/area4_data_label.txt
diff --git a/sem_seg/meta/area5_data_label.txt b/tensorflow/sem_seg/meta/area5_data_label.txt
similarity index 100%
rename from sem_seg/meta/area5_data_label.txt
rename to tensorflow/sem_seg/meta/area5_data_label.txt
diff --git a/sem_seg/meta/area6_data_label.txt b/tensorflow/sem_seg/meta/area6_data_label.txt
similarity index 100%
rename from sem_seg/meta/area6_data_label.txt
rename to tensorflow/sem_seg/meta/area6_data_label.txt
diff --git a/sem_seg/meta/class_names.txt b/tensorflow/sem_seg/meta/class_names.txt
similarity index 100%
rename from sem_seg/meta/class_names.txt
rename to tensorflow/sem_seg/meta/class_names.txt
diff --git a/sem_seg/model.py b/tensorflow/sem_seg/model.py
similarity index 100%
rename from sem_seg/model.py
rename to tensorflow/sem_seg/model.py
diff --git a/sem_seg/test_job.sh b/tensorflow/sem_seg/test_job.sh
similarity index 100%
rename from sem_seg/test_job.sh
rename to tensorflow/sem_seg/test_job.sh
diff --git a/sem_seg/train.py b/tensorflow/sem_seg/train.py
similarity index 100%
rename from sem_seg/train.py
rename to tensorflow/sem_seg/train.py
diff --git a/sem_seg/train_job.sh b/tensorflow/sem_seg/train_job.sh
similarity index 100%
rename from sem_seg/train_job.sh
rename to tensorflow/sem_seg/train_job.sh
diff --git a/train.py b/tensorflow/train.py
similarity index 100%
rename from train.py
rename to tensorflow/train.py
diff --git a/utils/data_prep_util.py b/tensorflow/utils/data_prep_util.py
similarity index 100%
rename from utils/data_prep_util.py
rename to tensorflow/utils/data_prep_util.py
diff --git a/utils/eulerangles.py b/tensorflow/utils/eulerangles.py
similarity index 100%
rename from utils/eulerangles.py
rename to tensorflow/utils/eulerangles.py
diff --git a/utils/pc_util.py b/tensorflow/utils/pc_util.py
similarity index 100%
rename from utils/pc_util.py
rename to tensorflow/utils/pc_util.py
diff --git a/utils/plyfile.py b/tensorflow/utils/plyfile.py
similarity index 100%
rename from utils/plyfile.py
rename to tensorflow/utils/plyfile.py
diff --git a/utils/tf_util.py b/tensorflow/utils/tf_util.py
similarity index 100%
rename from utils/tf_util.py
rename to tensorflow/utils/tf_util.py