1. 程式人生 > >tensorflow中建立多個計算圖(Graph)

tensorflow中建立多個計算圖(Graph)

tf程式中,系統會自動建立並維護一個預設的計算圖,計算圖可以理解為神經網路(Neural Network)結構的程式化描述。如果不顯式指定所歸屬的計算圖,則所有的tensor和Operation都是在預設計算圖中定義的,使用tf.get_default_graph()函式可以獲取當前預設的計算圖控制代碼。

# -*- coding: utf-8 -*-)
import tensorflow as tf

a=tf.constant([1.0,2.0])
b=tf.constant([1.0,2.0])

result = a+b

print(a.graph is tf.get_default_graph()) # 輸出為True,表示tensor a 是在預設的計算圖中定義的
print(result.graph is tf.get_default_graph()) # 輸出為True, 表示 Operation result 是在預設的計算圖中定義的
print 'a.graph =        {0}'.format(a.graph)
print 'default graph =  {0}'.format(tf.get_default_graph())

輸出:
True
True
a.graph =        <tensorflow.python.framework.ops.Graph object at 0x7f0480c9ca90>
default graph =  <tensorflow.python.framework.ops.Graph object at 0x7f0480c9ca90>

tf中可以定義多個計算圖,不同計算圖上的張量和運算是相互獨立的,不會共享。計算圖可以用來隔離張量和計算,同時提供了管理張量和計算的機制。計算圖可以通過Graph.device函式來指定執行計算的裝置,為TensorFlow充分利用GPU/CPU提供了機制。

  1. 使用 g = tf.Graph()函式建立新的計算圖;
  2. 在with g.as_default():語句下定義屬於計算圖g的張量和操作
  3. 在with tf.Session()中通過引數 graph = xxx指定當前會話所執行的計算圖;
  4. 如果沒有顯式指定張量和操作所屬的計算圖,則這些張量和操作屬於預設計算圖;
  5. 一個圖可以在多個sess中執行,一個sess也能執行多個圖


建立多個計算圖:
# -*- coding: utf-8 -*-)
import tensorflow as tf

# 在系統預設計算圖上建立張量和操作
a=tf.constant([1.0,2.0])
b=tf.constant([2.0,1.0])
result = a+b

# 定義兩個計算圖
g1=tf.Graph()
g2=tf.Graph()

# 在計算圖g1中定義張量和操作
with g1.as_default():
    a = tf.constant([1.0, 1.0])
    b = tf.constant([1.0, 1.0])
    result1 = a + b

with g2.as_default():
    a = tf.constant([2.0, 2.0])
    b = tf.constant([2.0, 2.0])
    result2 = a + b


# 在g1計算圖上建立會話
with tf.Session(graph=g1) as sess:
    out = sess.run(result1)
    print 'with graph g1, result: {0}'.format(out)

with tf.Session(graph=g2) as sess:
    out = sess.run(result2)
    print 'with graph g2, result: {0}'.format(out)

# 在預設計算圖上建立會話
with tf.Session(graph=tf.get_default_graph()) as sess:
    out = sess.run(result)
    print 'with graph default, result: {0}'.format(out)

print g1.version  # 返回計算圖中操作的個數

輸出:

with graph g1, result: [ 2.  2.]
with graph g2, result: [ 4.  4.]
with graph default, result: [ 3.  3.]
3

相關推薦

tensorflow建立計算(Graph)

tf程式中,系統會自動建立並維護一個預設的計算圖,計算圖可以理解為神經網路(Neural Network)結構的程式化描述。如果不顯式指定所歸屬的計算圖,則所有的tensor和Operation都是在

VisualStudioCode建立ASP.NET Core 專案、類庫、控制檯程式,並新增應用間的引用

首先安裝VisualStudioCode並且可以使用。 1、首先建立MyApps資料夾,作為專案主目錄,下面將在這個資料夾中建立多個web應用程式、型別、控制檯程式等。 2、開啟VisualStudioCode軟體,選擇“File”->"Open Folder",在彈出框中選擇上述建立的資料夾“My

iOS專案建立target

開發過程中,會遇到切環境的需要以供測試及上線需求,專案中建立多個target並配置好,到時候直接切換target就可以滿足需求了。 建立不同的target 1、先建立一個pch檔案如下 #ifndef ZWHelper_h #define ZWHelper_h

Java迴圈建立物件是幾引用?以及是否執行緒安全

在迴圈中,通過User user = new User();這種方式建立的物件。每次建立的物件是不同的,但是引用是同一個,引用的生命週期是單次迴圈,下次迴圈會覆蓋調上次的引用。 比如這段程式碼: int minId = 0; while (

Xib使用之TableViewCell.xib建立Cell

初次使用xib建立UITableviewCell的時候,我都是一個xib檔案裡,只建立一個Cell,在實際業務中,往往都是一個列表中需要用到多個不同的Cell樣式,這就需要建立N個.h .m .xib檔案。而且這些.m中的實現還差不多。 後來發現,一個.xib檔案中可以建立

KVO---視間數據的傳遞:標簽顯示輸入的內容【

tla trac content color smis rep ret oot ani RootViewController.m #import "ModalViewController.h" @interface RootViewController () @en

單例---視間數據的傳遞:標簽顯示輸入的內容【

release 視圖 pro button data- pos view copy field RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; self.view.

使用python在ArcGIS合併的資料

#encoding=utf-8 #將當前圖層列表中的多個圖層的向量資料合併到一個圖層中 import arcpy   mapdoc = arcpy.mapping.MapDocument("CURRENT") dfm = arcpy.mapping.Lis

【Vue.js學習筆記】8:建立Vue例項物件,認識Vue的元件

建立多個Vue例項物件 這裡在同一個js檔案中建立了兩個Vue例項物件,它們各自能完成前面學的那些功能,同時使用物件名稱也可以互相訪問,協同實現一些功能。 index.html <!DOCTYPE html> <html lang="en" xmlns:v-

spring boot使用spring JdbcTemplate(一)——連線池建立連線

本文參考了網上一些文章,最後整理實踐得出。1、建立一個springboot的demo程式,可以參考我的文章:2、看一下目錄結構:3、首先需要在pom檔案中引入依賴:<!-- https://mvnrepository.com/artifact/mysql/mysql-c

Linux通過fork()同時建立程序

1、使用系統呼叫fork()建立三個子程序;2、各個子程序顯示和輸出一些提示資訊和自己的程序識別符號;3、父程序顯示自己的程序ID和一些提示資訊,然後呼叫waitpid()等待多個子程序結束,並在子程序結束後顯示輸出提示資訊表示程式結束。#include <stdio.

Linuxapache建立虛擬主機(訪問站點目錄)

因為公司公用一臺開發機,apache服務是公用的,全域性的document是預設的,不便於改動,只能建立虛擬機器主機及埠來通過http訪問自己的站點目錄。 進入etc/httpd/httpd.conf配置檔案: 1.加入listen埠:     Listen 81 2

在一個專案匯入不同tensorflow模型

剛開始直接採用呼叫一個模型的方法: (1)定義網路 (2)新建sess:sess = tf.Session(config=config) (3)定義saver:saver = tf.train.S

關於TensorFlow(Multiple Graphs)

一、摘要    TensorFlow中的圖(Graph)是眾多操作(Ops)的集合,它描述了具體的操作型別與各操作之間的關聯。在實際應用中,我們可以直接把圖理解為神經網路(Neural Network)結構的程式化描述。TensorFlow中的會話(Session)則實現

Python第三方庫——Matplotlib_在同figure繪製並給出legend

import matplotlib.pyplot as plt line1, = plt.plot([1,2,3], linestyle='--') line2, = plt.plot([3,2,1]

bash shell利用迴圈建立檔案

1.用while迴圈 命令: i=1; while [ $i -le 99 ]; do name=`printf "test%02d.txt"  $i`; touch "$name"; i=$(($i+1)); done 2.用for迴圈和seq命令 命令: for i

Xcode同一Project建立target的總結

1.對Targets的理解 關於Targets,Apple的人是這樣說的:“ Targets that define the products to build. A target organizes

在一個專案建立工程檔案目錄建立方法

個人建議直接看文章的最後部分的那種方法,那種方法容易上手,前面幾種很麻煩很累原始碼地址:https://download.csdn.net/my這個程式碼肯定有用,保證能執行。是我自己寫1、在D盤建立空資料夾qMulti 2、使用Qt Creator建立App應用程式:Big

python系列(五)centos6.x部署python版本

python pyenv centos6.x virtualenv 博主QQ:819594300博客地址:http://zpf666.blog.51cto.com/有什麽疑問的朋友可以聯系博主,博主會幫你們解答,謝謝支持!使用pyenv+virtualenv方式部署python多版本pyenv

在一個進程定義線程

daemon 之前 args 設置 tar main art blog thread import threadingfrom time import ctime,sleepimport timedef music(name): print(‘listening to