pointnet中stn和mlp的理解错误的方式。

版权声明:转载注明出处 https://blog.csdn.net/york1996/article/details/84198135

一开始以为文章中的代码是这样的意思:

self.inputTransform=nn.Sequential(
    nn.Linear(point_num*3,64),
    nn.BatchNorm1d(64),
    nn.ReLU(inplace=True),

    nn.Linear(64, 128),
    nn.BatchNorm1d(128),
    nn.ReLU(inplace=True),

    nn.Linear(128, 1024),
    nn.BatchNorm1d(1024),
    nn.ReLU(inplace=True),
)
self.inputPool = nn.Sequential(
    nn.MaxPool1d(2, 2),
    nn.MaxPool1d(2, 2),
    nn.Linear(256, 9),
)
self.mlp2=nn.Sequential(
    nn.Linear(64,64),
    nn.ReLU(),
    nn.Linear(64, 128),
    nn.ReLU(),
    nn.Linear(128,1024),
)

在这里记录一下,其实原文中不是这个意思,我这个虽然可以跑的通,但是参数量少和其他原因,有可能没有原始版本的效果好。尤其是下面的pool,完全就是冗余的操作,这个时候才想到是理解错了。而且我也没有想到如何初始化输出矩阵。

可以看看PointNet论文中怎么讲这一部分的:

猜你喜欢

转载自blog.csdn.net/york1996/article/details/84198135
MLP