1. 程式人生 > >莫煩大大TensorFlow筆記(6)----結果可視化

莫煩大大TensorFlow筆記(6)----結果可視化

tput optimize 第一次 mage orf .sh class sum nbsp

#import os
#os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#添加一個神經層,定義添加神經層的函數
def add_layer(inputs, in_size, out_size, activation_function = None):
    Weights = tf.Variable(tf.random_normal([in_size,out_size])) 
    biases 
= tf.Variable(tf.zeros([1,out_size]) + 0.1) Wx_plus_b = tf.matmul(inputs,Weights) + biases #Wx_plus_b代表W*x+b #如果沒有激勵函數,即為線性關系,那麽直接輸出,不需要激勵函數(非線性函數) if activation_function is None: outputs = Wx_plus_b else: outputs = activation_function(Wx_plus_b) #把這個值傳進去 return
outputs x_data = np.linspace(-1, 1, 300, dtype = np.float32)[:, np.newaxis] noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32) y_data = np.square(x_data) - 0.5 + noise
xs = tf.placeholder(tf.float32, [None, 1]) ys = tf.placeholder(tf.float32, [None, 1]) l1 = add_layer(xs, 1, 10, activation_function = tf.nn.relu)
#預測值;定義輸出層,輸入為l1=前一層隱藏層的輸出,輸入的層數為10=隱藏層神經元的個數,輸出的層數為1=輸出一般只有1層 prediction = add_layer(l1, 10, 1, activation_function = None) loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices = [1])) train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) #機器要學習的內容,使用優化器提升準確率,學習率為0.1<1,表示以0.1的效率來最小化誤差loss init = tf.global_variables_initializer()

sess = tf.Session() #定義Session,並使用Session來初始化步驟 sess.run(init) #繪制真實數據 fig = plt.figure() #生成一個畫框/畫布 ax = fig.add_subplot(1, 1, 1) #將畫框分為1行1列,並將圖 畫在畫框的第1個位置 ax.scatter(x_data, y_data) #畫散點圖 plt.ion() #交互繪制功能,用於連續顯示;本次運行時請註釋掉這條語句,全局運行不需要註釋掉 plt.show() #顯示所繪制的圖形,但是他只顯示當前運行時的圖像,不會一直顯示多次;在實際運行當中,註釋掉上面兩條代碼,程序才會正常運行,暫時不知道為什麽。。。 for i in range(1000): #訓練1000次 sess.run(train_step, feed_dict={xs:x_data, ys:y_data}) #給placeholder餵數據,把x_data賦值給xs if i % 50 == 0: #每50步輸出一次機器學習的誤差 #print(sess.run(loss, feed_dict={xs:x_data, ys:y_data})) #可視化結果與改進 try: ax.lines.remove(lines[0]) #抹去前一條繪制的曲線,在這裏我們要先抹去再繪制,防止第一次運行時報錯,我們使用try語句 except Exception: pass prediction_value = sess.run(prediction, feed_dict={xs:x_data}) #繪制預測數據 lines = ax.plot(x_data, prediction_value,r-,lw=5) #x軸數據,y軸數據,紅色的線,線的寬度為5 plt.pause(0.1) #繪制曲線的時間間隔為0.1秒

技術分享圖片

技術分享圖片

莫煩大大TensorFlow筆記(6)----結果可視化