以下の手順でスレッド数を調べられる。
- タスクマネージャを開く
- 「詳細」タブを表示
- ヘッダを右クリック>列の選択をクリック
- スレッド数にチェックを付けてOKをクリック
上記はWindows10向けの手順だが、以下のサイトにはWindows7向けの手順も載っている。
参考: superuser.com
以下の手順でスレッド数を調べられる。
上記はWindows10向けの手順だが、以下のサイトにはWindows7向けの手順も載っている。
参考: superuser.com
原因はwindows10の制約でパスの長さの最大値が256文字となっているがそれを越えてしまうため。 以下の方法で制限を解除すると直った。
floatだとテストOKな場合でもぴったり一致しないことがあるのでmath.iscloseを使う。
assert math.isclose(0.1, 0.1)
np.iscloseとかもあるらしい。
参考:
以下のようにraiseのみの文があったのでなんだこれと思ったら、raise eの場合とスタックトレースが異なるらしい。raiseの方がスタックトレースが見やすくていい。なるほど。
try: ~ except Exception as e: raise
詳細は以下参照。
推論時のCPU使用率を下げたい、というモチベーションでTensorFlowが使うコア数を減らしてみた。(CPUで推論させてます)
デフォルトでは推論時に論理コア数と同じだけスレッドが作られ、並列処理される。そうすると推論にかかる時間は短くなるが並列処理のオーバーヘッドがあるのでCPU使用率は上がる。
実際、TensorFlowのスレッド数を1にするとCPU使用率は10%~15%程度下がった。
TensorFlowが使うコア数は tf.ConfigProtoの引数のintra_op_parallelism_threadsとinter_op_parallelism_threadsで指定する。
intra_op_parallelism_threadsは一つのOperatorの計算(積和の計算とか)を何スレッドでやるか。 inter_op_parallelism_threadsは独立したOperatorの計算を最大いくつのスレッドでやるか。
参考: qiita.com
今日知ったが、2020年4月からAnacondaのdefaultsチャネルの使用が商用利用有料になっていたらしい。
詳細は以下参照。
ただ、conda-forgeからインストールするようにすれば無料で使い続けられる。
上記を参考に conda config --remove channels defaults
でdefaultsチャネルを削除使用とすると、以下エラーが発生した。
CondaKeyError: 'channels': 'defaults' is not in the 'channels' key of the config file
windows環境だから?しょうがないので以下のように手動で削除して対応した。
%HOMEPATH%\\AppData\Local\Continuum\miniconda3\.condarc の channels: - conda-forge - defaults から - defaults を削除
エラーメッセージの全体は以下。
CondaVerificationError: The package for tensorflow-base located at C:\Users\username\AppData\Local\Continuum\miniconda3\pkgs\tensorflow-base-1.15.0-mkl_py37h190a33d_0 appears to be corrupted. The path 'Lib/site-packages/tensorflow-1.15.0.data/purelib/tensorflow_core/include/tensorflow_core/core/grappler/optimizers/generic_layout_optimizer_transposer_factory.h' specified in the package manifest cannot be found.
原因はwindows10のパスの全文字数は最大256文字までだが、それを越えてしまうため。
以下の手順で最大文字数の制限を解除すると直った。
参考: github.com