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

Gradio部署ML模型后输入触发输出错误,求解决方案

解决Gradio部署回归模型的输出错误问题

常见错误原因及修复方案

1. 输入数据类型不匹配

Gradio的Number组件若接收到非数值输入(比如空值、字符串),会导致scaler.transform执行报错。可以在预测函数中添加数值校验逻辑,同时优化输出格式:

def predict_sales(tv, radio, newspaper):
    # 校验并转换输入为数值类型
    try:
        tv = float(tv)
        radio = float(radio)
        newspaper = float(newspaper)
    except ValueError:
        return "请输入有效的数值"
    
    input_features = scaler.transform([[tv, radio, newspaper]])
    prediction = lm.predict(input_features)
    return round(prediction[0], 2)  # 保留两位小数,提升输出可读性

2. 输入范围无限制导致异常预测

如果输入数值超出训练数据的特征范围,即使不会报错,预测结果也可能偏离预期。可以给输入组件设置合理的范围和默认值:

tv_input = gr.Number(label="TV", value=100, minimum=0, maximum=300)
radio_input = gr.Number(label="Radio", value=20, minimum=0, maximum=50)
newspaper_input = gr.Number(label="Newspaper", value=30, minimum=0, maximum=100)

3. 改用Blocks模式提升稳定性

部分Gradio版本中Interface模式可能存在兼容性问题,改用Blocks模式构建界面更灵活稳定:

import gradio as gr
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import MinMaxScaler

# 数据与模型训练逻辑不变
X_train = np.array([[230.1, 37.8, 69.2],
                    [44.5, 39.3, 45.1],
                    [17.2, 45.9, 69.3],
                    [151.5, 41.3, 58.5],
                    [180.8, 10.8, 58.4]])
y_train = np.array([22.1, 10.4, 9.3, 18.5, 12.9])

scaler = MinMaxScaler()
scaler.fit(X_train) 
X_train_scale = scaler.transform(X_train)  

lm = LinearRegression()
lm.fit(X_train_scale, y_train)

def predict_sales(tv, radio, newspaper):
    try:
        tv = float(tv)
        radio = float(radio)
        newspaper = float(newspaper)
    except ValueError:
        return "请输入有效的数值"
    input_features = scaler.transform([[tv, radio, newspaper]])
    prediction = lm.predict(input_features)
    return round(prediction[0], 2)

with gr.Blocks(title="销售额预测") as demo:
    gr.Markdown("# 销售额预测")
    gr.Markdown("输入广告投入费用,预测销售额")
    
    with gr.Row():
        tv = gr.Number(label="TV广告费用", value=100, min=0)
        radio = gr.Number(label="Radio广告费用", value=20, min=0)
        newspaper = gr.Number(label="Newspaper广告费用", value=30, min=0)
    
    output = gr.Textbox(label="预测销售额")
    btn = gr.Button("预测")
    btn.click(predict_sales, inputs=[tv, radio, newspaper], outputs=output)

demo.launch(debug=True, enable_queue=True)

4. 生产环境模型与缩放器配套保存

如果后续要将模型部署到生产环境,需确保模型与缩放器配套保存加载,避免单独加载模型导致的特征不匹配问题:

import joblib
# 保存
joblib.dump(lm, "linear_regression_model.pkl")
joblib.dump(scaler, "minmax_scaler.pkl")

# 加载
lm = joblib.load("linear_regression_model.pkl")
scaler = joblib.load("minmax_scaler.pkl")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:54:55