W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
定義在:tensorflow/python/client/session.py.
請參閱指南:運行圖>會話管理
用于運行TensorFlow操作的類.
一個Session對象封裝了Operation執(zhí)行對象的環(huán)境,并對Tensor對象進行計算.例如:
# Build a graph.
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * b
# Launch the graph in a session.
sess = tf.Session()
# Evaluate the tensor `c`.
print(sess.run(c))
session可能擁有的資源,如:tf.Variable,tf.QueueBase和tf.ReaderBase.不再需要時釋放這些資源是非常重要的.為此,請在session中調(diào)用tf.Session.close方法,或使用session作為上下文管理器.以下兩個例子是等價的:
# Using the `close()` method.
sess = tf.Session()
sess.run(...)
sess.close()
# Using the context manager.
with tf.Session() as sess:
sess.run(...)
該ConfigProto協(xié)議緩存公開了用于session的各種配置選項.例如,要創(chuàng)建為設(shè)備放置使用軟約束的session,并記錄生成的放置決策,請按如下方式創(chuàng)建session:
# Launch the graph in a session that allows soft device placement and
# logs the placement decisions.
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,
log_device_placement=True))
__init__(
target='',
graph=None,
config=None
)
創(chuàng)建一個新的TensorFlow session.
如果在構(gòu)建session時沒有指定graph參數(shù),則將在session中啟動默認(rèn)關(guān)系圖.如果使用多個圖(在同一個過程中使用tf.Graph()創(chuàng)建,則必須為每個圖使用不同的sessio,但是每個圖都可以用于多個sessio中,在這種情況下,將圖形顯式地傳遞給sessio構(gòu)造函數(shù)通常更清晰.
方法參數(shù)
__enter__()
__exit__(
exec_type,
exec_value,
exec_tb
)
as_default()
返回使該對象成為默認(rèn)session的上下文管理器.
與with關(guān)鍵字一起使用來指定在此session中調(diào)用tf.Operation.run或tf.Tensor.eval應(yīng)執(zhí)行的操作.
c = tf.constant(..)
sess = tf.Session()
with sess.as_default():
assert tf.get_default_session() is sess
print(c.eval())
要獲取當(dāng)前的默認(rèn)session,請使用tf.get_default_session.
注意:退出上下文時,as_default上下文管理器不會關(guān)閉session,并且必須顯式關(guān)閉session.
c = tf.constant(...)
sess = tf.Session()
with sess.as_default():
print(c.eval())
# ...
with sess.as_default():
print(c.eval())
sess.close()
或者,您可以使用tf.Session():創(chuàng)建會在退出上下文時自動關(guān)閉的session,包括未捕獲的異常發(fā)生時.
注意,默認(rèn)session是當(dāng)前線程的一個屬性.如果你創(chuàng)建一個新的線程,并希望在該線程中使用默認(rèn)的session,則必須明確地添加一個sess.as_default():到該線程的函數(shù).
注意,輸入一個sess.as_default():塊不會影響當(dāng)前的默認(rèn)圖形.如果您正在使用多個圖表,并且與其sess.graph值不同,則tf.get_default_graph必須明確地輸入一個帶有sess.graph.as_default():塊來創(chuàng)建sess.graph默認(rèn)圖形.
使用此session作為默認(rèn)session的上下文管理器.
close()
關(guān)閉這個session.
調(diào)用此方法可釋放與session關(guān)聯(lián)的所有資源.
list_devices()
列出此session中的可用設(shè)備.
devices = sess.list_devices()
for d in devices:
print(d.name)
列表中的每個元素都具有以下屬性:
可能引發(fā)的異常
list_devices()方法返回:
list_devices()方法將返回session中的設(shè)備列表.
make_callable(
fetches,
feed_list=None,
accept_options=False
)
返回運行特定步驟的Python可調(diào)用對象.
返回的可調(diào)用將采取 len (feed_list) 參數(shù),其類型必須是feed_list各自元素的兼容feed值.例如,如果feed_list的元素i是一個tf.Tensor,則返回的可調(diào)用的第 i 參數(shù)必須是一個 numpy 的 ndarray(或可轉(zhuǎn)化成ndarray的東西)具有匹配元素類型和形狀.請參閱tf.Session.run允許的Feed鍵和值類型的詳細(xì)信息.
返回的可調(diào)用將具有與tf.Session.run(fetches, ...).例如,如果fetches是tf.Tensor ,則可調(diào)用將返回一個numpy的ndarray; 如果fetches是一個tf.Operation,它會返回None.
方法參數(shù)
方法返回
一個函數(shù)調(diào)用將執(zhí)行由feed_list定義的步驟時,并在此會話中讀取的函數(shù).
可能引發(fā)的異常
partial_run
partial_run(
handle,
fetches,
feed_dict=None
)
通過更多的feed和fetche繼續(xù)執(zhí)行.
這是實驗性的,可能會有變化.
要使用部分執(zhí)行,用戶首先調(diào)用partial_run_setup(),然后是一個序列partial_run().partial_run_setup指定將在隨后的partial_run調(diào)用中使用的提要和提取列表.
可選feed_dict參數(shù)允許調(diào)用者覆蓋圖中張量的值.請參閱run()以獲取更多信息.
下面是一個簡單的例子:
a = array_ops.placeholder(dtypes.float32, shape=[])
b = array_ops.placeholder(dtypes.float32, shape=[])
c = array_ops.placeholder(dtypes.float32, shape=[])
r1 = math_ops.add(a, b)
r2 = math_ops.multiply(r1, c)
h = sess.partial_run_setup([r1, r2], [a, b, c])
res = sess.partial_run(h, r1, feed_dict={a: 1, b: 2})
res = sess.partial_run(h, r2, feed_dict={c: res})
方法參數(shù)
方法返回:
可以是單個值,如果fetches是單個圖元素,或者列表值,如果fetches是列表,或者是具有與字典相同的鍵fetches的字典(請參閱“run文檔”).
方法可能引發(fā)的異常
partial_run_setup(
fetches,
feeds=None
)
為部分運行設(shè)置一個帶有feed和fetche的圖形.
這是實驗性的,可能會有變化.
請注意,與運行相反,feeds只能指定圖形元素.張量將由隨后的partial_run調(diào)用提供.
方法參數(shù)
方法返回:
局部運行的處理器.
可能引發(fā)的異常
@staticmethod
reset(
target,
containers=None,
config=None
)
在target上重置資源容器,并關(guān)閉所有連接的會話.
資源容器分布在同一個群集target中的所有工作人員.target重置資源容器時,與該容器關(guān)聯(lián)的資源將被清除.尤其是,容器中的所有變量都將變得不確定:它們將失去其值和形狀.
注意:(i)reset()目前僅用于分布式會話.(ii)任何名為target的主的session將被關(guān)閉.
如果沒有提供資源容器,則所有的容器都被重置.
方法參數(shù)
可能引發(fā)的異常
run(
fetches,
feed_dict=None,
options=None,
run_metadata=None
)
在fetches中運行操作和計算張量.
此方法運行一個TensorFlow計算的一個“步驟”,通過運行所需的圖形片段來執(zhí)行每個Operation和計算fetches中的每個Tensor,用 feed_dict 中的值替換相應(yīng)的輸入值.
所述fetches參數(shù)可以是一個單一的圖形元素,或任意嵌套列表、元組、namedtuple、字典、或含有它的葉子圖表元素OrderedDict.圖形元素可以是以下類型之一:
run()返回的值具有與fetches參數(shù)相同的形狀,葉子由TensorFlow返回的相應(yīng)值替換.
示例:
a = tf.constant([10, 20])
b = tf.constant([1.0, 2.0])
# 'fetches' can be a singleton
v = session.run(a)
# v is the numpy array [10, 20]
# 'fetches' can be a list.
v = session.run([a, b])
# v is a Python list with 2 numpy arrays: the 1-D array [10, 20] and the
# 1-D array [1.0, 2.0]
# 'fetches' can be arbitrary lists, tuples, namedtuple, dicts:
MyData = collections.namedtuple('MyData', ['a', 'b'])
v = session.run({'k1': MyData(a, b), 'k2': [b, a]})
# v is a dict with
# v['k1'] is a MyData namedtuple with 'a' (the numpy array [10, 20]) and
# 'b' (the numpy array [1.0, 2.0])
# v['k2'] is a list with the numpy array [1.0, 2.0] and the numpy array
# [10, 20]
可選的feed_dict參數(shù)允許調(diào)用者在關(guān)系圖中覆蓋張量的值.feed_dict 中的每個鍵都可以是以下類型之一:
feed_dict 中的每個值必須可轉(zhuǎn)換為相應(yīng)鍵的 dtype 的 numpy 數(shù)組.
可選options參數(shù)需要一個[ RunOptions] 原型.這些選項允許控制此特定步驟的行為(例如,啟用跟蹤).
可選run_metadata參數(shù)需要一個[ RunMetadata] 原型.在適當(dāng)?shù)臅r候,這個步驟的非張量輸出將被收集在那里.例如,當(dāng)用戶在options打開跟蹤時,配置文件信息將被收集到該參數(shù)中并傳回.
方法參數(shù)
方法返回:
單個值如果fetches是單個圖元素,或者值列表if fetches是列表,或者具有與fetches字典(如上所述)相同的關(guān)鍵字的字典.
可能發(fā)生的異常
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: