Edited at

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


Recipe 17

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

ここで、xはこれまでのx_vals的な、入力値を示すものではない



入力値を示すのはAで、xは直線の傾きとy切片を示す

※2 [訳注]

... 計画行列Aの1行目(すべて1)...

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

5. 解から係数()を出力する...

...
print('y'_intercept: ' + str(y_intercept))

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


Recipe 18

行列Aを分解し、分解した行列で行列演算を行う

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

「y = L' * x と置いて」、とはじめに書いて欲しかったです



ここで、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 を使うのはなぜ?



と思ったが、 代わりに b_tensor を使っても問題なかった


Recipe 19

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

正しくは、xが花びらの幅、yががく片の長さでは(誤植?)



あと、コード中でpetalのスペルミスが何箇所かあった

plt.plot(loss_vec, 'k-')

引数少なくね?と思ったけど問題なかった



loss_vecの中身がyでインデックスがxになるよう


Recipe 20

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

あとplt.ylabelが変だった


Recipe 21

なるほど、xにも誤差があるだろっ、って時はデミング回帰というのをするのか



ただトレーニングの回数は多いし、あとしばしば学習が事故る

うまくいったやつと事故ってそうなやつ


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

my_opt の opt (== optimizer) : 最適化関数

tf.subtract の subtract : 減算

indices : indexの複数形

demming_numerator の numerator : 分子

demming_denominator の denominator : 分母