1. 程式人生 > >1.5神經網絡可視化顯示(matplotlib)

1.5神經網絡可視化顯示(matplotlib)

可視化 orm session 移除 and 混亂 style 操作 pri

神經網絡訓練+可視化顯示

#添加隱層的神經網絡結構+可視化顯示
import tensorflow as tf

def add_layer(inputs,in_size,out_size,activation_function=None):
    #定義權重--隨機生成inside和outsize的矩陣
    Weights=tf.Variable(tf.random_normal([in_size,out_size]))
    #不是矩陣,而是類似列表
    biaes=tf.Variable(tf.zeros([1,out_size])+0.1)
    Wx_plus_b
=tf.matmul(inputs,Weights)+biaes if activation_function is None: outputs=Wx_plus_b else: outputs=activation_function(Wx_plus_b) return outputs import numpy as np x_data=np.linspace(-1,1,300)[:,np.newaxis] #300行數據 noise=np.random.normal(0,0.05,x_data.shape) y_data=np.square(x_data)-0.5+noise
#None指定sample個數,這裏不限定--輸出屬性為1 xs=tf.placeholder(tf.float32,[None,1]) #這裏需要指定tf.float32, ys=tf.placeholder(tf.float32,[None,1]) #建造第一層layer #輸入層(1) l1=add_layer(xs,1,10,activation_function=tf.nn.relu) #隱層(10) prediction=add_layer(l1,10,1,activation_function=None) #輸出層(1) #預測prediction loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction), reduction_indices
=[1])) #平方誤差 train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss) init=tf.initialize_all_variables() sess=tf.Session() #直到執行run才執行上述操作 sess.run(init) import matplotlib.pyplot as plt fig=plt.figure() ax=fig.add_subplot(111) ax.scatter(x_data,y_data) plt.ion() #圖像會連續顯示 #plt.show()不會終止整個函數。在2.x時候使用plt.show(block=False) plt.show() for i in range(1000): #這裏假定指定所有的x_data來指定運算結果 sess.run(train_step,feed_dict={xs:x_data,ys:y_data}) if i%50: # print (sess.run(loss,feed_dict={xs:x_data,ys:y_data})) try: #忽略第一次的錯誤 ax.lines.remove(lines[0]) #在圖片中去掉lines的第1條線段,不然線會混亂 except Exception: prediction_value=sess.run(prediction,feed_dict={xs:x_data}) lines=ax.plot(x_data,prediction_value,r-,lw=5) # ax.lines.remove(lines[0]) 移動上上面,先移除第一條線 plt.pause(0.2) #每次暫停0.2s

顯示:

技術分享圖片

1.5神經網絡可視化顯示(matplotlib)