You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

股票预测代码报错:AttributeError与NameError问题求助

解决LSTM股票预测代码中的两个报错问题

咱们一步步来拆解你遇到的两个报错,彻底搞定你的股票预测模型代码:

第一个报错:AttributeError: module 'tensorflow' has no attribute 'get_default_graph'

问题根源

你同时混用了**tensorflow.keras和原生keras库**,这在TensorFlow 2.x版本里是大忌!这两个库在TF2.x已经合并成tensorflow.keras,原生keras会调用TensorFlow旧版本的API(比如tf.get_default_graph()),但TF2.x已经移除了这个旧API的直接调用方式,所以触发了属性错误。看你最初的导入列表,既导入了from tensorflow.keras.models import Sequential,又导入了from keras.models import Sequential,这就是冲突的核心原因。

修复方案

彻底抛弃原生keras的导入,所有模块统一使用tensorflow.keras。


第二个报错:NameError: name 'Sequential' is not defined

问题根源

你修改后的代码里,虽然写过model = tf.keras.Sequential(),但后面构建模型时又直接用Sequential(),而你并没有把Sequential类导入到当前命名空间,也没使用完整的tf.keras.Sequential路径调用,Python自然找不到这个名称。另外你还保留了from keras.layers import Dense, LSTM这种原生keras的导入,依然会埋下冲突隐患。

正确的代码调整方案

第一步:统一导入tensorflow.keras模块

把所有原生keras的导入全部删掉,替换成tensorflow.keras的对应模块:

import math
import pandas_datareader as web
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
import quandl
import tensorflow as tf
from tensorflow.keras.layers import Dense, LSTM  # 用TF官方集成的层
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')

第二步:二选一构建模型

方式1:使用完整的tf.keras路径调用

这种方式不需要额外导入类,直接用完整路径,避免命名冲突:

# Build the LSTM network model
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(tf.keras.layers.LSTM(units=50, return_sequences=False))
model.add(tf.keras.layers.Dense(units=25))
model.add(tf.keras.layers.Dense(units=1))
方式2:提前导入所需类

如果觉得完整路径太繁琐,可以提前导入需要的类,之后直接使用类名:

# 先导入需要的模型和层类
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM

# 然后构建模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(LSTM(units=50, return_sequences=False))
model.add(Dense(units=25))
model.add(Dense(units=1))

额外小贴士

  • 检查你的TensorFlow版本,确保是2.x以上:执行print(tf.__version__)查看,如果版本过低,用pip install --upgrade tensorflow升级。
  • TensorFlow 2.x默认启用Eager Execution,不需要手动处理图会话,别再尝试调用tf.get_default_graph()这类旧API啦。

内容的提问来源于stack exchange,提问作者Abood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:48:11