11.
機械学習の例例:分類学習のアルゴリズム
l ⽬目的関数をパラメータwで微分した値(勾配)
を計算する⽅方法を⽤用意する
l wを勾配の⽅方向に少しだけ動かす、を繰り返す
l 実際は更更新⽅方向の取り⽅方に⼯工夫が他数ある
11
initialize w
until converge:
w := w - η d/dw L(x, y; w)
最急降降下法
19.
Chainerの特徴:define-by-run
l 前向き計算をしながら毎回グラフを構築する
l グラフが毎データで違っても良良い
l RNNはfor⽂文でループをそのまま書けば良良い
l 特殊なノードは必要ない
19
x
y
_
**
22
*
_
_
*
_
_
+
_
z
_
+
_
x
y
_
**
22
*
_
_
*
_
_
+
_
z
_
+
_
(x1, y1)
(x2, y2)
20.
擬似コードで⽐比較する
define-and-run
# 構築
x = Variable(‘x’)
y = Variable(‘y’)
z = x + 2 * y
# 評価
for xi, yi in data:
eval(z, x=xi, y=yi))
define-by-run
# 構築と評価が同時
for xi, yi in data:
x = Variable(xi)
y = Variable(yi)
z = x + 2 * y
20
データを⾒見見ながら
違う処理理をしてもよい
21.
計算グラフで⽐比較する
21
s = 0
for x in [1, 2, 3]:
s += x
s
x
+
x
+
x
+ ss
x
+ s
define-and-runで
ループを作る
define-by-runでは
すべて展開される
33.
CuPyとNumPyの⽐比較
import numpy
x = numpy.array([1,2,3], numpy.float32)
y = x * x
s = numpy.sum(y)
print(s)
import cupy
x = cupy.array([1,2,3], cupy.float32)
y = x * x
s = cupy.sum(y)
print(s)
33
34.
CuPyはどのくらい早いの?
l 状況しだいですが、最⼤大数⼗十倍程度度速くなります
def test(xp):
a = xp.arange(1000000).reshape(1000, -1)
return a.T * 2
test(numpy)
t1 = datetime.datetime.now()
for i in range(1000):
test(numpy)
t2 = datetime.datetime.now()
print(t2 -t1)
test(cupy)
t1 = datetime.datetime.now()
for i in range(1000):
test(cupy)
t2 = datetime.datetime.now()
print(t2 -t1)
34
時間
[ms]
倍率率率
NumPy 2929 1.0
CuPy 585 5.0
CuPy +
Memory Pool
123 23.8
Intel Core i7-4790 @3.60GHz,
32GB, GeForce GTX 970
Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.
Be the first to comment