TensorFlow基礎(二)實現神經網路

2022-07-19 00:12:18 字數 3257 閱讀 6908

神經網路的前向傳播演算法主要構成部分:

1.神經網路的輸入;

2.神經網路的連線結構;神經網路是由神經元(節點)構成的

3.每個神經元中的引數。

函式名稱

隨機數分布

主要引數

tf.random_normal

正態分佈

平均值、標準差、取值型別

tf.truncated_normal

正態分佈,如果隨機出來的值偏離平均值超過2個標準差,那麼這個數將被重新隨機

平均值、標準差、取值型別

tf.random_uniform

均勻分布

最小、最大取值,取值型別

tf.random_gamma

gamma分布

形狀引數alpha、尺度引數beta、取值型別

函式名稱

功能樣例

tf.zeros

產生全0的陣列

tf.zeros([2,3],int32)-->[[0,0,0],[0,0,0]]

tf.ones

產生全1的陣列

tf.ones([2,3],int32)-->[[1,1,1],[1,1,1]]

tf.fill

產生乙個全部為給定數字的陣列

tf.fill([2,3],9)-->[[9,9,9],[9,9,9]]

tf.constant

產生乙個給定值的常量

tf.constant([1,2,3])-->[1,2,3]

1

#-*- coding: utf-8 -*-23

import

tensorflow as tf

4from numpy.random import

randomstate56

#定義訓練資料batch的大小

7 batch_size = 8

8"""

9#定義神經網路的引數

10random_normal:隨機生成函式,

11隨機數分布正太分布,2x3矩陣,標準差為1

12隨機數種子序號1,種子序號相同,產生的隨機數相同

13"""

14 w1=tf.variable(tf.random_normal((2,3),stddev=1,seed=1))

15 w2=tf.variable(tf.random_normal((3,1),stddev=1,seed=1))

1617

"""18

定義placeholder作為存放輸入資料的地方

19引數:資料型別,資料維度

20"""

21 x=tf.placeholder(tf.float32, shape=(none,2), name="

x-input")

22 y_=tf.placeholder(tf.float32, shape=(none,1), name="

y-input")

2324

"""25

matmul():矩陣乘法函式

26"""

27 a=tf.matmul(x,w1)

28 y=tf.matmul(a,w2)

2930

"""31

使用sigmoid函式將y轉換為0-1之間的數值,轉換後的y代表**是正樣本的概率,1-y代表**是負樣本的概率。

32"""

33 y=tf.sigmoid(y)

3435

#定義損失函式來刻畫**值與真實值的差距

36 cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0))+(1-y)*tf.log(tf.clip_by_value(1-y,1e-10,1.0)))37#

定義學習率

38 learning_rate=0.00139#

定義反向傳播演算法優化神經網路的引數

40 train_step=tf.train.adamoptimizer(learning_rate).minimize(cross_entropy)

4142

#通過隨機數生成乙個模擬資料集

43 rdm=randomstate(1)

44 dataset_size = 128

45 x=rdm.rand(dataset_size,2)

46print

(x)47

#0表示負樣本,1表示正樣本

48 y=[[int(x1+x2<1)] for (x1,x2) in

x]49

print

(y)5051#

建立乙個會話來執行tensorflow程式

52with tf.session() as sess:

53 init_op =tf.global_variables_initializer()

54sess.run(init_op)

55print

(sess.run(w1))

56print

(sess.run(w2))

5758 steps=5000

59for i in

range(steps):60#

每次選取batch_size個樣本進行訓練61#

%取餘62

#min()函式取最小值

63 start = (i*batch_size) %dataset_size

64 end = min(start+batch_size,dataset_size)

6566

#通過選取的樣本訓練神經網路並更新引數

67 sess.run(train_step, feed_dict=)

68if i%1000 ==0:

69 total_cross_entropy=sess.run(cross_entropy,feed_dict= )

70print("

after %d training step(s), cross entropy on all data is %g

" %(i, total_cross_entropy))

71print

(sess.run(w1))

72print

(sess.run(w2))

7374

7576

TensorFlow(二)函式基礎

計算機實現的隨機數生成通常為偽隨機數生成器,為了使得具備隨機性的 最終的結果可復現,需要設定相同的種子值 np.random randn rng np.random randomstate 123 rng.randn 從均勻分布 low,high 中取樣 numpy.random uniform l...

tensorflow框架基礎之優化 二

當神經網路得到的是乙個過擬合模型時,這個模型基本是沒什麼應用價值的,因為它的泛化效能非常不好 泛化即是,機器學習模型學習到的概念在它處於學習的過程中時模型沒有遇見過的樣本時候的表現,簡單理解為 能力 對一些 異常 資料過分的估計,而忽視了問題的整體規律。為避免過擬合,常採用的方式是新增正則化項,正則...

Tensorflow 基礎概念

g v,e v operation 圖的節點 e tensor 圖的邊 g graph 圖 tensorflow tensor 多維陣列 flow graph 圖 op session回話上下文管理 variable tensor 多維資料變數 placeholder 外部傳入的引數變數 seesi...