Skip to content

Instantly share code, notes, and snippets.

@gcr
Last active October 12, 2016 08:16
Show Gist options
  • Save gcr/0bab9929dfee95164a4d to your computer and use it in GitHub Desktop.
Save gcr/0bab9929dfee95164a4d to your computer and use it in GitHub Desktop.
AlexNet in Torch.
------- AlexNet: Using my own weight initialization
model = nn.Sequential()
model:add(cudnn.SpatialConvolution(3,96,11,11,4,4,2,2))
model.modules[#model.modules].weight:normal(0, 0.01)
model.modules[#model.modules].bias:fill(0)
model:add(cudnn.ReLU())
model:add(inn.SpatialCrossResponseNormalization(5, 0.0001, 0.75, 1))
model:add(nn.SpatialMaxPooling(3,3,2,2))
model:add(cudnn.SpatialConvolution(96,256,5,5,1,1,2,2))
model.modules[#model.modules].weight:normal(0, 0.01)
model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(inn.SpatialCrossResponseNormalization(5, 0.0001, 0.75, 1))
model:add(nn.SpatialMaxPooling(3,3,2,2))
model:add(cudnn.SpatialConvolution(256,384,3,3,1,1,1,1))
model.modules[#model.modules].weight:normal(0, 0.01)
model.modules[#model.modules].bias:fill(0)
model:add(cudnn.ReLU())
model:add(cudnn.SpatialConvolution(384,384,3,3,1,1,1,1))
model.modules[#model.modules].weight:normal(0, 0.01)
model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(cudnn.SpatialConvolution(384,256,3,3,1,1,1,1))
model.modules[#model.modules].weight:normal(0, 0.01)
model.modules[#model.modules].bias:fill(0.1)
model:add(nn.ReLU())
model:add(nn.SpatialMaxPooling(3,3,2,2))
model:add(nn.View(256*6*6))
model:add(nn.Linear(256*6*6, 4096))
model.modules[#model.modules].weight:normal(0, 0.005)
model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(nn.Dropout(0.5))
model:add(nn.Linear(4096, 4096))
model.modules[#model.modules].weight:normal(0, 0.005)
model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(nn.Dropout(0.5))
model:add(nn.Linear(4096, 1000))
model.modules[#model.modules].weight:normal(0, 0.01)
model.modules[#model.modules].bias:fill(0)
model:add(nn.LogSoftMax())
model:cuda()
------- AlexNet: Using Torch defaults for weight initialization
model = nn.Sequential()
model:add(cudnn.SpatialConvolution(3,96,11,11,4,4,2,2))
-- model.modules[#model.modules].weight:normal(0, 0.01)
-- model.modules[#model.modules].bias:fill(0)
model:add(cudnn.ReLU())
model:add(inn.SpatialCrossResponseNormalization(5, 0.0001, 0.75, 1))
model:add(nn.SpatialMaxPooling(3,3,2,2))
model:add(cudnn.SpatialConvolution(96,256,5,5,1,1,2,2))
-- model.modules[#model.modules].weight:normal(0, 0.01)
-- model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(inn.SpatialCrossResponseNormalization(5, 0.0001, 0.75, 1))
model:add(nn.SpatialMaxPooling(3,3,2,2))
model:add(cudnn.SpatialConvolution(256,384,3,3,1,1,1,1))
-- model.modules[#model.modules].weight:normal(0, 0.01)
-- model.modules[#model.modules].bias:fill(0)
model:add(cudnn.ReLU())
model:add(cudnn.SpatialConvolution(384,384,3,3,1,1,1,1))
-- model.modules[#model.modules].weight:normal(0, 0.01)
-- model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(cudnn.SpatialConvolution(384,256,3,3,1,1,1,1))
-- model.modules[#model.modules].weight:normal(0, 0.01)
-- model.modules[#model.modules].bias:fill(0.1)
model:add(nn.ReLU())
model:add(nn.SpatialMaxPooling(3,3,2,2))
model:add(nn.View(256*6*6))
model:add(nn.Linear(256*6*6, 4096))
-- model.modules[#model.modules].weight:normal(0, 0.005)
-- model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(nn.Dropout(0.5))
model:add(nn.Linear(4096, 4096))
-- model.modules[#model.modules].weight:normal(0, 0.005)
-- model.modules[#model.modules].bias:fill(0.1)
model:add(cudnn.ReLU())
model:add(nn.Dropout(0.5))
model:add(nn.Linear(4096, 1000))
-- model.modules[#model.modules].weight:normal(0, 0.01)
-- model.modules[#model.modules].bias:fill(0)
model:add(nn.LogSoftMax())
model:cuda()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment