Search code examples
luatorch

lua:15: unexpected symbol near '['


I am trying to write a function to create a CNN model. I get the following error whenever I run the script:

lua:15: unexpected symbol near '['

require('torch')

require('nn')

function CeateNvidiaModel()

    --The Nvidia model
    --Input dimensions
    local n_channels = 3
    local height = 66
    local width = 200
    local nvidia_model = nn.Sequential();
    --nvida_model:add(nn.Normalize()
    --Convolutional Layers
    nvidia_model:add(nn.SpatialConvolution(n_channels, 24, 5, 5, [2], [2]))
    nvidia_model:add(nn.ELU(true))
    nvidia_model:add(nn.SpatialConvolution(24, 36, 5, 5, [2], [2]))
    nvidia_model:add(nn.ELU(true))
    nvidia_model:add(nn.SpatialConvolution(36, 48, 5, 5, [2], [2]))
    nvidia_model:add(nn.ELU(true))
    nvidia_model:add(nn.SpatialConvolution(48, 64, 3, 3))
    nvidia_model:add(nn.ELU(true))
    nvidia_model:add(nn.SpatialConvolution(64, 64, 3, 3))
    nvidia_model:add(nn.ELU(true))
    -- Flatten Layer
    nvidia_model:add(nn.Reshape(1164))
    -- FC Layers
    nvida_model:add(nn.Linear(1164, 100))
    nvidia_model:add(nn.ELU(true))
    nvida_model:add(nn.Linear(100, 50))
    nvidia_model:add(nn.ELU(true))
    nvida_model:add(nn.Linear(50, 10))
    nvidia_model:add(nn.ELU(true))
    nvida_model:add(nn.Linear(10, 1))
    return nvida_model
end

Solution

  • I assume you are confusing [] and {}. In many other languages, you write array literals as [1, 2, 3], but in Lua [ and ] are only used for indexing; to declare an "array literal", you write {1, 2, 3} (because arrays in Lua are just tables).

    The error message is a bit misleading; it says unexpected symbol near '[', but in reality the [ is the unexpected symbol.