2016-08-09 2 views
0

У меня есть проблема классификации рядов временного ряда, и я импортировал данные в факел. Я написал две разные сети, чтобы узнать данные. Каждый ряд должен быть помечен как 1 или 0.Статическая/постоянная потеря для сверточной нейронной сети в факеле

Проблема заключается в том, что потеря Сверторной сети не падает после первой итерации. Он остается на точно такое же значение, после итерации один. Это неверно для другой сети - логистическая регрессия. Потеря этой сети падает со временем.

Ниже ConvNet:

model = nn.Sequential() 

for i = 1, iteration do 
    model:add(nn.TemporalConvolution(1,1,3,1)) 
    model:add(nn.BatchNormalization(1)) 
    model:add(nn.ReLU()) 
    model:add(nn.TemporalMaxPooling(3,2)) 
    if i == iteration then 
      model:add(nn.Sigmoid()) 
    end 
end 

Поскольку потери в LogReg в это падение, я предполагаю, что проблема связана с самим ConvNet, а не что-нибудь еще в коде.

Любой совет будет очень благодарен. Я рад опубликовать больше кода, если потребуется.

ответ

1

Обычно, если нет улучшения при минимизации функции потерь, модель уже находится на локальном (глобальном) минимуме.

Это может иметь несколько причин, например. учебная скорость, регулирование, данные не подходят для модели в некотором роде ... Трудно сказать только на основе модели.

Вы использовали тот же самый код для обучения в LogReg?

Вы можете проверить этот учебник для некоторой информации о temporalConvolution: http://supercomputingblog.com/machinelearning/an-intro-to-convolutional-networks-in-torch/

+0

спасибо за ссылку! Я реализовал учебник по ссылке, и он отлично работает. однако мой собственный ConvNet все еще не обновляет ...: - / –

Смежные вопросы