机器学习损失太大

问题描述 投票:0回答:1

我正在训练一个预测加密货币价格的神经网络,但是数据丢失太大,代码如下:

import numpy as np
import tensorflow as tf
from tensorflow.keras import layers, models,Sequential,Model,Input
from tensorflow.keras.optimizers import Adam
from sklearn.preprocessing import *
import matplotlib.pyplot as plt
import ccxt
import pandas as pd
import requests
import json
import datetime as dt
import time

# Определение входов
input1 = Input(shape=(100, 1))
input2 = Input(shape=(100, 1))

# Создание LSTM слоев для каждого входа
lstm1 = layers.LSTM(units=256, return_sequences=True, activation='sigmoid')(input1)
lstm1 = layers.LSTM(units=128, return_sequences=True, activation='tanh')(lstm1)
lstm1 = layers.LSTM(units=64, activation='linear')(lstm1)
lstm1 = layers.Dropout(0.2)(lstm1)

lstm2 = layers.LSTM(units=256, return_sequences=True, activation='sigmoid')(input2)
lstm2 = layers.LSTM(units=128, return_sequences=True, activation='tanh')(lstm2)
lstm2 = layers.LSTM(units=64, activation='linear')(lstm2)
lstm2 = layers.Dropout(0.2)(lstm2)


# Объединяем все LSTM выходы
merged = layers.concatenate([lstm1, lstm2])

# Добавляем Dense слой для объединенного выхода
output = layers.Dense(100, activation='linear')(merged)

# Создание и компиляция модели
model = Model(inputs=[input1, input2], outputs=output)
optimizer = Adam(learning_rate=0.000005)
model.compile(loss='mse', optimizer=optimizer)
df = pd.read_csv("/content/drive/MyDrive/traiding_bot/futures_nn_pred/btcdata15m.csv", sep ="\t")

list_of_close = df['Open'].to_list()
print(len(list_of_close))

df1 = pd.read_csv("/content/drive/MyDrive/traiding_bot/futures_nn_pred/btcoi15m.csv", sep ="\t")
list_of_oi = df1['openInterest'].to_list()
print(len(list_of_oi))

df3 = pd.read_csv("/content/drive/MyDrive/traiding_bot/futures_nn_pred/y.csv", sep ="\t")
y = df3['Close'].to_list()
print(len(y))
x1 = np.array(list_of_close).reshape(100,100)
x2 = np.array(list_of_oi).reshape(100,100)

min_max_scaler = MinMaxScaler()
x1 = min_max_scaler.fit_transform(x1)
x2 = min_max_scaler.fit_transform(x2)

x1 = x1.astype(float)
x2 = x2.astype(float)

y = np.array(y).reshape(100,100).astype(float)

# Обучение модели
history = model.fit([x1,x2], y,batch_size=64, epochs=100)

最后一次损失是:3848644352.0000

我的数据集包含 10,000 个收盘蜡烛和 10,000 个未平仓合约值

如何才能将损失降到最低?

python tensorflow machine-learning neural-network
1个回答
0
投票

学习率可能会非常低而无法收敛,请尝试 0.001 到 0.0001 之间的值。您也可以尝试双向 LSTM 层,它在金融时间序列中效果更好。

无论如何,误差非常高。我不知道您使用的是什么货币,但 RMSE 约为 62000,这在预测中可能是可靠的 100% 错误。这种差异不太可能是由于超参数固定造成的。您是否也在标准化输出?您也可以使用 MinMaxScaler() 来完成此操作,就像处理输入一样。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.