け日記

最近はPythonでいろいろやってます

PyTorch

torchtextを使った自然言語処理タスクの前処理

PyTorch: DatasetとDataLoader (画像処理タスク編) - け日記 にてDatasetとDataLoaderの使い方を紹介しました。 今回は自然言語処理のにフォーカスし、torchtextを使った自然言語処理 (NLP) タスクの前処理について整理します。 NLPタスクの前処理 大別する…

AWS Inf1でPyTorchモデルの推論を行う

AWSの推論環境の新たな選択肢として登場したInf1インスタンスを使い、PyTorchのモデルをコンパイル・推論させてみます。 概ねチュートリアル (https://github.com/aws/aws-neuron-sdk/blob/master/docs/pytorch-neuron/tutorial-compile-infer.md) をなぞっ…

PyTorch: DatasetとDataLoader (画像処理タスク編)

引き続きPyTorchのお勉強です。 画像処理タスクの文脈でDatasetとDataLoaderの使い方を整理していきます。 DatasetとDataLoader PyTorchに限らず、ディープラーニングタスクのデータの入力については、一般的に以下の要件が挙げられます データをミニバッチ…

PyTorchのモデルをTorchScriptへ変換する

引き続きPyTorchのお勉強してます。 今回はPyTorchで計算資源を有効活用した推論を行うための仕組みの1つTorchScriptについてまとめます。 TorchScriptとは TorchScriptはPyTorchの中間表現 (intermediate representation) コードとその変換機構です。 主な…

PyTorchでネットワークを実装する

引き続きPyTorchのお勉強中です。 前々回はテンソル、前回は誤差逆伝播について見ていきましたが、今回はtorch.nnのモジュールを中心にネットワークの作り方について整理していきます。 前回より少し難しくして、2次関数 (w=4.5, b=7.0, εは誤差) を例にして…

PyTorchは誤差逆伝播とパラメータ更新をどうやって行っているのか?

引き続きお仕事でPyTorchを使った開発を行っているのですが、これまでKerasで高度にラッピングされた学習フレームワークしか経験が無かったので、お作法的なところで躓くこと・疑問に思うことがよくありました。 loss.backward()で計算グラフを伝って誤差逆…

PyTorchのTensorはどうやってデータを持っているのか?

お仕事でPyTorchを扱っているのですが、以下のような疑問がふつふつと湧いてきましたので、Tensorのデータが実際にはどうやって保持・管理されているのかを調べて整理しました。 image_tensor = minibatch_tensor[i, :, :, :]はメモリコピーが発生するのか?…

PyTorchでパラメータ数をカウントする

PyTorchのモデルのパラメータ数をカウントする方法です。2パターンあります。 1. Moduleのparametersメソッドを合計する Module.parametersメソッドで各層のパラメータがtensorで取得できますので、numelで要素数を合計していくことでパラメータ数を計算でき…