TensorFlowで2次曲線を予測してみる

チュートリアルでは TensorFlow で 1 次関数を予測していたので、試しに 2 次関数もできるのかやってみました。

スポンサーリンク

1次関数

Get Started の Introduction には、テキトーに与えられた値から直線を推測するモデルが載っています。

$$y=0.1x+0.3$$

このチュートリアルでは、最終的にこの式の傾きと切片を求めています。

ソースコード

TensorFlow のページから引っ張ってきて英語のコメントをそれっぽく書き直しただけです。

201 回の繰り返しの中で、20 回実行するごとに Weight と bias の値を表示します。

実行結果

 

step が増えるにつれて値が近くなっていくのが分かります。

200step 終えたところで、W = 0.09999989 ≒ 0.1, b = 0.30000007 ≒ 0.3 となり、かなり近い値に収束しています。

2次関数

1 次関数がそれなりに求められることが分かったので、次は 2 次関数にしてみます。

求める 2 次関数の式は、次のように定めました。

$$y=0.4x^2+0.3x+0.1$$

ソースコード

内容は 1 次式のものを 2 次式にしただけです。

繰り返し回数を 5001 回まで増やしました。

実行結果

2 次関数になると 200step では全然学習できていないので、ソースコードでは 5001 としていますが、4500step まで行いました。

 

字が細かくなってしまいましたが、W2 = 0.39999443 ≒ 0.4, W1 = 0.300006 ≒ 0.3, b = 0.09999884 ≒ 0.1 となり、かなり近い値が求められています。

まとめ

ある関数に従っている座標の値を与えることで、学習を用いて係数を求めることができる。ちょっとモンテカルロ法を思い出しますね。

スポンサーリンク

コメントを残す