ホーム>source

現在、CaffeNet C ++画像分類の例で遊んでいます。デフォルトでは、この例ではフロートを使用しています。そして、ここに私が得た結果がありました:

--cat--
Classification time: 0.8267 seconds
0.3134 - "n02123045 tabby, tabby cat"
0.2380 - "n02123159 tiger cat"
0.1235 - "n02124075 Egyptian cat"
0.1003 - "n02119022 red fox, Vulpes vulpes"
0.0715 - "n02127052 lynx, catamount"
--dog--
Classification time: 0.8259 seconds
0.4228 - "n02106662 German shepherd, German shepherd dog, German police dog, alsatian"
0.1344 - "n02109961 Eskimo dog, husky"
0.0914 - "n02091467 Norwegian elkhound, elkhound"
0.0642 - "n02110063 malamute, malemute, Alaskan malamute"
0.0532 - "n02110185 Siberian husky"

Classification.cppですべてのfloatをdoubleに変更した後。より長い計算時間で同様の精度が得られることを望んでいました。ただし、計算時間が長くなりましたが、精度が正しくないためにネットワークが機能しなくなったようです。

--cat--
Classification time: 1.0368 seconds
0.0015 - "n04435653 tile roof"
0.0015 - "n04209239 shower curtain"
0.0014 - "n03530642 honeycomb"
0.0014 - "n03729826 matchstick"
0.0014 - "n04033901 quill, quill pen"
--dog--
Classification time: 1.0506 seconds
0.0015 - "n04435653 tile roof"
0.0015 - "n04209239 shower curtain"
0.0014 - "n03530642 honeycomb"
0.0014 - "n03729826 matchstick"
0.0014 - "n04033901 quill, quill pen"

Caffeフレームワークは異なるデータ型の精度をまったくサポートしていないのだろうか?ネットワークはフロートを使用してトレーニングされたため、他のデータ型の精度では機能しませんか?

ありがとう。

あなたの答え
  • 解決した方法 # 1

    チュートリアルで使用している平均ファイルとトレーニング済みパラメーターは、単精度値で保存されます。 float の変更   double へ  プログラムでは、保存された値は変更されないため、「ガベージ」を読み取りながら、保存された単精度値を倍精度結果として読み取ろうとします。ファイルを手動で倍精度値に変換する必要があります

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ java - CurrentSessionContextが構成されていません