【发布时间】:2021-10-29 15:15:58
【问题描述】:
我正在学习一些机器学习的工作原理,并最终构建了一个小型 C# 应用程序,因为我正在观看一个教程,其中模型确定特定蜜蜂是什么种类的蜜蜂。它在 C# 应用程序中运行良好,但我也在开发一个具有拍照功能的应用程序项目,所以我想“我在第一个项目中保存的模型没有理由不能在第二个项目中工作,对吧?”。显然它不能工作是有原因的,因为这是在应用程序项目中查看的必要代码:
MLContext m_mlObj;
DataViewSchema m_modelSchema;
ITransformer m_loadedTrainedModel;
var folderPath = DependencyService.Get<IFileSystem>().GetExternalStorage();
var fileDir = Path.Combine(folderPath, "trainedModel.zip");
bool testValue = File.Exists(fileDir);
if(testValue)
{
Console.WriteLine("File in fact exists.");
try
{
m_loadedTrainedModel = m_mlObj.Model.Load(fileDir, out m_modelSchema);
}
catch (Exception e)
{
Console.WriteLine("\n\n\nInner exception: " + e.InnerException);
}
}
else
{
Console.WriteLine("File does not exist");
}
我在“m_loadedTrainedModel = m_mlObj.Model.Load(fileDir, out m_modelSchema);”上有一个断点当然,它总是会触发异常。
异常状态:
---> System.TypeLoadException:无法加载字段'Microsoft.ML.Transforms.DnnRetrainTransformer:_tfInputShapes'(9)的类型,原因是:无法从typeref解析类型为01000060的类型(预期类'Tensorflow.TensorShape ' 在程序集 'TensorFlow.NET, Version=0.20.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51') 程序集:TensorFlow.NET, Version=0.20.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd5 1 类型:Tensorflow.TensorShape 成员: (空)
我认为这意味着它正在检查 TensorFlow.NET 包内的 Tensorflow.TensorShape 并且没有找到它。如果是这种情况,我相信我没有安装正确的包,所以我的 Xamarin 项目将能够正确加载模型,也许?或者如果不是,那么真正的潜在问题可能是什么?代码看起来很简单,所以我有点困惑这是如何失败的。
如果解决方案公然超出我的想象,我很抱歉,并感谢任何愿意提供帮助的人。
【问题讨论】:
-
更新:只是为了看看我会得到什么,我摆脱了 Tensorflow.NET (v0.60.2) 包,我得到了这个错误:内部异常:System.Reflection.TargetInvocationException:异常已经由调用的目标抛出。 ---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.DllNotFoundException: tensorflow assembly:
type: member:(null)" 是否有一个 DLL 我在某个地方丢失了作为潜在问题的地方,或者我应该忽略这个并继续担心关于我的第一个问题? -
1) 您正在使用哪些特定 包?2) 您正在使用哪个平台进行测试?
-
1) 我正在使用 a] Microsoft.ML b] Microsoft.ML.ImageAnalytics c] Microsoft.ML.Tensorflow d] Microsoft.ML.Vision e] NumSharp.Lite f] Syncfusion.Xamarin .SfImageEditor g] TensorFlow.NET h] Xam.Plugin.Media i] Xamarin.Essentials j] Xamarin.Forms 2) 如果我理解您的问题,我正在 Android 平台上开发此应用程序,但我正在尝试加载共享项目中的模型。希望这也不是问题
-
粗略搜索似乎表明您应该将 TensorFlow Lite 用于移动设备。我没有看到很多关于在 Xamarin 上使用完整 TensorFlow 库的参考资料。我可能错了,这不是我自己做过的事情
-
嗯,所以我的错误可能实际上是没有在 Xamarin 上使用 FULL TensorFlow 库?有趣的。好吧,如果我使用的是 TensorFlow Lite,我不认为这是我安装的软件包是公然的。我再检查一下看看。
标签: machine-learning xamarin model ml.net machine-learning-model