0
我想用optim
包來訓練一個CNN。我使用this code,從video tutorial(請參閱24:01左右)獲得,作爲參考。這個特殊的例子使用一個正常的神經網絡我也用this reference。火炬 - 使用CNN的優化包
我的代碼爲CNN可以找到here。問題是,如果輸入X
不是一個單一的形象,我得到一個錯誤:
In 14 module of nn.Sequential:
/home/ubuntu/torch/install/share/lua/5.1/nn/Linear.lua:57: size mismatch at /tmp/luarocks_cutorch-scm-1-1695/cutorch/lib/THC/generic/THCTensorMathBlas.cu:52
當我不使用GPU,誤差變得更加清晰:
size mismatch, [1024 x 2048], [409600]
爲了方便起見,我已經複製了我的完整模型:
-- Model begins
local model = nn.Sequential()
model:add(nn.SpatialConvolution(1, 64, 3, 3))
model:add(nn.ReLU())
model:add(nn.SpatialMaxPooling(2, 2, 2, 2))
model:add(nn.SpatialConvolution(64, 128, 3, 3))
model:add(nn.ReLU())
model:add(nn.SpatialMaxPooling(2, 2, 2, 2))
model:add(nn.SpatialConvolution(128, 256, 3, 3))
model:add(nn.ReLU())
model:add(nn.SpatialMaxPooling(2, 2, 2, 2))
model:add(nn.SpatialConvolution(256, 512, 3, 3))
model:add(nn.ReLU())
model:add(nn.SpatialMaxPooling(2, 2, 2, 2))
model:add(nn.View(-1))
model:add(nn.Linear(2048, 1024))
model:add(nn.ReLU())
model:add(nn.Linear(1024, 5))
model:add(nn.LogSoftMax())
-- Model ends
1)是否正確使用nn.View(-1)
?
2)據我所知,當輸入X
有多個圖像時,輸入到第一個Linear
圖層不是2048
。但是如果optim.sgd
在用作輸入的整個訓練集(X
)中正常工作,在第一個參考中給出的正常神經網絡的情況下?
3)在這個問題中使用optim.sgd
(或最好是optim.adam
)的最佳方法是什麼?