自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TensorFlow學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)的構(gòu)建

開(kāi)發(fā) 后端 深度學(xué)習(xí)
本文帶你通過(guò)TensorFlow學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的構(gòu)建,包括建立一個(gè)神經(jīng)網(wǎng)絡(luò)添加層、訓(xùn)練一個(gè)二次函數(shù)等,并且有完整代碼。

1.建立一個(gè)神經(jīng)網(wǎng)絡(luò)添加層

輸入值、輸入的大小、輸出的大小和激勵(lì)函數(shù)

學(xué)過(guò)神經(jīng)網(wǎng)絡(luò)的人看下面這個(gè)圖就明白了,不懂的去看看我的另一篇博客(http://www.cnblogs.com/wjy-lulu/p/6547542.html) 

 

  1. def add_layer(inputs , in_size , out_size , activate = None): 
  2.     Weights = tf.Variable(tf.random_normal([in_size,out_size]))#隨機(jī)初始化 
  3.     baises  = tf.Variable(tf.zeros([1,out_size])+0.1)#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn) 
  4.     y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法 
  5.     if activate: 
  6.         y = activate(y) 
  7.     return y  

2.訓(xùn)練一個(gè)二次函數(shù) 

  1. import tensorflow as tf 
  2. import numpy as np 
  3.  
  4. def add_layer(inputs , in_size , out_size , activate = None): 
  5.     Weights = tf.Variable(tf.random_normal([in_size,out_size]))#隨機(jī)初始化 
  6.     baises  = tf.Variable(tf.zeros([1,out_size])+0.1)#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn) 
  7.     y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法 
  8.     if activate: 
  9.         y = activate(y) 
  10.     return y 
  11. if __name__ == '__main__'
  12.     x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#創(chuàng)建-1,1的300個(gè)數(shù),此時(shí)為一維矩陣,后面轉(zhuǎn)化為二維矩陣===[1,2,3]-->>[[1,2,3]] 
  13.     noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪聲是(1,300)格式,0-0.05大小 
  14.     y_data = np.square(x_data) - 0.5 + noise #帶有噪聲的拋物線(xiàn) 
  15.  
  16.     xs = tf.placeholder(tf.float32,[None,1]) #外界輸入數(shù)據(jù) 
  17.     ys = tf.placeholder(tf.float32,[None,1]) 
  18.  
  19.     l1 = add_layer(xs,1,10,activate=tf.nn.relu) 
  20.     prediction = add_layer(l1,10,1,activate=None) 
  21.  
  22.     loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#誤差 
  23.     train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#對(duì)誤差進(jìn)行梯度優(yōu)化,步伐為0.1 
  24.  
  25.     sess = tf.Session() 
  26.     sess.run( tf.global_variables_initializer()) 
  27.     for i in range(1000): 
  28.         sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#訓(xùn)練 
  29.         if i%50 == 0: 
  30.             print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))#查看誤差  

3.動(dòng)態(tài)顯示訓(xùn)練過(guò)程

顯示的步驟程序之中部分進(jìn)行說(shuō)明,其它說(shuō)明請(qǐng)看其它博客(http://www.cnblogs.com/wjy-lulu/p/7735987.html) 

  1. import tensorflow as tf 
  2. import numpy as np 
  3. import matplotlib.pyplot as plt 
  4.  
  5. def add_layer(inputs , in_size , out_size , activate = None): 
  6.     Weights = tf.Variable(tf.random_normal([in_size,out_size]))#隨機(jī)初始化 
  7.     baises  = tf.Variable(tf.zeros([1,out_size])+0.1)#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn) 
  8.     y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法 
  9.     if activate: 
  10.         y = activate(y) 
  11.     return y 
  12. if __name__ == '__main__'
  13.     x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#創(chuàng)建-1,1的300個(gè)數(shù),此時(shí)為一維矩陣,后面轉(zhuǎn)化為二維矩陣===[1,2,3]-->>[[1,2,3]] 
  14.     noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪聲是(1,300)格式,0-0.05大小 
  15.     y_data = np.square(x_data) - 0.5 + noise #帶有噪聲的拋物線(xiàn) 
  16.     fig = plt.figure('show_data')# figure("data")指定圖表名稱(chēng) 
  17.     ax = fig.add_subplot(111) 
  18.     ax.scatter(x_data,y_data) 
  19.     plt.ion() 
  20.     plt.show() 
  21.     xs = tf.placeholder(tf.float32,[None,1]) #外界輸入數(shù)據(jù) 
  22.     ys = tf.placeholder(tf.float32,[None,1]) 
  23.  
  24.     l1 = add_layer(xs,1,10,activate=tf.nn.relu) 
  25.     prediction = add_layer(l1,10,1,activate=None) 
  26.  
  27.     loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#誤差 
  28.     train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#對(duì)誤差進(jìn)行梯度優(yōu)化,步伐為0.1 
  29.  
  30.     sess = tf.Session() 
  31.     sess.run( tf.global_variables_initializer()) 
  32.     for i in range(1000): 
  33.         sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#訓(xùn)練 
  34.         if i%50 == 0: 
  35.             try: 
  36.                 ax.lines.remove(lines[0]) 
  37.             except Exception: 
  38.                 pass 
  39.             prediction_value = sess.run(prediction, feed_dict={xs: x_data}) 
  40.             lines = ax.plot(x_data,prediction_value,"r",lw = 3) 
  41.             print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))#查看誤差 
  42.             plt.pause(2) 
  43.     while True
  44.         plt.pause(0.01)   

4.TensorBoard整體結(jié)構(gòu)化顯示

 

A.利用with tf.name_scope("name")創(chuàng)建大結(jié)構(gòu)、利用函數(shù)的name="name"去創(chuàng)建小結(jié)構(gòu):tf.placeholder(tf.float32,[None,1],name="x_data")

B.利用writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)創(chuàng)建一個(gè)graph文件

C.利用TessorBoard去執(zhí)行這個(gè)文件

這里得注意--->>>首先到你存放文件的上一個(gè)目錄--->>然后再去運(yùn)行這個(gè)文件

tensorboard  --logdir=test

(被屏蔽的GIF動(dòng)圖,具體安裝操作歡迎戳“原文鏈接”哈!)

 

5.TensorBoard局部結(jié)構(gòu)化顯示  

A. tf.summary.histogram(layer_name+"Weight",Weights):直方圖顯示

     

B.  tf.summary.scalar("Loss",loss):折線(xiàn)圖顯示,loss的走向決定你的網(wǎng)絡(luò)訓(xùn)練的好壞,至關(guān)重要一點(diǎn)

C.初始化與運(yùn)行設(shè)定的圖表 

  1. merge = tf.summary.merge_all()#合并圖表2 writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)#寫(xiě)進(jìn)文件3 result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#運(yùn)行打包的圖表merge4 writer.add_summary(result,i)#寫(xiě)入文件,并且單步長(zhǎng)50  

 完整代碼及顯示效果: 

  1. import tensorflow as tf 
  2. import numpy as np 
  3. import matplotlib.pyplot as plt 
  4.  
  5. def add_layer(inputs , in_size , out_size , n_layer = 1 , activate = None): 
  6.     layer_name = "layer" + str(n_layer) 
  7.     with tf.name_scope(layer_name): 
  8.         with tf.name_scope("Weights"): 
  9.             Weights = tf.Variable(tf.random_normal([in_size,out_size]),name="W")#隨機(jī)初始化 
  10.             tf.summary.histogram(layer_name+"Weight",Weights) 
  11.         with tf.name_scope("Baises"): 
  12.             baises  = tf.Variable(tf.zeros([1,out_size])+0.1,name="B")#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn) 
  13.             tf.summary.histogram(layer_name+"Baises",baises) 
  14.         y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法 
  15.         if activate: 
  16.             y = activate(y) 
  17.         tf.summary.histogram(layer_name+"y_sum",y) 
  18.         return y 
  19. if __name__ == '__main__'
  20.     x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#創(chuàng)建-1,1的300個(gè)數(shù),此時(shí)為一維矩陣,后面轉(zhuǎn)化為二維矩陣===[1,2,3]-->>[[1,2,3]] 
  21.     noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪聲是(1,300)格式,0-0.05大小 
  22.     y_data = np.square(x_data) - 0.5 + noise #帶有噪聲的拋物線(xiàn) 
  23.     fig = plt.figure('show_data')# figure("data")指定圖表名稱(chēng) 
  24.     ax = fig.add_subplot(111) 
  25.     ax.scatter(x_data,y_data) 
  26.     plt.ion() 
  27.     plt.show() 
  28.     with tf.name_scope("inputs"): 
  29.         xs = tf.placeholder(tf.float32,[None,1],name="x_data") #外界輸入數(shù)據(jù) 
  30.         ys = tf.placeholder(tf.float32,[None,1],name="y_data"
  31.     l1 = add_layer(xs,1,10,n_layer=1,activate=tf.nn.relu) 
  32.     prediction = add_layer(l1,10,1,n_layer=2,activate=None) 
  33.     with tf.name_scope("loss"): 
  34.         loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#誤差 
  35.         tf.summary.scalar("Loss",loss) 
  36.     with tf.name_scope("train_step"): 
  37.         train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#對(duì)誤差進(jìn)行梯度優(yōu)化,步伐為0.1 
  38.  
  39.     sess = tf.Session() 
  40.     merge = tf.summary.merge_all()#合并 
  41.     writer = tf.summary.FileWriter("G:/test/",graph=sess.graph) 
  42.     sess.run( tf.global_variables_initializer()) 
  43.     for i in range(1000): 
  44.         sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#訓(xùn)練 
  45.         if i%100 == 0: 
  46.             result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#運(yùn)行打包的圖表merge 
  47.             writer.add_summary(result,i)#寫(xiě)入文件,并且單步長(zhǎng)50 
     

主要參考莫凡大大:https://morvanzhou.github.io/

可視化出現(xiàn)問(wèn)題了,參考這位大神:http://blog.csdn.net/fengying2016/article/details/54289931 

責(zé)任編輯:龐桂玉 來(lái)源: 人工智能愛(ài)好者社區(qū)
相關(guān)推薦

2018-10-18 10:27:15

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)python

2018-08-27 17:05:48

tensorflow神經(jīng)網(wǎng)絡(luò)圖像處理

2017-08-29 13:50:03

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2017-03-27 16:18:30

神經(jīng)網(wǎng)絡(luò)TensorFlow人工智能

2017-08-04 14:23:04

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)TensorFlow

2020-08-06 10:11:13

神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)算法

2017-08-28 21:31:37

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2023-05-12 14:58:50

Java神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)

2023-04-19 10:17:35

機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2024-11-05 16:19:55

2021-03-29 09:02:24

深度學(xué)習(xí)預(yù)測(cè)間隔

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2022-07-28 09:00:00

深度學(xué)習(xí)網(wǎng)絡(luò)類(lèi)型架構(gòu)

2018-05-28 13:12:49

深度學(xué)習(xí)Python神經(jīng)網(wǎng)絡(luò)

2016-12-27 14:24:57

課程筆記神經(jīng)網(wǎng)絡(luò)

2020-05-11 13:44:38

神經(jīng)網(wǎng)絡(luò)人工智能深度學(xué)習(xí)

2025-02-25 14:13:31

2017-09-11 10:00:59

Caffe2TensorFlow神經(jīng)網(wǎng)絡(luò)

2017-08-25 14:23:44

TensorFlow神經(jīng)網(wǎng)絡(luò)文本分類(lèi)

2018-04-08 11:20:43

深度學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)