您能帮我解决代码中出现的以下错误吗? 尝试使用 LGBM 实施学习时发生错误。
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Dense
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
import os
os.environ["KERAS_BACKEND"] = "jax"
import keras
data = result
target = data['close'].values
features = data[['diff_log_close', 'diff_log_open', 'diff_log_high', 'diff_log_low']].values
scaler = MinMaxScaler(feature_range=(0, 1))
features_scaled = scaler.fit_transform(features)
target_scaled = scaler.fit_transform(target.reshape(-1, 1))
def create_dataset(X, y, time_steps=1):
Xs, ys = [], []
for i in range(len(X) - time_steps):
v = X[i:(i + time_steps)]
Xs.append(v)
ys.append(y[i + time_steps])
return np.array(Xs), np.array(ys)
TIME_STEPS = 10 # Number of time steps to input to LSTM
X, y = create_dataset(features_scaled, target_scaled, TIME_STEPS)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = Sequential()
model.add(LSTM(units=50, activation='relu', input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=1, validation_data=(X_test, y_test))
y_pred = model.predict(X_test)
y_pred_inv = scaler.inverse_transform(y_pred)
y_test_inv = scaler.inverse_transform(y_test.reshape(-1, 1))
for i in range(len(y_pred_inv)):
print(f"prediction: {y_pred_inv[i][0]}, value: {y_test_inv[i][0]}")
错误:
AttributeError: module 'keras.src.backend' has no attribute 'Variable'
我更改了 Keras 的版本。
在导入 keras 之前,您需要配置后端。如果没有,它永远不会导入 Variable 类,这可能与您的错误有关。
有关如何配置后端的信息可以在此页面找到: https://keras.io/getting_started/
从该页面复制:
您可以导出环境变量KERAS_BACKEND或者您可以编辑 您的本地配置文件位于 ~/.keras/keras.json 来配置您的 后端。可用的后端选项有:“jax”、“tensorflow”、“torch”。 示例:
export KERAS_BACKEND="jax"
在 Colab 中,您可以:
import os
os.environ["KERAS_BACKEND"] = "jax"
import keras
注意: 导入Keras之前必须配置后端,后端 包导入后无法更改。