-1

I re-implement pointnet using tensorflow 2.0, and I try to train the model using modelnet40 datase for classification. The training loss will decrease along with apochs increase, but the accuracy dosen't change, no matter I use data augmentation or not. Could anyone help me to check what's wrong with my model? Does some layers I wrote wrong?

For the model: https://github.com/YoungsonZhao/pointnet-tf2

Train the model: pytho train.py

The following is the traing process: Training accuracy at epoch 5: 0.057795971632003784 Validation accuracy at epoch 5: 0.04608013108372688

Training accuracy at epoch 6: 0.05832040682435036 Validation accuracy at epoch 6: 0.04566596820950508

Training accuracy at epoch 7: 0.05819009244441986 Validation accuracy at epoch 7: 0.04468472674489021

Training accuracy at epoch 8: 0.05893701687455177 Validation accuracy at epoch 8: 0.046150218695402145

Training accuracy at epoch 9: 0.0599127858877182 Validation accuracy at epoch 9: 0.04491410776972771

Training accuracy at epoch 10: 0.06009077653288841 Validation accuracy at epoch 10: 0.046672698110342026

Training accuracy at epoch 28: 0.06358383595943451 Validation accuracy at epoch 28: 0.04680650308728218

Training accuracy at epoch 29: 0.06306575238704681 Validation accuracy at epoch 29: 0.04655800759792328

Training accuracy at epoch 30: 0.0629672259092331 Validation accuracy at epoch 30: 0.04646880552172661

Training accuracy at epoch 31: 0.06284327059984207 Validation accuracy at epoch 31: 0.04568508639931679

Training accuracy at epoch 32: 0.06370460987091064 Validation accuracy at epoch 32: 0.046411458402872086

Training accuracy at epoch 33: 0.0630435049533844 Validation accuracy at epoch 33: 0.04663446918129921

Training accuracy at epoch 34: 0.0633549913764 Validation accuracy at epoch 34: 0.04697216674685478

Training accuracy at epoch 36: 0.06309753656387329 Validation accuracy at epoch 36: 0.04523269459605217

Training accuracy at epoch 37: 0.06364422291517258 Validation accuracy at epoch 37: 0.04645606130361557

Training accuracy at epoch 38: 0.06378089636564255 Validation accuracy at epoch 38: 0.04643694683909416

Training accuracy at epoch 39: 0.06462635099887848 Validation accuracy at epoch 39: 0.045532163232564926

Training accuracy at epoch 40: 0.06383810192346573 Validation accuracy at epoch 40: 0.04674915969371796

Training accuracy at epoch 41: 0.06361879408359528 Validation accuracy at epoch 41: 0.04612473398447037

Training accuracy at epoch 42: 0.06479480117559433 Validation accuracy at epoch 42: 0.0459526963531971

Yongsheng
  • 1
  • 1

1 Answers1

0

After two days' debuging, I finally found and fixed this bug.

In dataset map function, I use tf.one_hot to generate label. For ModelNet40 dataset, there is 40 categories, thus given one label tf.one_hot would general a vector wit size [40]. However, tf.one_hot generate a 2-D Tensor of [1, 40]. After dataset.map, the labels Tensor is [batch_size, 1, 40]. But the model is output is [batch, 40], which make the accuracy metric compute wrong.

Therefore, I use tf.squeeze to make the labels Tensor [batch_size, 40].

Yongsheng
  • 1
  • 1