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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tensorflow实践 基本原理学习和框架使用

發布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tensorflow实践 基本原理学习和框架使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Tensorflow 是google大腦小組的工程師們開發的用于機器學習和深度神經網絡方面的研究,它通過一個數據流圖來進行計算。[本文是對Tensorflow社區資料進行學習和實踐,其中文社區還是很好的學習資源]


??????? 一、基本概念:

??????? 1、 數據流程圖? data flow graphs

???????? 它的數據流圖如下圖所示(來源于網絡):

???????? 2、 節點【nodes】: 圖中的各種形狀的方塊,表示的是某種數學操作【op】

???????? 3、? 線【edges】: 表示節點間相互聯系的多維數據數組,在tensorflow中,稱為 張量【tensor】。個人理解為數學中的向量矩陣如:

??????????????? 三個元素的一維向量? [ 1, 2, 3 ],?? 2x2 的二維向量? [ [ 1, 1],[1, 1 ] ]

???????? 4、? 重塑節點【Reshape】:前面說了 節點表示計算, 所以reshape是一個計算節點,用于進行矩陣的行數、列數、維度的調整。經常用這個節點進行降低維度計算

???????? 5、? 激活函數層【ReLULayer】:實現了對輸入數據的非負處理,將小于零的數據進行了截斷。

???????? 6、? 邏輯層【Logit layer】: 實現邏輯回歸,實現分類器計算

???????? 7、? 計算梯度【Gradients】:計算梯度

???????? 8、? 梯度下降訓練【SGD Trains】:進行梯度下降訓練優化

??? 二、tensorflow的基本使用

??????? 一般來說,tensorflow使用圖(graph)來表示計算任務,在會話 (Session) 的上下文 (context) 中執行圖 ;使用tensor 表示數據,變量 (Variable)記錄計算狀態;使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數據;

??? import tensorflow as tf
??? ?
??? # 創建一個常量 op, 產生一個 1x2 矩陣. 這個 op 被作為一個節點
??? # 加到默認圖中.
??? #
??? # 構造器的返回值代表該常量 op 的返回值.
??? matrix1 = tf.constant([[3., 3.]])
??? ?
??? # 創建另外一個常量 op, 產生一個 2x1 矩陣.
??? matrix2 = tf.constant([[2.],[2.]])
??? ?
??? # 創建一個矩陣乘法 matmul op , 把 'matrix1' 和 'matrix2' 作為輸入.
??? # 返回值 'product' 代表矩陣乘法的結果.
??? product = tf.matmul(matrix1, matrix2)
??? ?
??? #Session 對象在使用完后需要關閉以釋放資源. 除了顯式調用 close 外, 也可以使用 "with" 代碼塊 來自動完成關閉動作.
??? #注意下面第二句和第三局的縮進
??? with tf.Session() as sess:
????? result = sess.run([product])
????? print result


下面看看執行結果

?? 1、變量

變量的使用,需要通過初始化加入到圖中

??? import tensorflow as tf
??? ?
??? # 創建一個變量, 初始化為標量 0.
??? count = tf.Variable(0, name="counter")
??? ?
??? # 創建一個 op, 其作用是使 count 增加 1
??? one = tf.constant(1)
??? new_value = tf.add(count, one)
??? update = tf.assign(count, new_value)
??? ?
??? # 啟動圖后, 變量必須先經過初始化,
??? # 首先必須增加一個`初始化` op 到圖中.
??? init_op = tf.initialize_all_variables()
??? ?
??? # 啟動圖, 運行 op
??? with tf.Session() as sess:
????? # 運行 'init' op
????? result = sess.run(init_op)
????? print sess.run(count)
????? # 運行 op, 更新count值
????? sess.run(update)
????? print sess.run(count)


執行結果如下


之所以會多打印一個1,是因為 tf.assign( oldValue, newValue) 函數會打印

??? 2) Fetch? 拿取、獲取

可以一次傳入多個tensor 獲取結果

??? import tensorflow as tf
??? ?
??? #定義兩個常量
??? x = tf.constant(3)
??? y = tf.constant(4)
??? ?
??? # 創建3個 op,計算x平方和y平方和
??? xx = tf.mul(x, x)
??? yy = tf.mul(y, y)
??? zz = tf.add(xx, yy)
??? ?
??? ?
??? # 啟動圖, 運行 op
??? with tf.Session() as sess:
????? result = sess.run([xx, yy, zz])
????? print result


?執行結果 不因為 sess.run([xx,yy,zz]) 中間的tensor 順序而改變結果


???? 3) feed

???? tensorflow提供了占位符和feed填入的機制,對于計算中的參數(預先用占位符定義),通過feed_dict的方式進行代入實際計算值的方法?? ?

??? import tensorflow as tf
??? ?
??? #定義兩個常量
??? x = tf.placeholder(tf.float32)
??? y = tf.placeholder(tf.float32)
??? ?
??? # 創建3個 op,計算x平方和y平方和
??? xx = tf.mul(x, x)
??? yy = tf.mul(y, y)
??? zz = tf.add(xx, yy)
??? ?
??? ?
??? # 啟動圖, 運行 op
??? with tf.Session() as sess:
????? result = sess.run([xx, yy, zz], feed_dict={x:[3.], y:[4.]} )
????? print result


?計算結果如下:

---------------------
原文:https://blog.csdn.net/csolo/article/details/78788631

總結

以上是生活随笔為你收集整理的Tensorflow实践 基本原理学习和框架使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。