python3.6 + tensorflow入門:三維點擬合平面
阿新 • • 發佈:2019-01-03
參考連結:
http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/introduction.html
程式碼:
# -*- coding: utf-8 -*- """ Created on Fri Dec 21 14:34:56 2018 @author: Administrator """ import tensorflow as tf import numpy as np # 使用 NumPy 生成假資料(phony data), 總共 100 個點. x_data = np.float32(np.random.rand(2, 100)) # 隨機輸入 y_data = np.dot([0.100, 0.200], x_data) + 0.300 # 構造一個線性模型 # b = tf.Variable(tf.zeros([1])) W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0)) y = tf.matmul(W, x_data) + b # 最小化方差 loss = tf.reduce_mean(tf.square(y - y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) # 初始化變數 init = tf.initialize_all_variables() # 啟動圖 (graph) sess = tf.Session() sess.run(init) # 擬合平面 for step in range(0, 201): sess.run(train) if step % 20 == 0: print (step, sess.run(W), sess.run(b)) # 得到最佳擬合結果 W: [[0.100 0.200]], b: [0.300]
結果:
0 [[ 0.91210413 -0.04129256]] [ 0.04484042] 20 [[ 0.28546557 0.23647967]] [ 0.19098906] 40 [[ 0.15442868 0.23037918]] [ 0.25790811] 60 [[ 0.11846238 0.21355666]] [ 0.28405273] 80 [[ 0.10667393 0.20536564]] [ 0.29399648] 100 [[ 0.10247139 0.20204933]] [ 0.29774484] 120 [[ 0.10092307 0.20077361]] [ 0.29915351] 140 [[ 0.10034581 0.20029087]] [ 0.29968235] 160 [[ 0.10012968 0.20010923]] [ 0.2998808] 180 [[ 0.10004867 0.200041 ]] [ 0.29995525] 200 [[ 0.10001829 0.20001541]] [ 0.2999832]
說明:
極客學院的程式碼是python2版的,如果使用python3以上版本,程式碼會報語法錯誤:
(1) print 語法錯誤:把要列印的內容放入()裡,即修改為 print()即可;
(2)xrange 未定義:修改為range即可;