#tensorflow #keras #lstm #predict
#тензорный поток #keras #lstm #прогнозировать
Вопрос:
Я обучил модель с использованием keras на основе цен на криптовалюту. Он хорошо обучается и имеет точность примерно 60%. Однако мне трудно понять, как использовать результаты model.predict() для сравнения / построения графика с фактическими значениями.
Моя модель выглядит следующим образом:
model = Sequential()
model.add(LSTM(128, input_shape=(train_x.shape[1:]), return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(LSTM(128, input_shape=(train_x.shape[1:]), return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(LSTM(128, input_shape=(train_x.shape[1:])))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(Dense(32, activation="tanh")) #could use relu
model.add(Dropout(0.2))
model.add(Dense(2, activation="softmax"))
opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6)
model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
history = model.fit(
train_x, train_y,
batch_size=BATCH_SIZE,
epochs=EPOCHS,
validation_data=(validation_x, validation_y))
# ## Plot predictions
targets = validation_data['close'] #get all the actual prices from the validation data
preds = model.predict(validation_x)
train_x — это первые 90% или около того данных, а validation_x — последние 10% или около того.
целевые значения возвращаются в виде серии Pandas, которая выглядит как:
time
1552021200 0.312
1552024800 0.312
1552028400 0.310
1552032000 0.311
1552035600 0.311
1552039200 0.311
1552042800 0.310
1552046400 0.309
1552050000 0.310
1552053600 0.312
но preds возвращает ndarray, который выглядит как:
[[0.41261673 0.5873832 ]
[0.34726056 0.65273947]
[0.33154735 0.6684527 ]
...
[0.4990835 0.50091654]
[0.27250433 0.7274957 ]
[0.3717066 0.6282934 ]]
До сих пор я обнаружил, что этот ndarray — это просто вероятности каждого класса, однако я уверен, что есть какой-то способ использовать эти вероятности для прогнозирования значений в тех же точках индекса, что и цели. Не уверен, как это сделать, хотя и не могу понять, как это сделать.
Комментарии:
1. Это проблема классификации или проблема регрессии?
2. @ShubhamPanchal регрессия
3. Если это регрессия, как вы можете использовать категориальную перекрестную энтропию и функцию softmax? Кажется, вы не выбрали правильную архитектуру.