Neural network #火炬输出的二元逻辑回归没有变化

Neural network #火炬输出的二元逻辑回归没有变化,neural-network,deep-learning,torch,Neural Network,Deep Learning,Torch,torch中的逻辑回归有问题。 当我使用二元逻辑回归来训练模型时,输出保持不变,如下所示: linLayer = nn.Linear(3,1) sigmoid=nn.Sigmoid() model = nn.Sequential() model:add(linLayer) model:add(sigmoid) criterion = nn.BCECriterion() 用optim方法 for i = 1,epochs do current_loss = 0 for i = 1,(#

torch中的逻辑回归有问题。 当我使用二元逻辑回归来训练模型时,输出保持不变,如下所示:

linLayer = nn.Linear(3,1)
sigmoid=nn.Sigmoid()
model = nn.Sequential()
model:add(linLayer)
model:add(sigmoid)

criterion = nn.BCECriterion()
用optim方法

for i = 1,epochs do
    current_loss = 0
for i = 1,(#dataset_inputs)[1] do

    _,fs = optim.sgd(feval,x,sgd_params)

    current_loss = current_loss + fs[1]
end
current_loss = current_loss / (#dataset_inputs)[1]
print('epoch = ' .. i .. 
 ' of ' .. epochs .. 
 ' current loss = ' .. current_loss)

end
新加坡元参数为:

sgd_params = {
   learningRate = 1e-6,
   learningRateDecay = 1e-4,
   weightDecay = 0,
   momentum = 0
} 
它看起来像:

epoch = 1 of 2000 current loss = 8.7728492043066    
epoch = 2 of 2000 current loss = 8.7728492043066    
epoch = 3 of 2000 current loss = 8.7728492043066    
epoch = 4 of 2000 current loss = 8.7728492043066    
epoch = 5 of 2000 current loss = 8.7728492043066    
epoch = 6 of 2000 current loss = 8.7728492043066    
epoch = 7 of 2000 current loss = 8.7728492043066 
。。。。。。 模型的输出为:

0
0
0
0
0
0
.
.
.
有时是:

1
1
1
.
.
.
如果我改变学习率或学习率衰减,它根本不起作用。我对这个问题一无所知。你们知道这里怎么了吗

这是我的feval函数

feval = function(x_new)
    if x ~= x_new then
      x:copy(x_new)
   end

   _nidx_ = (_nidx_ or 0) + 1
   if _nidx_ > (#dataset_inputs)[1] then _nidx_ = 1 end

   local sample = dataset[_nidx_]
   local inputs = sample[{ {2,4} }]
   local target = sample[{ {1} }] 

   dl_dx:zero()

   local loss_x = criterion:forward(model:forward(inputs),target)
   model:backward(inputs, criterion:backward(model.output,target))

   -- return loss(x) and dloss/dx
   return loss_x, dl_dx
end

我们可以看看你的
feval
函数吗?@AlexanderLutsenko我现在已经提到了。谢谢。我修改了一些东西。模型:代码中将添加(nn.MulConstant(0.01))。在改变之后,它现在确实起作用了。我认为输入范围可能太大,无法获得准确答案。我们可以看看您的
feval
函数吗?@AlexanderLutsenko我现在已经提到了。谢谢。我修改了一些东西。模型:代码中将添加(nn.MulConstant(0.01))。在改变之后,它现在确实起作用了。我认为输入范围可能太大,无法获得准确答案。