AttributeError:模块“keras.src.backend”没有属性“Variable”

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

您能帮我解决代码中出现的以下错误吗? 尝试使用 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 的版本。

python keras lstm
1个回答
0
投票

在导入 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之前必须配置后端,后端 包导入后无法更改。

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