FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

ゼロから作るDeep Learning ③ のPython実装をRubyで作り直してみる(Ruby + Numpyを試行2)

ゼロから作るDeep Learning ❸ ―フレームワーク編

ゼロから作るDeep Learning ❸ ―フレームワーク編

  • 作者:斎藤 康毅
  • 発売日: 2020/04/20
  • メディア: 単行本(ソフトカバー)

Rubyで作るDeZero、ステップ24まで進んだのだがかなり厳しい。Numpyを使う方法にだいぶ慣れてきたので、いっそのこと実装をすべてRubyとNumpyのコンビネーションに移すことにした。そのために最初から再実装をはじめ、おおよそ2時間でステップ24まで進んだ。

Numpyをサポートするためには、いくつかの配慮を行いながら実装を進める。

require 'numpy'
np = Numpy
class Exp < Function
  def forward(x)
    np = Numpy
    y = np.exp(x)
    return y
  end
...

npを使う前にインポートしておかなければならいようだ。常にnp = Numpyが必要だ。

全ての章を見直して、Numpyの実装に対応させた。

begin
  x = Variable.new(np.array(3.0))
  y = add(x, x)
  y.backward()
  puts(x.grad)

  x = Variable.new(np.array(3.0))
  y = add(add(x, x),x)
  y.backward()
  puts(x.grad)
end
2.0
3.0