Mic*_*ord 4 android xamarin.android xamarin tensorflow
我几乎完全关注此博客文章和GitHub:
但是当我跑步时,拍一张照片并称这行:
var outputs = new float[tfLabels.Count];
tfInterface.Feed("Placeholder", floatValues, 1, 227, 227, 3);
tfInterface.Run(new[] { "loss" });
tfInterface.Fetch("loss", outputs);
Run Code Online (Sandbox Code Playgroud)
该应用实际上崩溃了,并在.Run行下面生成了错误。
我在输出窗口中收到此错误(应用崩溃):
04-04 17:39:12.575 E / TensorFlowInferenceInterface(8017):使用以下输入运行TensorFlow推理失败:[占位符],输出:[损失]未处理的异常:
Java.Lang.IllegalArgumentException:要重塑的输入是具有97556值的张量,但是请求的形状需要90944的倍数
[[Node:block0_0_reshape0 = Reshape [T = DT_FLOAT,Tshape = DT_INT32,_device =“ / job:localhost / replica :0 /任务:0 /设备:CPU:0“](block0_0_concat,block0_0_reshape0 / shape)]]
根据我正在对这个错误进行的搜索中读取的帖子,我有点理解这是由于图像不完全符合预期的大小,但是在我遵循的示例中,每次都将其调整为适合227x227的大小并进行转换像这些行中那样浮动:
var resizedBitmap = Bitmap.CreateScaledBitmap(bitmap, 227, 227, false).Copy(Bitmap.Config.Argb8888, false);
var floatValues = new float[227 * 227 * 3];
var intValues = new int[227 * 227];
resizedBitmap.GetPixels(intValues, 0, 227, 0, 0, 227, 227);
for(int i = 0; i < intValues.Length; i++)
{
var val = intValues[i];
floatValues[i * 3 + 0] = ((val & 0xFF) - 104);
floatValues[i * 3 + 1] = (((val >> 8) & 0xFF) - 117);
floatValues[i * 3 + 2] = (((val >> 16) & 0xFF) - 123);
}
Run Code Online (Sandbox Code Playgroud)
因此,我不知道是什么原因造成的或如何解决。请帮忙!
更新:我发现问题出在我的模型或标签上。通过简单地从上面的sample / github交换模型和标签文件,而所有代码都保持不变,我发现了这一点。当我这样做时,我不再收到错误。但是,这仍然不能告诉我太多。该错误并不能很好地说明我指出我的模型可能出了什么问题。我认为它是模型,因为标签文件仅仅是每行带有标签的文本文件。我在Azure上使用Custom Vision Service创建了模型。它在网络门户上训练得很好并且测试也很好。然后,我将其导出为TensorFlow。因此,我不确定我可能做错了什么或如何解决。
谢谢!
在这里没有答案,经过几天的搜索和反复试验后,我发现了问题。总的来说,如果您给模型提供的图像尺寸不是预期的或设置要接收的,我想我会得到这个整形错误。
问题是,我所读的所有内容都表明,通常必须为模型提供227 x 227 x 3的图像。然后,我开始注意到某些帖子的大小有所不同。有人说225 x 225 x 3,其他人说250 x 250 x 3,依此类推。我也尝试过这些尺寸,但没有运气。
如您在问题编辑中所见,我确实有一个线索。当使用别人的预训练模型时,我的代码可以正常工作。但是,当我使用在Microsoft Azure CustomVision.ai网站上创建的自定义模型时,出现此错误。
因此,我决定尝试检查模型以了解有什么不同。我关注了这篇文章:检查一个训练有素的模型
当我检查使用TensorBoard的模型时,我看到输入是227 x 227 x 3,这是我所期望的。但是,当我查看模型时,我注意到它是224 x 224 x 3!我更改了代码以将图像调整为该大小,并且可以正常工作!问题消失了。
因此,总而言之,由于某种原因,Microsoft Custom Vision服务模型生成的模型期望图像尺寸为224 x 224 x3。我没有看到任何文档或设置。我也不知道每个型号的数字是否会改变。如果出现类似的形状错误,则我首先要检查的是要提供给模型的图像的大小以及期望输入的图像。好消息是,即使使用预训练,您也可以使用TensorBoard和我上面链接的帖子检查模型。看一下输入部分,它应该看起来像这样:
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |