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

微软ML.NET情感分析教程运行报错splitDataView不存在当前上下文

问题原因

  • 直接报错根源:你在Evaluate方法首行写了Evaluate(mlContext, model, splitDataView.TestSet);,splitDataView是Main函数内定义的局部变量,作用域仅覆盖Main函数内部,Evaluate方法无法访问该变量,因此直接触发上下文不存在的错误。
  • 隐藏逻辑错误:Evaluate、UseModelWithSingleItem、UseModelWithBatchItems三个方法的首行都存在自我调用,属于无限递归逻辑,即使解决变量报错,运行后也会直接栈溢出崩溃。
  • 流程缺失:Main函数完成模型训练后,没有主动调用评估、预测相关的方法,完整逻辑没有执行。

修复方案

  1. 修改Main方法,训练完成后新增后续方法调用:
static void Main(string[] args)
{
    MLContext mlContext = new MLContext();
    TrainTestData splitDataView = LoadData(mlContext);
    ITransformer model = BuildAndTrainModel(mlContext, splitDataView.TrainSet);
    // 新增以下三行调用
    Evaluate(mlContext, model, splitDataView.TestSet);
    UseModelWithSingleItem(mlContext, model);
    UseModelWithBatchItems(mlContext, model);
}
  1. 删掉Evaluate方法首行的自我调用代码:
public static void Evaluate(MLContext mlContext, ITransformer model, IDataView splitTestSet)
{
    // 删除原首行的Evaluate(mlContext, model, splitDataView.TestSet);
    Console.WriteLine("=============== Evaluating Model accuracy with Test data===============");
    // 剩余原有逻辑保持不变
}
  1. 分别删掉UseModelWithSingleItem、UseModelWithBatchItems两个方法首行的自我调用代码,剩余原有逻辑保持不变即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:39:01