我几乎完全关注这篇博文和 GitHub:
但是当我运行的时候,拍照并调用这条线:
var outputs = new float[tfLabels.Count];
tfInterface.Feed("Placeholder", floatValues, 1, 227, 227, 3);
tfInterface.Run(new[] { "loss" });
tfInterface.Fetch("loss", outputs);
该应用实际上崩溃并在 .Run 行生成以下错误。
我在输出窗口中收到此错误(应用程序崩溃):
04-04 17:39:12.575 E/TensorFlowInferenceInterface( 8017): Failed to run TensorFlow inference with inputs:[Placeholder], outputs:[loss] Unhandled Exception:
Java.Lang.IllegalArgumentException: Input to reshape is a tensor with 97556 values, but the requested shape requires a multiple of 90944
[[Node: block0_0_reshape0 = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](block0_0_concat, block0_0_reshape0/shape)]]
根据我正在阅读的关于这个错误的搜索的帖子,我有点理解这是因为图像不完全符合预期的大小,但在我下面的示例中,它被调整为适合 227x227每次都转换为 float ,如下所示:
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);
}
所以,我不明白是什么原因造成的,也不知道如何解决。请帮忙!
更新:我发现问题出在我的模型或标签上。我通过简单地交换上面示例/github 中的模型和标签文件,同时保持所有代码不变来发现这一点。当我这样做时,我不再收到错误。但是,这仍然不能告诉我太多。这个错误并不能很好地解释我的模型可能有什么问题。我假设它是模型,因为标签文件只是一个文本文件,每行都有标签。我使用 Azure 上的自定义视觉服务来创建我的模型。它在门户网站上训练和测试都很好。然后我将其导出为 TensorFlow。所以,我不确定我可能做错了什么或如何解决它。
谢谢!
最佳答案
经过几天的搜索和反复试验,这里没有答案,我找到了问题所在。总的来说,我想如果你给模型提供的图像尺寸与预期或设置接收的图像尺寸不同,我得到的这个 reshape 错误就会出现。
问题是,我读过的所有内容都表明,通常您必须为模型提供 227 x 227 x 3 的图像。然后,我开始注意到某些帖子的大小有所不同。有人说 225 x 225 x 3,有人说 250 x 250 x 3 等等。我也试过那些尺寸,但没有运气。
正如您在我对问题的编辑中看到的那样,我确实有一个线索。使用别人的预训练模型时,我的代码运行良好。但是,当我使用我在 Microsoft Azure 上创建的自定义模型时 CustomVision.ai站点,我收到此错误。
所以,我决定尝试检查模型,看看有什么不同。我关注了这篇文章:Inspect a pre trained model
当我检查使用 TensorBoard 工作的模型时,我发现输入是 227 x 227 x 3,这是我所期望的。然而,当我查看我的模型时,我注意到它是 224 x 224 x 3!我更改了我的代码以将图像调整为该大小并且它有效!问题消失了。
总而言之,出于某种原因,Microsoft Custom Vision 服务模型生成了一个期望图像大小为 224 x 224 x 3 的模型。我没有看到任何相关文档或设置。我也不知道这个数字是否会随着每个型号而改变。如果您遇到类似的形状错误,我首先要检查的是您为模型提供的图像的大小以及它期望的输入。好消息是你可以使用 TensorBoard 和我在上面链接的帖子检查你的模型,即使它是预训练的。查看输入部分,它应该看起来像这样:
希望这对您有所帮助!
关于android - TensorFlow 对象检测在 Xamarin Android 上失败并出现 reshape 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526797/
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调