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

Conv1D神经网络预测结果传入Dash生成图表报TypeError问题求助

问题根因排查

  • 核心错误1:Dash回调参数不匹配
    你定义的回调仅传入1个输入参数(下拉框选中值),但update_figure函数声明了3个参数,多出来的X_countyname、y_countyname未在回调的Input/State中声明,Dash传递参数时出现类型不匹配,最终触发Keras底层运算时的格式化报错。
  • 错误2:缺少Dash布局声明
    代码中仅生成了下拉框选项列表,但没有声明应用的页面布局,未定义ID为opt的下拉框和ID为plot的图表组件,回调触发时无法找到对应组件。
  • 潜在问题:Keras与TensorFlow版本不兼容
    独立安装的Keras版本与本地TensorFlow版本不匹配时,也会触发底层策略运算的字符串格式化异常。

修复方案

1. 修正回调参数

X_countyname和y_countyname是全局加载的数据集,无需作为回调参数传入,直接修改回调函数定义即可:

@app.callback(Output('plot', 'figure'),[Input('opt', 'value')])
def update_figure(input):
    # 原有逻辑不变,直接使用全局的X_countyname、y_countyname即可

2. 补充Dash布局代码

在回调声明前、变量opts定义后补充布局代码:

app.layout = html.Div([
    html.H3('县域就业人数预测可视化'),
    dcc.Dropdown(id='opt', options=opts, value=features[0]),
    dcc.Graph(id='plot')
])

3. 修复Keras导入路径(解决版本兼容问题)

将所有Keras相关的导入语句改为从TensorFlow中导入,避免版本冲突:

from tensorflow.keras.layers import (
    Conv1D,
    Dense,
    Dropout,
    Input,
    Concatenate,
    GlobalMaxPooling1D,
    MaxPooling1D,
    Flatten,
)
from tensorflow.keras.models import Model, Sequential

4. 可选优化(提升运行速度)

当前每次切换下拉选项都会重新训练模型,建议将模型训练逻辑移到全局作用域,应用启动时仅训练一次,回调中仅执行预测逻辑,大幅提升交互响应速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:15:03