ゼロから作るDeep Learning ❸ ―フレームワーク編
- 作者:斎藤 康毅
- 発売日: 2020/04/20
- メディア: 単行本(ソフトカバー)
ゼロから作るDeep Learning ③を買った。DezeroのPython実装をRubyに移植する形で独自に勉強している。次はステップ19とステップ20。
- ステップ19:変数を使いやすくする
変数に対する変数名オプションの追加、いくつかのサポート関数の追加を行う。ほとんどのNumPy関連のサポート関数についてはRubyには存在しないので省略。いくつか便利そうな関数があったのでサポート関数に追加。
class Variable: ... def len @data.size end def to_s if @data == nil then return 'variable(None)' end return 'variable(' + @data.to_s + ')' end ...
.to_s
を再定義した。これでputs
が使いやすくなる。
x = Variable.new([1, 2, 3]) puts x x = Variable.new(nil) puts x x = Variable.new([[1, 2, 3], [4, 5, 6]]) puts x
variable([1, 2, 3]) variable(None) variable([[1, 2, 3], [4, 5, 6]])
もう一つの改造は演算子のオーバーロードだ。Pythonでも演算子のオーバーロードでき、Rubyでも演算子のオーバーロードできる。
class Variable ... def *(other) return mul(self, other) end def +(other) return add(self, other) end end
上記の実装で以下のような接続が可能になる。
a = Variable.new([3.0]) b = Variable.new([2.0]) c = Variable.new([5.0]) y = a + b * c puts y
variable([13.0])