Я выполнил этот код простой классификации NN XOR и получил сообщение «Ошибка сегментации (дамп ядра)». До конца генерации данных все работает нормально, я думаю, потому что я попробовал строку print () и это появляется как результат. Но после этого не отображается.
require('torch')
require('nn')
-- Model
mlp = nn.Sequential()
inputs = 2
outputs = 1
HUs = 20
mlp:add(nn.Linear(inputs, HUs))
mlp:add(nn.Tanh())
mlp:add(nn.Linear(HUs, outputs))
-- Loss function
criterion = nn.MSECriterion()
-- Training
-- Create Data on the fly to feed Network
for i = 1,2500 do
-- Random sample
local input=torch.randn(2);
local output=torch.Tensor(1);
-- Cal label for XOR function
if input[1]*input[2]>0 then
output[1] = -1
else
output[1] = 1
end
-- Feed it to NN
criterion:forward(mlp:forward(input), output)
-- Train
-- (1) Zero gradients accumulation
mlp:ZeroGradParameters()
-- (2) Accumulate gradients
mlp:backward(input, criterion:backward(mlp.output, output))
-- (3) update parameters with lr = 0.01
mlp:updateParameters(0.01)
end
x = torch.Tensor(2)
x[1] = 0.5
x[2] = 0.5
print(x)
print(mlp:forward(x))