會話持有並管理tensorflow程式執行時的所有資源呼叫會話的兩種方式
方式一:明確的呼叫會話的生成函式和關閉會話函式
呼叫這種方式時,要明確呼叫session.close(),以釋放資源。當程式異常退出時,關閉函式就不能被執行,從而導致資源洩露。# create a session
sess = tf.session()
# use this session to run a result
sess.run(...)
# close this session, release memeory
sess.close()
方式二:上下文管理機制自動釋放所有資源
會話類似計算圖機制,可以指定為預設# 建立會話,並通過上下文機制管理器管理該會話
with tf.session() as sess:
sess.run(...)
# 不需要再呼叫"session.close()"
# 在退出with statement時,會話關閉和資源釋放已自動完成
另外,在互動式環境下,通過設定缺省會話的方式來獲取張量的取值更加方便,呼叫函式sess = tf.session()
with sess.as_default():
# result為某個張量
print(result.eval())
# 一下**可完成相同的功能
sess = tf.session()
print(sess.run(result)) # 或者
print(result.eval(session=sess))
tf.interactivesession()
.省去將產生的會話註冊為缺省會話的過程。
以上,最常用的還是方式二,但這三種方式都可以通過configproto protocol buffer
來配置需要生成的會話,如並行執行緒數、gpu分配策略、運算超時時間 等引數,最常用的兩個是allow_soft_placement
和log_device_placement
.
configproto
配置方法:
config = tf.configproto(allow_soft_placement=true,
log_device_placement=true)
sess1 = tf.interactivesession(config=config)
sess2 = tf.session(config=config)
allow_soft_placement
,布林型,一般設定為true
,很好的支援多gpu或者不支援gpu時自動將運算放到cpu上。
log_device_placement
,布林型,為true
時日誌將會記錄每個節點被安排在了哪個裝置上以方便除錯。在生產環境下,通常設定為false
可以減少日誌量。
tensorflow框架基礎之優化 二
當神經網路得到的是乙個過擬合模型時,這個模型基本是沒什麼應用價值的,因為它的泛化效能非常不好 泛化即是,機器學習模型學習到的概念在它處於學習的過程中時模型沒有遇見過的樣本時候的表現,簡單理解為 能力 對一些 異常 資料過分的估計,而忽視了問題的整體規律。為避免過擬合,常採用的方式是新增正則化項,正則...
TensorFlow框架 tensorflow基礎
1 圖預設已經註冊,一組表示 tf.operation計算單位的物件和tf.tensor,表示操作之間流動的資料單元的物件 2 獲取呼叫 tf.get default graph op sess或者tensor 的graph屬性 3 圖的建立和使用 執行tensorflow操作圖的類,使用預設註冊的...
Tensorflow之基礎函式解析1
1.tf.argmax tf.argmax就是返回最大的那個數值所在的下標,axis 0 按列比較 axis 1 按行比較 2.tf.equal tf.equal a,b 是對比這兩個矩陣或者向量的相等的元素,如果是相等的那就返回true,反之返回false,返回的值的矩陣維度和a是一樣的 3.tf...