機械学習
python3
TensorFlow

TensorFlow機械学習クックブック第3章で個人的につまったところとか

More than 1 year has passed since last update.

Recipe 17

線形回帰は、 A * x = b といった...

ここで、xはこれまでのx_vals的な、入力値を示すものではない :corn:
入力値を示すのはAで、xは直線の傾きとy切片を示す

tf3-2.png

※2 [訳注]
... 計画行列Aの1行目(すべて1)...

すべて1なのは1列目でしょ、? :spaghetti:

5. 解から係数()を出力する...
...
print('y'_intercept: ' + str(y_intercept))

「'」が多いくね(誤植?) :cookie:

Recipe 18

行列Aを分解し、分解した行列で行列演算を行う
...
ここでは連立方程式 A * x = b を L * L' * x = b として解いてみよう。
まず L * y = b を解き、次に L' * x = y を解くことで、係数行列xが得られる

「y = L' * x と置いて」、とはじめに書いて欲しかったです :oden:
ここで、Aをコレスキー分解するのかと思ったが、本文中のコードでは A.T*A をコレスキー分解している(.Tは転置の意味)
というか、コレスキー分解はエルミート行列にたいしてすることだから、Aはコレスキー分解できない(たぶん)

つまりここで解くのは、上の連立方程式にあらかじめA.Tを左から掛けた方程式で、

ここでは、連立方程式 A.T * A * x = A.T * b を L * L' * x = A.T * b として解いてみよう。
まず L * y = A.T * b を解き、次に L' * x = y を解くことで、係数行列xが得られる

と書いたらしっくりする(自分的には)

2. 次に正方行列のコレスキー分解を実行する。
...
# L * y = t(A) * b を解く
tA_b = tf.matmul(tf.transpose(A_tensor), b)

ここで b_tensor ではなく b を使うのはなぜ? :fried_shrimp:
と思ったが、 代わりに b_tensor を使っても問題なかった

Recipe 19

具体的には、x_valsが花びらの幅、y_valsが花びらの長さで...

正しくは、xが花びらの幅、yががく片の長さでは(誤植?) :cherries:
あと、コード中でpetalのスペルミスが何箇所かあった

plt.plot(loss_vec, 'k-')

引数少なくね?と思ったけど問題なかった :candy:
loss_vecの中身がyでインデックスがxになるよう

Recipe 20

図3-5のところは乱数でけっこう形がかわるみたい

tf3-5a.png

tf3-5b.png

あとplt.ylabelが変だった

Recipe 21

なるほど、xにも誤差があるだろっ、って時はデミング回帰というのをするのか :birthday:
ただトレーニングの回数は多いし、あとしばしば学習が事故る
うまくいったやつと事故ってそうなやつ

Screenshot from 2017-08-21 22-41-00.png

Screenshot from 2017-08-21 22-39-35.png

難しい英語(うp主は英弱)

my_opt の opt (== optimizer) : 最適化関数
tf.subtract の subtract : 減算
indices : indexの複数形
demming_numerator の numerator : 分子
demming_denominator の denominator : 分母