Tensorflow |(4)名稱域、圖 和會話

      網友投稿 754 2025-03-31

      Tensorflow |(1)初識Tensorflow

      Tensorflow |(2)張量的階和數據類型及張量操作

      Tensorflow |(3)變量的的創建、初始化、保存和加載

      Tensorflow |(4)名稱域、圖 和會話

      變量作用域

      tensorflow提供了變量作用域和共享變量這樣的概念,有幾個重要的作用。

      讓模型代碼更加清晰,作用分明

      變量作用域域

      通過tf.variable_scope()創建指定名字的變量作用域

      with tf.variable_scope("itcast") as scope:

      print("----")

      加上with語句就可以在整個itcast變量作用域下就行操作。

      嵌套使用

      變量作用域可以嵌套使用

      with tf.variable_scope("itcast") as itcast:

      with tf.variable_scope("python") as python:

      print("----")

      變量作用域下的變量

      在同一個變量作用域下,如果定義了兩個相同名稱的變量(這里先用tf.Variable())會怎么樣呢?

      with tf.variable_scope("itcast") as scope:

      a = tf.Variable([1.0,2.0],name="a")

      b = tf.Variable([2.0,3.0],name="a")

      我們通過tensoflow提供的計算圖界面觀察

      我們發現取了同樣的名字,其實tensorflow并沒有當作同一個,而是另外又增加了一個a_1,來表示b的圖

      變量范圍

      當每次在一個變量作用域中創建變量的時候,會在變量的name前面加上變量作用域的名稱

      with tf.variable_scope("itcast"):

      a = tf.Variable(1.0,name="a")

      b = tf.get_variable("b", [1])

      print(a.name,b.name)

      得道結果

      (u'itcast/a:0', u'itcast/b:0')

      對于嵌套的變量作用域來說

      with tf.variable_scope("itcast"):

      with tf.variable_scope("python"):

      python3 = tf.get_variable("python3", [1])

      assert python3.name == "itcast/python/python3:0"

      var2 = tf.get_variable("var",[3,4],initializer=tf.constant_initializer(0.0))

      圖與會話

      tf.Graph

      TensorFlow計算,表示為數據流圖。一個圖包含一組表示 tf.Operation計算單位的對象和tf.Tensor表示操作之間流動的數據單元的對象。默認Graph值始終注冊,并可通過調用訪問 tf.get_default_graph。

      a = tf.constant(1.0)

      assert c.graph is tf.get_default_graph()

      我們可以發現這兩個圖是一樣的。那么如何創建一個圖呢,通過tf.Graph()

      g1= tf.Graph()

      g2= tf.Graph()

      with tf.Session() as sess:

      tf.global_variables_initializer().run()

      print(g1,g2,tf.get_default_graph())

      圖的其它屬性和方法

      作為一個圖的類,自然會有一些圖的屬性和方法。

      as_default()

      返回一個上下文管理器,使其成為Graph默認圖形。

      如果要在同一過程中創建多個圖形,則應使用此方法。為了方便起見,提供了一個全局默認圖形,如果不明確地創建一個新的圖形,所有操作都將添加到此圖形中。使用該with關鍵字的方法來指定在塊的范圍內創建的操作應添加到此圖形中。

      g = tf.Graph()

      with g.as_default():

      a = tf.constant(1.0)

      assert c.graph is g

      Tensorflow |(4)名稱域、圖 和會話

      會話

      tf.Session

      運行TensorFlow操作圖的類,一個包含ops執行和tensor被評估

      a = tf.constant(5.0)

      b = tf.constant(6.0)

      c = a * b

      sess = tf.Session()

      print(sess.run(c))

      在開啟會話的時候指定圖

      with tf.Session(graph=g) as sess:

      資源釋放

      會話可能擁有很多資源,如 tf.Variable,tf.QueueBase和tf.ReaderBase。在不再需要這些資源時,重要的是釋放這些資源。要做到這一點,既可以調用tf.Session.close會話中的方法,也可以使用會話作為上下文管理器。以下兩個例子是等效的:

      # 使用close手動關閉

      sess = tf.Session()

      sess.run(...)

      sess.close()

      # 使用上下文管理器

      with tf.Session() as sess:

      sess.run(...)

      run方法介紹

      run(fetches, feed_dict=None, options=None, run_metadata=None)

      運行ops和計算tensor

      fetches 可以是單個圖形元素,或任意嵌套列表,元組,namedtuple,dict或OrderedDict

      feed_dict 允許調用者覆蓋圖中指定張量的值

      如果a,b是其它的類型,比如tensor,同樣可以覆蓋原先的值

      a = tf.placeholder(tf.float32, shape=[])

      b = tf.placeholder(tf.float32, shape=[])

      c = tf.constant([1,2,3])

      with tf.Session() as sess:

      a,b,c = sess.run([a,b,c],feed_dict={a: 1, b: 2,c:[4,5,6]})

      print(a,b,c)

      錯誤

      RuntimeError:如果它Session處于無效狀態(例如已關閉)。

      TypeError:如果fetches或feed_dict鍵是不合適的類型。

      ValueError:如果fetches或feed_dict鍵無效或引用 Tensor不存在。

      其它屬性和方法

      graph

      返回本次會話中的圖

      as_default()

      返回使此對象成為默認會話的上下文管理器。

      獲取當前的默認會話,請使用 tf.get_default_session

      c = tf.constant(..)

      sess = tf.Session()

      with sess.as_default():

      assert tf.get_default_session() is sess

      print(c.eval())

      注意:?使用這個上下文管理器并不會在退出的時候關閉會話,還需要手動的去關閉

      c = tf.constant(...)

      sess = tf.Session()

      with sess.as_default():

      print(c.eval())

      # ...

      with sess.as_default():

      print(c.eval())

      sess.close()

      TensorFlow

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:晶圓制造與生產工藝的區別(晶圓生產車間的特點)
      下一篇:金蝶、管家婆、伙伴云等這些進銷存管理軟件,究竟哪個更好用?
      相關文章
      亚洲综合久久1区2区3区| AV激情亚洲男人的天堂国语| 亚洲av无码不卡久久| 亚洲高清美女一区二区三区| 久久久久亚洲精品成人网小说| 国产成人99久久亚洲综合精品 | 亚洲日韩乱码中文无码蜜桃臀| 亚洲AV综合色区无码另类小说| 亚洲精品V欧洲精品V日韩精品| 亚洲中文字幕无码中文字在线| 亚洲真人日本在线| 中文字幕亚洲综合久久菠萝蜜| 久久久久国产成人精品亚洲午夜 | 亚洲AV无码专区日韩| 亚洲AV无码AV男人的天堂不卡| 亚洲永久网址在线观看| 亚洲精华国产精华精华液网站| 亚洲精品无码久久久久久| 亚洲AV一区二区三区四区| 亚洲av无码一区二区三区在线播放 | 91亚洲国产成人久久精品网址 | 亚洲中文字幕无码专区| 国产成人毛片亚洲精品| 亚洲熟妇av一区二区三区漫画| 亚洲动漫精品无码av天堂| 亚洲AV区无码字幕中文色| 久久综合亚洲鲁鲁五月天| 亚洲国产精品久久网午夜| 亚洲狠狠成人综合网| 亚洲日韩AV无码一区二区三区人| 亚洲AV无码专区在线电影成人 | mm1313亚洲国产精品美女| 伊人久久亚洲综合影院| 久久亚洲国产精品五月天婷| 久久久久久久尹人综合网亚洲| 亚洲一区二区三区首页| 亚洲国产韩国一区二区| 亚洲一区二区三区成人网站 | 亚洲人成影院在线| 亚洲国产中文在线二区三区免| 亚洲私人无码综合久久网|