模型學習python
import tensorflow as tf import numpy as np # 生成 100 個隨機的點 x_data = np.random.rand( 100 ) y_data = x_data * 0.1 + 0.2 # 構造個線性模型 b = tf.Variable( 0.) k = tf.Variable( 0.) y = k * x_data + b # 二次代價函數 loss = tf.reduce_mean( tf.square(y_data-y) ) # 定義一個梯度降低法的優化器 optimizer = tf.train.GradientDescentOptimizer( 0.2 ) # 最小化代價函數 train = optimizer.minimize( loss ) # loss 越小越接近於上邊的線性模型真實值 # 初始化變量 init = tf.global_variables_initializer() with tf.Session() as sess: sess.run( init ) for step in range( 201 ): sess.run( train ) # 每 20 次打印下 if step % 20 == 0: print( step, sess.run([b, k]) )
0 [0.09943417, 0.051246386] 20 [0.19920087, 0.10154804] 40 [0.19950311, 0.10096269] 60 [0.19969101, 0.100598656] 80 [0.19980785, 0.10037227] 100 [0.19988051, 0.100231506] 120 [0.1999257, 0.10014396] 140 [0.1999538, 0.10008951] 160 [0.19997126, 0.10005567] 180 [0.19998214, 0.100034624] 200 [0.19998889, 0.10002153]
實驗得出, k , b 的值,無論初次是多少,通過學習後 b 會接近 0.2, a 會接近 0.1dom