日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TensorFlow机器学习实战指南之第一章

發(fā)布時間:2024/4/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow机器学习实战指南之第一章 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、TensorFlow算法的一般流程

1.導(dǎo)入/生成樣本數(shù)據(jù)集

2.轉(zhuǎn)換和歸一化數(shù)據(jù):一般來講,輸入樣本數(shù)據(jù)集并不符合TensorFlow期望的形狀,所以需要轉(zhuǎn)換數(shù)據(jù)格式以滿足TensorFlow。

當(dāng)數(shù)據(jù)集的維度或者類型不符合所用機(jī)器學(xué)習(xí)算法的要求時,需要在使用前進(jìn)行數(shù)據(jù)轉(zhuǎn)換。大部分機(jī)器學(xué)習(xí)算法期待的輸入樣本數(shù)據(jù)是歸一化的數(shù)據(jù)。

TensorFlow具有內(nèi)建函數(shù)來歸一化數(shù)據(jù),如下:

data = tf.nn.batch_norm_with_global_normalization()

3.劃分樣本數(shù)據(jù)集為訓(xùn)練樣本集、測試樣本集和驗證樣本集:一般要求機(jī)器學(xué)習(xí)算法的訓(xùn)練樣本集和測
試樣本集是不同的數(shù)據(jù)集。另外,許多機(jī)器學(xué)習(xí)算法要求超參數(shù)調(diào)優(yōu),所以需要驗證樣本集來決定最優(yōu)的超
參數(shù)。

4.設(shè)置機(jī)器學(xué)習(xí)參數(shù)(超參數(shù)):機(jī)器學(xué)習(xí)經(jīng)常要有一系列的常量參數(shù)。例如,迭代次數(shù)、學(xué)習(xí)率,或

者其他固定參數(shù)。約定俗成的習(xí)慣是一次性初始化所有的機(jī)器學(xué)習(xí)參數(shù),讀者經(jīng)常看到的形式如下:

?

5.初始化變量和占位符:在求解最優(yōu)化過程中(最小化損失函數(shù)),TensorFlow通過占位符獲取數(shù)據(jù),
并調(diào)整變量和權(quán)重/偏差。TensorFlow指定數(shù)據(jù)大小和數(shù)據(jù)類型初始化變量和占位符。使用方式如下:

6.定義模型結(jié)構(gòu):在獲取樣本數(shù)據(jù)集、初始化變量和占位符后,開始定義機(jī)器學(xué)習(xí)模型。TensorFlow通
過選擇操作、變量和占位符的值來構(gòu)建計算圖。這里給出簡單的線性模型:

?

7.聲明損失函數(shù):定義完模型后,需要聲明損失函數(shù)來評估輸出結(jié)果。損失函數(shù)能說明預(yù)測值與實際值
的差距:

8.初始化模型和訓(xùn)練模型:TensorFlow創(chuàng)建計算圖實例,通過占位符賦值,維護(hù)變量的狀態(tài)信息。下面
是初始化計算圖的一種方式:

9.評估機(jī)器學(xué)習(xí)模型:一旦構(gòu)建計算圖,并訓(xùn)練機(jī)器學(xué)習(xí)模型后,需要尋找某種標(biāo)準(zhǔn)來評估機(jī)器學(xué)習(xí)模
型對新樣本數(shù)據(jù)集的效果。通過對訓(xùn)練樣本集和測試樣本集的評估,可以確定機(jī)器學(xué)習(xí)模型是過擬合還是欠
擬合。

10.調(diào)優(yōu)超參數(shù):大部分情況下,機(jī)器學(xué)習(xí)者需要基于模型效果來回調(diào)整一些超參數(shù)。通過調(diào)整不同的
超參數(shù)來重復(fù)訓(xùn)練模型,并用驗證樣本集來評估機(jī)器學(xué)習(xí)模型。

11.發(fā)布/預(yù)測結(jié)果:所有機(jī)器學(xué)習(xí)模型一旦訓(xùn)練好,最后都用來預(yù)測新的、未知的數(shù)據(jù)。

二、聲明張量?

TensorFlow的主要數(shù)據(jù)結(jié)構(gòu)是張量,它用張量來操作計算圖。在TensorFlow里可以把變量或者占位符聲
明為張量。首先,需要知道如何創(chuàng)建張量。

創(chuàng)建一個張量,聲明其為一個變量。TensorFlow在計算圖中可以創(chuàng)建多個圖結(jié)構(gòu)。這里需要指出,在
TensorFlow中創(chuàng)建一個張量,并不會立即在計算圖中增加什么。只有把張量賦值給一個變量或者占位符,
TensorFlow才會把此張量增加到計算圖。

這里將介紹在TensorFlow中創(chuàng)建張量的主要方法:

1.固定張量

·創(chuàng)建指定維度的零張量。使用方式如下:

·創(chuàng)建指定維度的單位張量。使用方式如下:

·創(chuàng)建指定維度的常數(shù)填充的張量。使用方式如下:

·用已知常數(shù)張量創(chuàng)建一個張量。使用方式如下:

2.相似形狀的張量

·新建一個與給定的tensor類型大小一致的tensor,其所有元素為0或者1,使用方式如下:

3.序列張量

·TensorFlow可以創(chuàng)建指定間隔的張量。下面的函數(shù)的輸出跟range()函數(shù)和numpy的linspace()函數(shù)
的輸出相似:

·返回的張量是[0.0,0.5,1.0]序列。注意,上面的函數(shù)結(jié)果中最后一個值是stop值。另外一個rang()
函數(shù)的使用方式如下:

·返回的張量是[6,9,12]。注意,這個函數(shù)結(jié)果不包括limit值。

4.隨機(jī)張量

·下面的tf.random_uniform()函數(shù)生成均勻分布的隨機(jī)數(shù)

?

·tf.random_normal()函數(shù)生成正態(tài)分布的隨機(jī)數(shù):

·tf.truncated_normal()函數(shù)生成帶有指定邊界的正態(tài)分布的隨機(jī)數(shù),其正態(tài)分布的隨機(jī)數(shù)位于指定均
值(期望)到兩個標(biāo)準(zhǔn)差之間的區(qū)間:

·張量/數(shù)組的隨機(jī)化。tf.random_shuffle()和tf,random_crop()可以實現(xiàn)此功能:

·張量的隨機(jī)剪裁。tf.random_crop()可以實現(xiàn)對張量指定大小的隨機(jī)剪裁。在本書的后面部分,會對
具有3通道顏色的圖像(height,width,3)進(jìn)行隨機(jī)剪裁。為了固定剪裁結(jié)果的一個維度,需要在相應(yīng)的維
度上賦其最大值:

?

?一旦創(chuàng)建好張量,就可以通過tf.Variable()函數(shù)封裝張量來作為變量。

注:

創(chuàng)建張量并不一定得用TensorFlow內(nèi)建函數(shù),可以使用tf.convert_to_tensor()函數(shù)將任意numpy數(shù)組轉(zhuǎn)
換為Python列表,或者將常量轉(zhuǎn)換為一個張量。注意,tf.convert_to_tensor()函數(shù)也可以接受張量作為輸
入。

三、占位符和變量

使用TensorFlow計算圖的關(guān)鍵工具是占位符和變量,也請讀者務(wù)必理解兩者的區(qū)別,以及什么地方該用
誰。

使用數(shù)據(jù)的關(guān)鍵點之一是搞清楚它是占位符還是變量。變量是TensorFlow機(jī)器學(xué)習(xí)算法的參數(shù)
TensorFlow維護(hù)(調(diào)整)這些變量的狀態(tài)來優(yōu)化機(jī)器學(xué)習(xí)算法。占位符是TensorFlow對象,用于表示輸入輸
出數(shù)據(jù)的格式,允許傳入指定類型和形狀的數(shù)據(jù),并依賴計算圖的計算結(jié)果,比如,期望的計算結(jié)果。

?

在TensorFlow中,tf.Variable()函數(shù)創(chuàng)建變量,過程是輸入一個張量,返回一個變量。聲明變量后需要
初始化變量。下面是創(chuàng)建變量并初始化的例子:

占位符僅僅聲明數(shù)據(jù)位置,用于傳入數(shù)據(jù)到計算圖。占位符通過會話的feed_dict參數(shù)獲取數(shù)據(jù)。在計算
圖中使用占位符時,必須在其上執(zhí)行至少一個操作。在TensorFlow中,初始化計算圖,聲明一個占位符x,
定義y為x的identity操作。identity操作返回占位符傳入的數(shù)據(jù)本身。結(jié)果圖將在下節(jié)展示,代碼如下:

?

四、矩陣的常用操作

In?[3]:

import tensorflow as tf import numpy as np In?[4]: sess = tf.Session() identity_matrix = tf.diag([1.0, 1.0, 1.0]) # 對角陣 print(sess.run(identity_matrix)) [[1. 0. 0.][0. 1. 0.][0. 0. 1.]] In?[5]: A = tf.truncated_normal([2, 3]) print(sess.run(A)) [[-0.5786329 1.4652022 0.5517408 ][-0.98360574 0.66149354 -0.8040531 ]] In?[6]: B = tf.fill([2, 3], 5.0) print(sess.run(B)) [[5. 5. 5.][5. 5. 5.]] In?[7]: C = tf.random_uniform([3, 2]) print(sess.run(C)) [[0.9898286 0.8746687 ][0.8308246 0.46435404][0.66066265 0.15331614]] In?[8]: # Create matrix from np array D = tf.convert_to_tensor(np.array([[1., 2., 3.], [-3., -7., -1.], [0., 5., -2.]])) print(sess.run(D)) [[ 1. 2. 3.][-3. -7. -1.][ 0. 5. -2.]] In?[9]: # Matrix addition/subtraction print(sess.run(A + B)) [[4.0406456 4.6771774 5.870362 ][5.1844687 4.695226 5.8468685]] In?[10]: # Matrix Multiplication print(sess.run(tf.matmul(B, identity_matrix))) [[5. 5. 5.][5. 5. 5.]] In?[11]: # Matrix Transpose 矩陣轉(zhuǎn)置 print(sess.run(tf.transpose(C))) # Again, new random variables [[0.2655393 0.23314857 0.6464461 ][0.5616721 0.39336514 0.9367839 ]] In?[12]: # Matrix Determinant 行列式 print(sess.run(tf.matrix_determinant(D))) -37.99999999999999 In?[13]: # Matrix Inverse 逆矩陣 print(sess.run(tf.matrix_inverse(D))) [[-0.5 -0.5 -0.5 ][ 0.15789474 0.05263158 0.21052632][ 0.39473684 0.13157895 0.02631579]] In?[14]: # Cholesky Decomposition 矩陣分解 print(sess.run(tf.cholesky(identity_matrix))) [[1. 0. 0.][0. 1. 0.][0. 0. 1.]] In?[15]: # Eigenvalues and Eigenvectors 矩陣特征值和特征向量 print(sess.run(tf.self_adjoint_eig(D))) (array([-10.65907521, -0.22750691, 2.88658212]), array([[ 0.21749542, 0.63250104, -0.74339638],[ 0.84526515, 0.2587998 , 0.46749277],[-0.4880805 , 0.73004459, 0.47834331]])) In?[16]: # div() vs truediv() vs floordiv() print(sess.run(tf.div(3, 4))) # 直接向下取整 0 In?[17]: print(sess.run(tf.truediv(3, 4))) # 小數(shù)表示 0.75 In?[18]: print(sess.run(tf.floordiv(3.0, 4.0))) # 向下取整 0.0 In?[19]: # Mod function print(sess.run(tf.mod(22.0, 5.0))) # 取余 2.0 In?[20]: # Trig functions 三角函數(shù),sin(π) print(sess.run(tf.sin(3.1416))) -7.2399803e-06 In?[21]: print(sess.run(tf.cos(3.1416))) # 三角函數(shù),cos(π) -1.0 In?[22]: # Tangemt print(sess.run(tf.div(tf.sin(3.1416 / 4.), tf.cos(3.1416 / 4.)))) 1.0000036

轉(zhuǎn)載于:https://www.cnblogs.com/xinmomoyan/p/10777776.html

總結(jié)

以上是生活随笔為你收集整理的TensorFlow机器学习实战指南之第一章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。