System.InvalidOperationException : 异步操作尚未完成 [英] System.InvalidOperationException : The asynchronous operation has not completed
问题描述
安装导致 Ml.net 异常的管道.Fit
不是可等待的,我很困惑为什么会发生这种情况.任何帮助都是可观的
Fitting the pipeline causing exception in Ml.net. The Fit
is not an awaitable and I'm confused why this happens. Any help is appreciable
var model = pipeline.Fit(dataView);
堆栈跟踪
在System.Threading.Channels.AsyncOperation.ThrowIncompleteOperationException()在 System.Threading.Channels.AsyncOperation1.GetResult(Int16 token) 在 Microsoft.ML.Transforms.RowShufflingTransformer.Cursor.MoveNextCore() 在 Microsoft.ML.Data.RootCursorBase.MoveNext() 在 Microsoft.ML.Trainers.TrainingCursorBase.MoveNext() 在 Microsoft.ML.Trainers.SdcaTrainerBase
3.TrainCore(IChannel ch,RoleMappedData 数据,LinearModelParameters 预测器,Int32weightSetCount) 在Microsoft.ML.Trainers.StochasticTrainerBase2.TrainModelCore(TrainContext context) at Microsoft.ML.Trainers.TrainerEstimatorBase
2.TrainTransformer(IDataViewtrainSet、IDataView 验证集、IPredictor initPredictor) 在Microsoft.ML.Trainers.TrainerEstimatorBase2.Fit(IDataView input) at Microsoft.ML.Data.EstimatorChain
1.Fit(IDataView input) atML.DetectFakeJobPosts.Analyzer.Train() 在D:Sourcescode-everythingCodeItHereML.DetectFakeJobPostsProgram.cs:line75 在 ML.DetectFakeJobPosts.Program.Main(String[] args) 中D:Sourcescode-everythingCodeItHereML.DetectFakeJobPostsProgram.cs:line13
at System.Threading.Channels.AsyncOperation.ThrowIncompleteOperationException() at 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.SdcaTrainerBase
3.TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, Int32 weightSetCount) at Microsoft.ML.Trainers.StochasticTrainerBase2.TrainModelCore(TrainContext context) at Microsoft.ML.Trainers.TrainerEstimatorBase
2.TrainTransformer(IDataView trainSet, IDataView validationSet, IPredictor initPredictor) at Microsoft.ML.Trainers.TrainerEstimatorBase2.Fit(IDataView input) at Microsoft.ML.Data.EstimatorChain
1.Fit(IDataView input) at ML.DetectFakeJobPosts.Analyzer.Train() in D:Sourcescode-everythingCodeItHereML.DetectFakeJobPostsProgram.cs:line 75 at ML.DetectFakeJobPosts.Program.Main(String[] args) in D:Sourcescode-everythingCodeItHereML.DetectFakeJobPostsProgram.cs:line 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());
版本
Ml.net : 1.5.1
Ml.net : 1.5.1
核心:3.1
推荐答案
此问题来自 PR I made 更新部分代码以使用 Channels一>.事实证明,在我们检查导致错误的结果之前,并不总是保证完成异步调用.
The issue for this is from a PR I made to update part of the code to use Channels. It turns out that it's not always guaranteed to finish the async call before we check the result of it which is causing the error.
目前在 daily NuGet feed 获取最新的每日构建,直到 1.5.2 版本正式发布.
There's a fix for this currently in the daily NuGet feed to get the latest daily build until the 1.5.2 version gets officially released.
这篇关于System.InvalidOperationException : 异步操作尚未完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!