web-dev-qa-db-ja.com

積和演算の数え方

畳み込みニューラルネットワークが定義されている場合、Multiply-Adds操作の数を計算する方法に関する関数または方法はありますか?

この用語が導入されましたMobileNetV2論文: https://arxiv.org/pdf/1801.04381​​.pdf

精度と、multiply-adds(MAdd)によって測定された操作の数、および実際のレイテンシと数のトレードオフを評価しますパラメーター。

6
Dat Nguyen

Multiply-Add操作は、モデルのFLOPを計算することと同じです。これは、テンソルフローのプロファイラーを使用して実現できます。

flops = tf.profiler.profile(graph,\
     options=tf.profiler.ProfileOptionBuilder.float_operation())
print('FLOP = ', flops.total_float_ops)

この答え で説明されている警告を必ず確認してください。基本的に:

  • 計算されるFLOPの数には、たとえば、ガウス分布を使用して重みを初期化することによる乗算-加算などの初期化操作が含まれる場合があります。これらの無関係な乗算-加算操作をルール化するには、グラフをフリーズする必要があります。
  • TensorFlowからの積和計算は概算です。この問題に関して問題が開かれました ここ
1
BiBi

機能についてはわかりませんが、このWebサイトはMulAdd操作の追跡に役立つはずです。唯一の注意点は、prototxtファイルが必要になる可能性があることですが、一般的なアーキテクチャの場合、MulAdd操作はすでにリストされています。

- https://dgschwend.github.io/netscope/quickstart.html

それが役に立てば幸い。

0
Ryan