日々精進

新しく学んだことを書き留めていきます

AI

pythonnetでpythonモジュールを実行すると「No module named~」エラー

AI

コマンドプロンプトから python main.py のように実行すると問題無いのにpythonnetから実行すると「No module named~」エラーになる、というケースがあった。 原因はpythonnetが.pthファイルを読んでくれないこと。以下のサイトには .pth ファイルを読み込…

conda exportで出力したyamlに含まれるprefix:は消して良い

AI

prefix:の行に環境依存のパスが書かれていて嫌だなと思っていたが、消して特に問題無いらしい。というか消した方が良い。何であるんだこの行。。 参考: stackoverflow.com

windowsでプロセスのスレッド数を調べる

AI

以下の手順でスレッド数を調べられる。 タスクマネージャを開く 「詳細」タブを表示 ヘッダを右クリック>列の選択をクリック スレッド数にチェックを付けてOKをクリック 上記はWindows10向けの手順だが、以下のサイトにはWindows7向けの手順も載っている。 …

TensorFlow MKLをwindowsでinstallしようとすると「ClobberError: This transaction has incompatible packages due to a shared path.」エラー

AI

原因はwindows10の制約でパスの長さの最大値が256文字となっているがそれを越えてしまうため。 以下の方法で制限を解除すると直った。 knowledge.autodesk.com

Pythonのテストでfloatの値を比較する

AI

floatだとテストOKな場合でもぴったり一致しないことがあるのでmath.iscloseを使う。 assert math.isclose(0.1, 0.1) np.iscloseとかもあるらしい。 参考: note.nkmk.me

Pythonでraiseのみ書いたときの挙動

AI

以下のようにraiseのみの文があったのでなんだこれと思ったら、raise eの場合とスタックトレースが異なるらしい。raiseの方がスタックトレースが見やすくていい。なるほど。 try: ~ except Exception as e: raise 詳細は以下参照。 qiita.com

TensorFlow, TensorFlow MKLが使うコア数を指定する

AI

推論時のCPU使用率を下げたい、というモチベーションでTensorFlowが使うコア数を減らしてみた。(CPUで推論させてます) デフォルトでは推論時に論理コア数と同じだけスレッドが作られ、並列処理される。そうすると推論にかかる時間は短くなるが並列処理のオ…

Anacondaのdefaultsチャネルの使用が商用利用有料になっていた

AI

今日知ったが、2020年4月からAnacondaのdefaultsチャネルの使用が商用利用有料になっていたらしい。 詳細は以下参照。 qiita.com ただ、conda-forgeからインストールするようにすれば無料で使い続けられる。 qiita.com 上記を参考に conda config --remove c…

conda installを実行すると「CondaVerificationError」エラー

AI

エラーメッセージの全体は以下。 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/si…

pythonのGCについて

AI

pythonのGCについて調べたことのメモ。 参照カウントと世代別mark&sweep方式 GCログを出す場合、gc.callbackにログを出力する関数を登録する。ただし、出力できる情報は限られている docs.python.org gc.set_debug(gc.DEBUG_STATS)で統計情報を出せるように…

「ImportError: No module named 'resource'」エラー

AI

resourceモジュールを使ってメモリ使用量を調べようとしたら掲題のエラーが出た。 原因はresourceモジュールはunixでしか使えないため(windows環境で実行しようとしていた・・) 解決策としてはpsutilをインストールして使うといいらしい 参考: stackoverf…

windows環境向けtensorflow-mklをinstallする

AI

intel公式サイトによると、windows向けはソースからビルドしてねと書いてある。 software.intel.com めんどい・・と思っていたがanacondaがビルド済モジュールを配布しているっぽい。ただし、tensorflowのすべてのバージョンに対応するmklバージョンがあるわ…

__pycache__のパスを変更する

AI

python3.8以降はPYTHONPYCACHEPREFIX環境変数を設定するなどの方法でpycacheが保存されるフォルダを変更することができる。 参考: stackoverflow.com

TensorFlowでModelを読み込むと「ValueError: NodeDef mentions attr 'incompatible_shape_error' not in Op~」エラー

AI

原因は学習時と推論時でTensorFlowのバージョンが違うこと。 参考: github.com

sagemaker.image_uris.retrieveを実行すると「No such file or directory: '/opt/conda/lib/python3.7/site-packages/sagemaker/image_uri_config/xgboost.json'」エラー

AI

sagemakerのverisonは2.40.0。以下のsampleを実行すると掲題のエラーが出た。 github.com エラーになったのは以下のコード。 image_uri = sagemaker.image_uris.retrieve( framework="xgboost", region=region, version="1.0-1", py_version="py3", instance…

sagemaker.get_execution_role()を実行すると「KeyError: 'UserSettings'」エラー

AI

sagemaker1.72.0ではこのエラーが起きないが、2.40.0では起きる。 何か前もって設定しておかないといけないのだろうか。。 一旦roleの文字列をget_execution_roleを使わず手動で設定するようにした。 参考: kiito.hatenablog.com

SageMaker StudioでExperimentsタブが表示されない

AI

以下の記事を参考にSageMaker Studioを触っていたところ、学習結果を確認するExperimentsタブが表示されていなくて困った。 dev.classmethod.jp UIが上記記事が公開された時と変わってComponents and registriesタブからExperimentsを表示するようになったっ…

tf.estimator.Estimatorのevaluateを呼ぶと「Fatal Python error: Segmentation fault」エラー

AI

TensorFlowのバージョンは1.15.0。 原因はevaluateメソッドのinput_fnに精度検証のinputを返す関数を渡していたが、その関数がNoneから空配列的なものを返していたため。 今回はtf.data.TFRecordDatasetに検証用データを渡してそのeval_input_fnを以下のよう…

tensorflowのモデルをtensorflow liteに変換してx86 cpuで動かすと変換前より速度が低下する問題

AI

tensorflow liteで動かせば速くなると思っていたのになぜ・・ 調べてみたら、tfliteはARMプロセッサに最適化されているのでx86 cpuでは遅いという情報がありました。 自分が動かしたい環境はx86 cpu。。 stackoverflow.com x86 cpuサポートは計画されている…

pd.read_excelでエクセルファイルを読み込むと「ValueError: Unknown engine: openpyxl」エラー

AI

このエラーメッセージでググるとopenpyxlをインストールしてengine='openpyxl'を引数に指定しろという情報があるが、これをやっても直らないので困った。。 原因はpandasのバージョン。1.0.1以上でないとだめらしい。 pip install -U pandas を実行してバー…

unzipコマンドで解凍してできたファイル名が文字化けしている問題

AI

unzip -O sjis hoge.zip のように文字コードを指定すると直った。自動で判定とかしてくれればいいのに。。 参考: qiita.com

TensorFlowの不具合調査をしやすくする

AI

TensorFlowで学習しているとlossがnanになり、その原因を調査することがあったが、かなり大変だった。。 不具合調査の時に、調査しやすくするために不具合の再現性を確保するために以下記事を参考にSeedを固定した。 参考: qiita.com

YOLOを学習するとIoUなどがnanになる

AI

学習途中で出力される評価指標がnanになることがあるが正常らしい。評価指標の計算式的に仕方ないのかも?ずっとnanが続くようだとだめだけど、学習データの中に物体のlabelが一つも含まれないような場合ではnanになるのは正常らしい。 参考: github.com

PyCharmのSSH Interpreterで実行時にファイルをアップロードしてくれない問題

AI

PyCharmのSSH Interpreterは便利だけど、使ってるといつの間にかサーバに修正したソースコードを自動でアップロードしてくれる機能が動かなくなることがよくある。。 その原因はdefault serverの設定がなぜか外れることっぽい。アップロードされなくなったら…

mish活性化関数を使う

AI

pip install tensorflow-addonsでTensorFlowのaddonを入れると使えるようになる。 import tensorflow_addons as tfa ... tfa.activations.mish(x) 参考: www.tensorflow.org

tf.keras.Model.saveを呼ぶと「TypeError: Input 'resource' of 'AssignVariableOp' Op has type float32 that does not match expected type of resource.」エラー

AI

デバッグのためtf.debugging.experimental.enable_dump_debug_info を呼んでいたが、これが原因だった。これを呼ばないようにすると直った。 参考: github.com

logging.config.dictConfigを実行すると「AttributeError: 'NoneType' object has no attribute 'flush'」エラー

AI

原因はabsl-pyがデフォルトのログハンドラを書き換えてしまい、かつそいつがsys.stderrがNoneになる場合を考慮していないため。 恐らくPythonを別のプロセスからConsoleを表示させず起動すると標準エラー出力の出力先が無くてNoneになる。 無理矢理だけど、l…

environment.yamlでconda仮想環境を作ろうとするとdlibインストール時にエラーが発生する

AI

dlibインストール時にcmakeを使ってビルドするようで、cmakeが入ってないとエラーがでる。 environment.yamlを使うならdlib以外をyamlを使ってインストールして、その後手動でdlibを入れるとかになりそう。。 手動の手順が入るのが嫌だったのでbatファイルで…

conda activate/deactivateをbatファイルで実行するとそれ以降のコマンドが実行されない

AI

activate/deactivateを実行する場合は以下のようにcallを頭につけないといけない。色々罠があるなぁ。。 echo y | conda create --name myenv python=3.7.9 call conda activate myenv pip install cmake==3.18.4.post1 参考: github.com

precisionやrecallの値を計算できない場合、どう処理するべきか

AI

precisionやrecallの値をクラス毎に出し、その平均を取りたいという場合、 precisionやrecallの計算式の分母が0になり計算できなかったらどうするか。 precisionやrecallの分母が0ということはPositiveと予測したものの数が0か、LabelがPositiveであるサンプ…