cp: dist/*.whl: No such file or directory
現象
bazel-bin/build_pip_pkg artifacts を実行した際に、下記エラーが出る。
cp: dist/*.whl: No such file or directory
対処法
python -m pip install wheel setuptools pip --upgrade を実行する。
参考
error: unknown argument: '-fno-canonical-system-headers'
M1mac上にtensorflow環境を整えていた時のエラー。
現象
bazel build build_pip_pkg で、タイトルのエラーが出る。
対処法
bazel clean --expunge を実行する。
参考
環境構築参考
エラー 'tensorflow.python.framework.ops' has no attribute '_TensorLike'
対策
keras/backend/tensorflow_backend.py を、下記のように修正する。
from tensorflow.python.framework import tensor_util def is_tensor(x): return tensor_util.is_tensor(x) #return isinstance(x, tf_ops._TensorLike) or tf_ops.is_dense_tensor_like(x)
Colabでも修正可能。
エラー画面で、該当ファイル名が青文字になっているはず。
クリックすると、右側にファイルが表示される。
そのまま修正し、command/ctrl + S で保存すればOK。
(スクショは撮り忘れました・・・)
参考
MMTrackingインストールメモ
基本的には公式のInstall.md通りだが、 いくつか躓きポイントがあったためメモする。
環境:Windows10 Home
python>=3.7にしておく。 公式では、3.6以上と書いてあったが、3.6ではエラーが出た。 3.7以上であれば、インストールできた。
手順6の前に、WIndows10の「システムロケール」を切り替える。 そのまますすめると、6のインストール時に、「エンコードが・・・」というエラーが出た。 Windowsの「システムロケール」を変更することで、一旦回避する。
設定の「時刻と地域」→「地域と言語」→「日付、時刻、地域の追加設定」→「地域」 「管理」タブ→「システムロケールの変更」→「ベータ:ワールドワイド言語サポートで・・・」にチェックを入れる。
その後「OK」を選択し、再起動となる。 デフォルトが「UTF-8」になる。 参考|https://howpon.com/247
手順7で、足りないライブラリをインストール python setup.py develop を実行しても、いくつか足りないライブラリのためにエラーが出た。 エラー表示に出るライブラリをインストールする。
pytest
- flake8
エラー対処法「Found dtype Long but expected Float」 # pytorch_Lighning
pytorch lightnin使用中に、 タイトルのエラーが出ました。
原因
正解ラベルの型が、floatで無かった。
対策
labelをfloatにする。 整数値で良くても、floatに型変換しておく。 下記、イメージ。
float(label)
pytorch_lightning エラー|validation_epoch_endで止まる
現象
validation_epoch_end内で、引数のリストの長さをべた書きして、処理を書いていました。
下図で言うと、valデータ合計÷バッチサイズ=25が、リストの長さだと想定していました。
(補足|validation_epoch_endの引数としては、validation_stepの戻り値のリストが返ってくる。)
しかし、その処理でエラーになっていました。
原因
原因は、学習前に自動的に動く、"sanity check" という機能でした。 学習前に、評価データを少し使って、挙動を確認するようです。 "少し"とは、デフォルトでは2バッチ分です。
対策
- 集計を工夫する 引数で来るリストの長さが変わってもよいように、集計の計算を変更すればよいです。
例えば、リストの長さが変わるので、for文で回すときはlen(リスト)とします。
for i in range(len(リスト)): ....
そもそもここで詰まったのは、validation_epoch_end引数のサイズが変わることを、考慮してなかったからでした。 実装の甘さが露呈してしまいました・・・。
一応、他の方法も記しておきます。
2. フラグを作って、1回目のvalidation_epoch_end呼び出しは、そのまま戻るようにする。
下記のイメージです。
IS_DONE_CHEK = 0 # 初期化 ... def validation_epoch_end(self, outputs): if IS_DONE_CHEK==0: IS_DONE_CHEK=1 return # 関数の呼び出しが初の時は、何もしない ...
3. num_sanity_val_stepsを-1にする。
Trainerの引数で、num_sanity_val_steps=-1とすれば、validation dataすべてに対してsanity checkが動くようです。 すべてに対して動いてくれれば、集計等の計算で困ることはないかもしれません。
参考
機械学習用PCスペック(働くレガシーパーツたち)
機械学習コンペで用いている、ローカルPCのスペックを紹介しておこうと思います。ローカルPCは、自作デスクトップです。
最近はGoogle Colab が、便利です。Proに加えて、Pro+までサービスを出しています。
とはいえ、ローカルは何かと使いやすい(制限時間がない、画像やcsv等のデータ確認がしやすい)ので、おすすめです。
以下がスペックです。
CPU... corei7 3770K
メモリ... 16GB(DDR3)
マザーボード... H77
電源... 500W (80+ platinum)
ストレージ... 512GB(SSD)+2TB(HDD)
マザーボードやCPUは、PCを組んだ時のままです。
こうして振り返るってみると、長く使えてるなと感じます。