首页 > 解决方案 > System.InvalidOperationException : 异步操作未完成

问题描述

在 Ml.net 中安装导致异常的管道。这Fit不是等待的,我很困惑为什么会发生这种情况。任何帮助都是可观的

var model = pipeline.Fit(dataView);

堆栈跟踪

在 System.Threading.Channels.AsyncOperation.ThrowIncompleteOperationException() 在 System.Threading.Channels.AsyncOperation 1.GetResult(Int16 token) at Microsoft.ML.Transforms.RowShufflingTransformer.Cursor.MoveNextCore() at Microsoft.ML.Data.RootCursorBase.MoveNext() at Microsoft.ML.Trainers.TrainingCursorBase.MoveNext() at Microsoft.ML.Trainers.SdcaTrainerBase3.TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, Int32 weightSetCount) 在 Microsoft.ML.Trainers.StochasticTrainerBase 2.TrainModelCore(TrainContext context) at Microsoft.ML.Trainers.TrainerEstimatorBase2.TrainTransformer(IDataView trainSet , IDataView validationSet, IPredictor initPredictor) 在 Microsoft.ML.Trainers.TrainerEstimatorBase 1.Fit 2.Fit(IDataView input) at Microsoft.ML.Data.EstimatorChain(IDataView 输入) 在 D:\Sources\code-everything\CodeItHere\ML.DetectFakeJobPosts\Program 中的 ML.DetectFakeJobPosts.Analyzer.Train()。 cs:在 D:\Sources\code-everything\CodeItHere\ML.DetectFakeJobPosts\Program.cs 中的 ML.DetectFakeJobPosts.Program.Main(String[] args) 的第 75 行:第 13 行

管道

    var pipeline = _context.Transforms.Categorical.OneHotEncoding("ec_title", "title")
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_location", "location"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_department", "department"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_salary_range", "salary_range"))
        .Append(_context.Transforms.Text.FeaturizeText("ec_company_profile", "company_profile"))
        .Append(_context.Transforms.Text.FeaturizeText("ec_description", "description"))
        .Append(_context.Transforms.Text.FeaturizeText("ec_requirements", "requirements"))
        .Append(_context.Transforms.Text.FeaturizeText("ec_benefits", "benefits"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_employment_type", "employment_type"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_required_experience", "required_experience"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_required_education", "required_education"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_industry", "industry"))
        .Append(_context.Transforms.Categorical.OneHotEncoding("ec_function", "function"))

        //drop unnecessary columns from view
        .Append(_context.Transforms.DropColumns("title", "location", "department", "salary_range", "company_profile", "description", "requirements", "benefits", "employment_type", "required_experience", "required_education", "industry", "function", "telecommuting", "has_company_logo", "has_questions"))

        //concate features
        .Append(_context.Transforms.Concatenate("Features", "ec_title", "ec_location", "ec_department", "ec_salary_range", "ec_company_profile", "ec_description", "ec_requirements", "ec_benefits", "ec_employment_type", "ec_required_experience", "ec_required_education", "ec_industry", "ec_function"))
        //set label/prediction column
        .Append(_context.Transforms.Conversion.ConvertType("Label", "fraudulent", DataKind.Boolean))
        //select a trainer
        .Append(_context.BinaryClassification.Trainers.SdcaLogisticRegression());

单击此处获取数据集

版本

网络:1.5.1

核心:3.1

标签: c#machine-learning.net-coreml.net

解决方案


这个问题来自我为更新部分代码以使用Channels所做的PR。事实证明,在我们检查导致错误的结果之前,并不总是保证完成异步调用。

目前在每日 NuGet 源中对此进行了修复,以获取最新的每日构建,直到 1.5.2 版本正式发布。


推荐阅读