Как получить доступ к значению предыдущего временного шага в модели LSTM для керас для пользовательской функции потерь? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь предсказать цены акций, используя модель LSTM.Однако из-за зашумленных данных мне нужна нестандартная потеря с штрафной константой.Я не знаю, как получить данные с предыдущего временного шага, хотя (аргумент 'prev' в указанном коде)

Я делаю это с помощью условия: Нижняя константа if (true-prev) (pred-prev)> 0 иначе более высокая константа

def custom_loss(true,pred,prev):
    beta=0.5
    condition = (true-prev)(pred-prev) 
    if condition > 0:
        return K.mean(beta*K.square(true-pred))
    else:
        return K.mean((2-beta)*K.square(true-pred))

#model
model = Sequential()
model.add(LSTM(units=50, return_sequences = True, input_shape=(features_set.shape[1], X.shape[1])))  
model.add(Dropout(0.2)) 

model.add(LSTM(units=50, return_sequences = True))
model.add(Dropout(0.2)) 

model.add(LSTM(units=50, return_sequences = True))
model.add(Dropout(0.2)) 

model.add(LSTM(units=50))
model.add(Dropout(0.2)) 

model.add(Dense(units = X.shape[1]))  

opt = Adam(lr=0.01, beta_1=0.9, beta_2=0.999, decay=0.01)

model.compile(optimizer = opt, loss = custom_loss, metrics = ['accuracy']) 


model.fit(features_set, labels, epochs = 100, batch_size = 32, verbose=1)

Как получить значение предыдущего временного шага, поскольку пользовательские потери зависят только от истинного и прогнозируемого значения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...