日々精進

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

同じ条件で前処理を実行してもアノテーションの順序が変わってしまう問題

原因は前処理の一部に実行の度に結果が変わってしまう部分があったため。random seedは固定していたがそれでもだめなところがあった。

それは、以下のようにglobでファイルを取得している箇所。

for p in Path("/path/to").glob("*"):
  ...

Dockerコンテナにsshでログインしてpythonスクリプトを実行する分には変わらないが、SageMakerからProcessing Jobを起動して前処理をすると何故か取得するファイルの順序が実行の度に変わる。。そうすると、データセットの中のファイルの順序が変わり、学習の再現性が低くなってしまう。

以下のようにsortすると毎回同じ順序でファイルパスを取得出来るようになった。

for p in sorted(Path("/path/to").glob("*")):
  ...

参考:

stackoverflow.com