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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

sess.run()详解

發布時間:2025/3/21 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sess.run()详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TensorFlow與我們正常的編程思維略有不同:

  • 先預定義一些操作/占位符構建graph,所有的操作op和變量都視為節點,TensorFlow中的語句不會立即執行;
  • 當構建完graph圖后,需要在一個session會話中啟動圖,啟動的第一步是創建一個Session對象。
  • 等到開啟會話session的時候,才會執行session.run()中的語句。在執行session.run()時,tensorflow并不是計算了整個圖,只是計算了與想要fetch的值相關的部分。

創建session對象

tf.compat.v1.Session(
target=’’, graph=None, config=None
)

會話可能擁有資源,當不再需要這些資源時,釋放這些資源很重要。為此,要么調用tf.Session.close會話上的方法,要么將會話用作上下文管理器。下面兩個例子是等價的:

# Using the `close()` method. sess = tf.compat.v1.Session() sess.run(...) sess.close() #關閉此會話# Using the context manager. with tf.compat.v1.Session() as sess:sess.run(...)

Session對象的方法run()

run(fetches, feed_dict=None, options=None, run_metadata=None)
參數:

  • fetches:可以是list或者tensor向量
  • feed_dict:以字典的方式填充占位

返回值: sess.run()可以將tensor格式轉成numpy格式,在python語言中,返回的tensor是numpy ndarray對象。

feed_dict 作用

feed_dict只在調用它的方法內有效,方法結束,feed_dict就會消失。

替換graph中的某個tensor

feed_dict使用一個值臨時替換一個 op 的輸出結果

a = tf.add(2, 5) b = tf.multiply(a, 3) with tf.Session() as sess: sess.run(b, feed_dict = {a:15}) # 重新給a賦值為15 運行結果:45sess.run(b) #feed_dict只在調用它的方法內有效,方法結束,feed_dict就會消失。 所以運行結果是:21

設置graph的輸入值

feed_dict可以給使用placeholder創建出來的tensor賦值

# 使用tf.placeholder()創建占位符 ,在session.run()過程中再投遞數據 x = tf.placeholder(tf.float32, shape=(1, 2)) #設置矩陣x,用占位符表示 w1 = tf.Variable(tf.random_normal([2, 3],stddev=1,seed=1)) w2 = tf.Variable(tf.random_normal([3, 1],stddev=1,seed=1))# 創建op, 設置矩陣相乘 a = tf.matmul(x,w1) y = tf.matmul(a,w2)# 啟動graph,運行op with tf.Session() as sess:# 對變量進行初始化,變量運行前必須做初始化操作sess.run(tf.global_variables_initializer())# 使用feed_dict將數據投入到y中print(sess.run(y, feed_dict={x:[[0.7, 0.5]]})) #運行結果: [[3.0904665]]

注意:此時的x是一個占位符(placeholder)。我們定義了它的type和shape,但是并沒有具體的值。在后面定義graph的代碼中,placeholder看上去和普通的tensor對象一樣。在運行程序的時候我們用feed_dict的方式把具體的值提供給placeholder,達到了給graph提供input的目的。
placeholder有點像在定義函數的時候用到的參數。我們在寫函數內部代碼的時候,雖然用到了參數,但并不知道參數所代表的值。只有在調用函數的時候,我們才把具體的值傳遞給參數。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的sess.run()详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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