Red Chainer 0.2.0をリリースしました
今回は次のような機能をリリースしました🎉
を行いました
Tanh
TanhはHyperbolic Tangentとも言い次の式で表されます
irb(main):008:0> x = Numo::DFloat.new(3).seq(-1, 2) => Numo::DFloat#shape=[3] [-1, 1, 3] irb(main):009:0> Chainer::Functions::Activation::Tanh.tanh(x).data => Numo::DFloat#shape=[3] [-0.761594, 0.761594, 0.995055]
LeakyReLU
LeakyReLUはxが0以上の時はReLUの時と同じくxを返します
xが0よりも小さいときが挙動としては異なり、ReLUが0なのに対してLeakyReLUはαという傾斜をxにかけます
irb(main):010:0> x = Numo::DFloat[[-1, 0], [2, -3], [-2, 1]] => Numo::DFloat#shape=[3,2] [[-1, 0], [2, -3], [-2, 1]] # 傾斜を0.2にする irb(main):011:0> Chainer::Functions::Activation::LeakyReLU.leaky_relu(x, slope:0.2).data => Numo::DFloat#shape=[3,2] [[-0.2, 0], [2, -0.6], [-0.4, 1]]
Snapshotのサポート
これは文字通りSnapshotですw
例えば次のようにMNISTのサンプルを動かしているとします
$ bundle exec ruby examples/mnist.rb -f 1 epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time 1 0.823217 0.734533 10.3773 2 0.342721 0.90125 20.8727 3 0.295657 0.914817 31.5943 4 0.271687 0.922067 42.1609 5 0.254289 0.92665 53.1804 6 0.240501 0.930533 63.5396
ただ途中でプロセスがおちてしまったなんてことがあると思います
今までは一からだったのですが、snapshotをとることで途中から再開することが出来ます。
MNISTのサンプルでは-f
でintegerを渡すことで何epochごとにsnapshotをとるか指定できます
snapshotから再開する時はMNISTの場合は次のように途中から再開することが出来ます
$ bundle exec ruby examples/mnist.rb -f 1 -r result/snapshot_iter_3600
内部的にはMarshalで書き出し、読み出しを行なっています
最後に
今回は0.2.0のリリース内容の紹介を行いました