一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - TensorFlow平臺下Python實現神經網絡

TensorFlow平臺下Python實現神經網絡

2021-01-20 00:51Jaster_wisdom Python

這篇文章主要為大家詳細介紹了TensorFlow平臺下Python實現神經網絡,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本篇文章主要通過一個簡單的例子來實現神經網絡。訓練數據是隨機產生的模擬數據集,解決二分類問題。

下面我們首先說一下,訓練神經網絡的一般過程:

1.定義神經網絡的結構和前向傳播的輸出結果

2.定義損失函數以及反向傳播優化的算法

3.生成會話(session)并且在訓練數據上反復運行反向傳播優化算法

要記住的一點是,無論神經網絡的結構如何變化,以上三個步驟是不會改變的。

完整代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import tensorflow as tf
#導入tensorflow工具包并簡稱為tf
 
from numpy.random import randomstate
#導入numpy工具包,生成模擬數據集
 
batch_size = 8
#定義訓練數據batch的大小
 
w1 = tf.variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.variable(tf.random_normal([3,1],stddev=1,seed=1))
#分別定義一二層和二三層之間的網絡參數,標準差為1,隨機產生的數保持一致
 
x = tf.placeholder(tf.float32,shape=(none,2),name='x-input')
y_ = tf.placeholder(tf.float32,shape=(none,1),name='y-input')
#輸入為兩個維度,即兩個特征,輸出為一個標簽,聲明數據類型float32,none即一個batch大小
#y_是真實的標簽
 
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
#定義神經網絡前向傳播過程
 
cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,1e-10,1.0)))
train_step = tf.train.adamoptimizer(0.001).minimize(cross_entropy)
#定義損失函數和反向傳播算法
 
rdm = randomstate(1)
dataset_size = 128
#產生128組數據
x = rdm.rand(dataset_size,2)
y = [[int(x1+x2 < 1)] for (x1,x2) in x]
#將所有x1+x2<1的樣本視為正樣本,表示為1;其余為0
 
#創建會話來運行tensorflow程序
with tf.session() as sess:
 init_op = tf.global_variables_initializer()
 #初始化變量
 sess.run(init_op)
 
 print(sess.run(w1))
 print(sess.run(w2))
 #打印出訓練網絡之前網絡參數的值
 
 steps = 5000
 #設置訓練的輪數
 for i in range(steps):
  start = (i * batch_size) % dataset_size
  end = min(start+batch_size,dataset_size)
 #每次選取batch_size個樣本進行訓練
  
  sess.run(train_step,feed_dict={x:x[start:end],y_:y[start:end]})
 #通過選取的樣本訓練神經網絡并更新參數
  
  if i%1000 == 0:
   total_cross_entropy = sess.run(cross_entropy,feed_dict={x:x,y_:y})
   print("after %d training step(s),cross entropy on all data is %g" % (i,total_cross_entropy))
 #每隔一段時間計算在所有數據上的交叉熵并輸出,隨著訓練的進行,交叉熵逐漸變小
 
 print(sess.run(w1))
 print(sess.run(w2))
 #打印出訓練之后神經網絡參數的值

運行結果如下:

TensorFlow平臺下Python實現神經網絡

結果說明:

首先是打印出訓練之前的網絡參數,也就是隨機產生的參數值,然后將訓練過程中每隔1000次的交叉熵輸出,發現交叉熵在逐漸減小,說明分類的性能在變好。最后是訓練網絡結束后網絡的參數。

分享一個圖形化神經網絡訓練過程的網站:點這里,可以自己定義網絡參數的大小,層數以及學習速率的大小,并且訓練過程會以很直觀的形式展示出來。比如:

TensorFlow平臺下Python實現神經網絡

 TensorFlow平臺下Python實現神經網絡

以上對于神經網絡訓練過程可以有一個很深刻的理解。

最后,再補充一些tensorflow相關的知識:

1.tensorflow計算模型-計算圖

       tensor表示張量,可以簡單的理解為多維數據結構;flow則體現了它的計算模型。flow翻譯過來是“流”,它直觀地表達了張量之間通過計算相互轉換的過程。tensorflow中的每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關系。

指定gpu方法,命令如下:

?
1
2
3
4
5
6
7
8
import tensorflow as tf
a = tf.constant([1.0,2.0],name=“a”)
b = tf.constant([3.0,4.0],name=“b”)
g = tf.graph()
with g.device(?/gpu:0?):
result = a + b
sess = tf.session()
sess.run(result)

2.tensorflow數據模型-張量

      張量是管理數據的形式。零階張量表示標量,第一階張量為向量,也就是一維數組,一般來說,第n階張量可以理解為一個n維數組。張量本身不存儲運算的結果,它只是得到對結果的一個引用。可以使用tf.session().run(result)語句來得到計算結果。

3.tensorflow運行模型-會話

我們使用session來執行定義好的運算。

主要有以下兩種方式,第一種會產生內存泄漏,第二種不會有這種問題。

?
1
2
3
4
5
#創建一個會話
sess = tf.session()
sess.run(…)
#關閉會話使得本次運行中使用的資源得到釋放
sess.close()

第二種方式是通過python的上下文資源管理器來使用會話。

?
1
2
with tf.session() as sess:
sess.run(…)

此種方式自動關閉和自動進行資源的釋放

4.tensorflow-神經網絡例子

使用神經網絡解決分類問題可以分為以下四個步驟:
①提取問題中實體的特征向量作為輸入。
②定義神經網絡的結構,并定義如何從神經網絡的輸入得到輸出。這個過程就是神經網絡的前向傳播算法。
③通過訓練數據來調整神經網絡中參數的設置,這就是訓練網絡的過程。
④使用訓練好的神經網絡來預測未知的數據  

在tensorflow中聲明一個2*3的矩陣變量的方法:

weight = tf.variable(tf.random_normal([2,3],stddev=2))

 即表示為方差為0、標準差為2的正態分布

在tensorflow中,一個變量的值在被使用之前,這個變量的初始化過程需要被明確調用。一下子初始化所有的變量

sess = tf.session()
init_op = tf.initialize_all_variables()

或者換成init_op = tf.global_variables_initializer()也可

sess.run(init_op)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/Jaster_wisdom/article/details/78018653

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩欧美中文字幕一区 | 校园春色偷拍自拍 | t66y地址一地址二地址三 | 国产人妖xxxxx免费看 | 国产一区二区精品久久 | 青青青青在线视频 | 国产91在线九色 | 粉嫩尤物在线456 | 欧美人与物videos另类3d | 亚洲乱码一二三四区国产 | a级免费在线观看 | 国产成人福利免费视频 | 女bbbbxxxx视频 | 国产高清小视频 | 韩国三级年轻小的胰子完整 | 免费精品一区二区三区在线观看 | 国自产拍在线天天更新91 | 国产清纯女高中生在线观看 | 99热久久这里只有精品6国产网 | 色老头综合网 | 欧美一级免费看 | 日日干夜夜拍 | 美日韩在线观看 | 9999热视频 | 色婷婷天天综合在线 | 亚洲日韩欧美一区二区在线 | 91久久国产综合精品 | 国内精品哆啪啪 | 男人的天堂在线观看入口 | 日本嫩模 | 88av视频在线观看 | 美女奶口隐私免费视频网站 | 日韩精品视频免费 | 欧洲男同直粗无套播放视频 | 免费一区二区视频 | 美女厕所尿尿擦逼 | 美女曰逼视频 | 国产精品九九免费视频 | 国产成人亚洲精品一区二区在线看 | 免费叼嘿视频 | 91精品国产色综合久久 |