Regression)!ロジスティック回帰は、回帰とつくけど分類のアルゴリズムで、隠れ層がなく、活性化関数にシグモイド関数(2クラス分類のとき)、ソフトマックス関数(多クラス分類のとき)を使ったニューラルネットとしてモデル化できる。IrisとMNIST(Notebook参照)のデータセットで実装してみた。StandardScalerPyTorchとともにscikit-learnの関数もいろいろ活用するのでインポート。width)なので入力ユニット数は4にした。クラス数が3つ(Setosa、Versicolour、Virginica)なので出力ユニット数は3にした。)データのロードはscikit-learnのload_iris()関数で簡単にできる。クラスラベルが取得できる。クラスラベルは1-of-Kになっていないので注意!PyTorchはクラスラベルを自分で1-of-Kに変換しなくてもクラスラベルのまま扱える。)訓練データとバリデーションデータに分割。これもscikit-learnの関数を使えば簡単にできる。1.]データの各特徴量ごとに平均0、標準偏差1になるようにデータを標準化する。Irisデータでは標準化しなくても学習はできたけどやったほうが学習が安定すると思う。してみると4つの特徴量それぞれで平均が0、標準偏差が1になってるのがわかる。outロジスティック回帰モデルの定義。見た目は線形回帰のときとまったく同じ。通すのだがPyTorchはモデルには含めないでロジットをそのまま返すのが流儀のようだ。計算が含まれているため。必要なのは訓練時の損失計算のときだけで、推論時には必要ないので入れない方が効率がよいとのこと。通してわざわざ確率にしなくてもロジットのまま大小比較ができるためだ。活性化関数も含めてモデル出力は確率にしていた。ここ!なので推論のときもforwardするだけで確率で出てきた。上のForumにもあるようにPyTorchの動的グラフの特性をいかして訓練時と推論時で分けるのもよいかもね。inference次はモデルのオブジェクトを作ってlossとoptimizerを定義。含まれているのが確認できる。reduce)次はいよいよ訓練ループ!ここは前回と大体同じ。キャストする必要がある。3というラベルのカテゴリのまま渡せる最後にlossとaccのグラフ描くとこんな感じできれいに学習できているのが確認できた。AutoencoderAutoencoderの実験!MNISTで試してみよう。Network今回は畳み込みニューラルネットワーク。Perceptron今回は多層パーセプトロンでMNIST。»プロフィールid:aidiary人工知能とその関連分野に興味があります。)はてなブログをはじめよう!aidiaryさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。