pointnet中stn和mlp的理解錯誤的方式。
阿新 • • 發佈:2018-11-21
一開始以為文章中的程式碼是這樣的意思:
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論文中怎麼講這一部分的: