日々精進

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

2022-06-01から1ヶ月間の記事一覧

Pandasで読み込むカラムを絞るのと、データ型の最適化で処理が速くなった

AI

DataFrameの処理を高速化する時に、以下を行うと100倍ぐらい速くなった。パフォーマンスチューニングの時はまずこれらをやるといいかも。 pd.read_csvで読み込む時に必要なカラムだけ読み込む さらにdtypeも指定してメモリ使用量を削減する 参考: qiita.com

tensorflowでEstimatorを使って学習する時はtf.set_random_seedを自分で呼んではいけない

AI

注意:tensorflow 1.15.2で確認したので最新版では以下の話は違うかも知れません すべてのradom seedを固定する関数を作ってそれを呼ぶようにしていたが、学習の再現性がなく困っていた。 Estimatorのコードを読んでみると、なんとEstimatorの中に以下のコー…

dpkg -i cuda-keyring_1.0-1_all.debの後でapt updateを実行すると「E: Conflicting values set for option Signed-By regarding source」エラー

AI

nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04をベースにDockerImageをビルドしようとしたら、エラーが出たので以下を参考に直そうとしたら今度は掲題のエラーが発生。 www.nemotos.net 掲題のエラーメッセージの全文は以下。 E: Conflicting values set for o…

multiprocessing.Poolで並列処理をすると、子プロセスで例外が発生した場合エラーメッセージがでない

IT

multiprocessing.Poolでも、apply_asyncを使って子プロセスを起動している場合は子プロセスで発生した例外を親プロセスに伝えられる。詳細は以下参照。 conta.hatenablog.com 自分はmapを使っていたので同様のことができず困った。しかも、子プロセスで例外…

Object Detection APIの学習はeval_config.num_visualizationsを0にすると速くなる

AI

タイトル通りで、この対応を入れると学習時間が15時間→5時間になった。 github.com 何も考えずバリデーションデータ数と同じ値にしていたのがまずかった。。

concurrent.futuresで並列処理をすると、親プロセス終了時に「Error in atexit._run_exitfuncs OSError: handle is closed」エラー

IT

原因は以下。 子プロセスを管理しているオブジェクトはfull gcが実行されるまで生きている 親プロセスが終了すると子プロセスを管理しているオブジェクトは子プロセスに停止命令を送る その時には子プロセスはすでに終了しているので「handle is closed」が…

yieldと通常のreturnは併用できない

IT

同じ関数の中で、ifで分岐してこの場合はgeneratorとして使う、この場合は普通に値を返す、ということはできないらしい。 ja.stackoverflow.com しょうがないのでgeneratorがほしい場合とそうでない場合で共通の部分を関数に抽出して残りの部分をそれぞれ別…