2017-08-30 2 views
1

私はKerasモデルをCoreMLに変換しました。私は、CoreMLがすべてのテクスチャに対してフルフロートではなくハーフフロートを使用していることを確認したいと思います。これどうやってするの?CoreMLニューラルネットでハーフフロートを使用するにはどうすればよいですか?

更新日: ネットワークの出力がハーフフロートか、少なくともフロート(または他のタイプ)で、ダブルではないことを確認するにはどうすればよいですか?

答えて

2

GPLでCoreMLモデルを実行する場合は、これを行う必要はありません。 MPS(Metal Performance Shaders)は自動的にハーフフロートを使用します。 CoreMLモデルでGPUフレームキャプチャを実行すると、これが表示されます。

私は実際にそれが半分のフロートを使用して実証していること、CoreMLは、ボンネットの下にどのように動作するかについてのブログ記事を書いた:http://machinethink.net/blog/peek-inside-coreml/

+0

あなたはブログ記事で、あなたが(ところで非常に素晴らしいポスト)ことを示してどこに私を指すもらえますか?私はそれを見つけることができません。 – twerdster

+0

GPUフレームキャプチャからスクリーンショットを見てください。テクスチャはRGBA16Floatであると言われています。 –

+0

@twerdsterまた、[Appleのサンプルコード]にはこれに関する追加の証拠があります(https://developer.apple.com/library/content/samplecode/MetalImageRecognition/Listings/MetalImageRecognition_Inception3Net_swift.html#//apple_ref/doc/uid)。/TP40017385-MetalImageRecognition_Inception3Net_swift-DontLinkElementID_5)ここで、 'getLabel()'メソッドでは、MPImageの生のバイトをFloat16からFloat32に変換する必要があります。それは、彼らが常にこれらが半浮きになることを期待していることを示しています。 –

関連する問題