Helve’s Python memo

Pythonを使った機械学習やデータ分析の備忘録

PyTorchの自動微分で勾配を求める

f:id:Helve:20191117151553p:plain

ディープラーニングのライブラリの1つであるPyTorchには、自動微分の機能が実装されている。
自動微分を使うと、関数の勾配ベクトルを自動的に求めることができるので、勾配を使った最適化手法を容易に行える。
本記事では、PyTorchのtensorクラスについて簡単に解説し、1階微分、2階微分の求め方ついてまとめる。

※本記事はChainerに関する以下の記事をPyTorch向けに書き直したものである。
Chainerの自動微分で勾配を求める - Helve’s Python memo


目次

  • はじめに
  • 環境
  • tensorクラス
  • 1階微分の求め方
  • 中間変数の勾配を求める場合
  • 2階微分の求め方
  • 参考リンク
続きを読む

KerasのステートフルRNNで学習を高速化する

KerasのステートフルRNNおよび、Kerasのコードについて解説する。
ステートフルRNNは、学習バッチ間で内部状態を保持するため、学習を高速化できる。

目次

  • はじめに
  • 環境
  • ステートフルRNN
  • KerasのステートフルRNN
  • 対象データ
  • モデルの定義・学習
    • ステートレス
    • ステートフル
  • まとめ
  • 参考
続きを読む

Chainerの自動微分で勾配を求める(補足)

ChainerのVariableクラスを使った自動微分に関する記事である。
前回記事の補足として、backwardメソッドを使用するときの注意点と、chainer.grad関数を使った自動微分の計算について述べる。

backwardメソッドを使用する度に勾配が加算されるため、2回以上使用するときは、勾配を除去する必要がある。
また、chainer.grad関数を使うと、任意のVariable変数間の勾配を計算できる。

前回記事:
Chainerの自動微分で勾配を求める - Helve’s Python memo


目次

  • 環境
  • backwardメソッドの注意点
  • chainer.gradによる勾配計算
  • 参考リンク
続きを読む

Chainerの自動微分で勾配を求める

ディープラーニングのライブラリの1つであるChainerには、自動微分の機能が実装されている。
自動微分を使うと、関数の勾配ベクトルを自動的に求めることができるので、勾配を使った最適化手法を容易に行える。
本記事では、ChainerのVariableクラスについて簡単に解説し、1階微分、2階微分の求め方についてまとめる。

目次

  • はじめに
  • 環境
  • Variableクラス
  • 1階微分の求め方
  • 中間変数の勾配を求める場合
  • 2階微分の求め方
  • 参考リンク
続きを読む

直線探索を使った最急降下法をPythonで実装

「工学基礎 最適化とその応用」を読んだので、最急降下法と直線探索への理解を深めるため、Pythonで実装した。
本記事では、最急降下法と、Armijo条件と呼ばれる直線探索手法について簡単に解説する。

目次

続きを読む
※Adblockが有効の場合やモバイル版ページでは、シェアボタンをクリックできません