欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決tensorflow訓練時內(nèi)存持續(xù)增加并占滿的問題

 更新時間:2020年01月19日 17:29:35   作者:張小白027  
今天小編就為大家分享一篇解決tensorflow訓練時內(nèi)存持續(xù)增加并占滿的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

記錄一次小白的tensorflow學習過程,也為有同樣困擾的小白留下點經(jīng)驗。

先說我出錯和解決的過程。在做風格遷移實驗時,使用預加載權重的VGG19網(wǎng)絡正向提取中間層結(jié)果,結(jié)果因為代碼不當,在遍歷圖片提取時內(nèi)存持續(xù)增長,導致提取幾十個圖片的特征內(nèi)存就滿了。

原因是在對每一張圖片正向傳播結(jié)束后,都會在留下中間信息。具體地說是在我將正向傳播的代碼與模型的代碼分離了,在每次遍歷圖片時都會正向傳播,在tensorflow中新增加了很多的計算節(jié)點(如tf.matmul等等),導致內(nèi)存中遺留了大量的過期信息。

糾正的做法就是一個前提:避免在循環(huán)訓練圖片時額外使用tf計算資源。

使用placeholder作為輸入數(shù)據(jù)的入口,在模型中定義需要使用的函數(shù),包括正向傳播。不要在遍歷圖片時額外使用tf計算。

遇到這種問題一定要回頭檢查代碼,尤其是在別人寫的代碼基礎上改時。 多學習公開的源碼。

錯誤示例:

def build_model(model_path):
  model_input = tf.placeholder('float32', [1, IMAGE_HEIGHT, IMAGE_WIDTH, COLOR_CHANNELS])
  vec1 = ...
  ...... 
  return model_input,vec1
  
def get_style_represent(vec):
  # 一些tf計算操作
  return new_vec

with tf.Session() as sess:
  sess.run(tf.global_variables_initializer())
  img_input,vec1 = build_model(VGG19_MODEL)    # 加載模型
  for cur_img_path in imgs_path_list:   # 遍歷圖片
    cur_img = load_image(cur_img_path)
    vec1_out = sess.run(vec1, feed_dict = {img_input:cur_img})   # 正向傳播輸出模型中的vec1
    # 對vec1進行一些處理,此處在遍歷圖片時額外使用了tensorflow的計算節(jié)點,導致在內(nèi)存中遺留信息
    new_vec = get_style_represent(vec1_out)  

正確示例:

def build_model(model_path):
  model_input = tf.placeholder('float32', [1, IMAGE_HEIGHT, IMAGE_WIDTH, COLOR_CHANNELS])
  vec1 = ...
  ...... 
  new_vec = ...    # 將get_style_represent計算操作定義在模型中
  return model_input,vec1,new_vec

with tf.Session() as sess:
  sess.run(tf.global_variables_initializer())
  img_input,vec1,new_vec = build_model(VGG19_MODEL)
  for cur_img_path in imgs_path_list:
    cur_img = load_image(cur_img_path)
    # 一次正向傳播將處理后的vec1也得到了,避免在每次圖片正向傳播時留下額外信息
    vec1_out,new_vec_out = sess.run([vec1,new_vec], feed_dict = {img_input:cur_img})  

所以,如果你也遇到了同樣的問題,不妨看一下你是不是在迭代過程中額外使用了新的tf計算節(jié)點吧。

以上這篇解決tensorflow訓練時內(nèi)存持續(xù)增加并占滿的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 一個基于flask的web應用誕生 用戶注冊功能開發(fā)(5)

    一個基于flask的web應用誕生 用戶注冊功能開發(fā)(5)

    一個基于flask的web應用誕生第五篇,這篇文章主要介紹了用戶注冊功能開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Python向MySQL批量插數(shù)據(jù)的實例講解

    Python向MySQL批量插數(shù)據(jù)的實例講解

    下面小編就為大家分享一篇Python向MySQL批量插數(shù)據(jù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Python入門_淺談數(shù)據(jù)結(jié)構的4種基本類型

    Python入門_淺談數(shù)據(jù)結(jié)構的4種基本類型

    下面小編就為大家?guī)硪黄狿ython入門_淺談數(shù)據(jù)結(jié)構的4種基本類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Python Pandas 轉(zhuǎn)換unix時間戳方式

    Python Pandas 轉(zhuǎn)換unix時間戳方式

    今天小編就為大家分享一篇Python Pandas 轉(zhuǎn)換unix時間戳方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python中圖像算術運算的示例詳解

    Python中圖像算術運算的示例詳解

    還記得你在小學時學習如何加減數(shù)字嗎?現(xiàn)在,你也可以對圖像做同樣的事情!輸入圖像可以進行算術運算,例如加法、減法和按位運算(AND、OR、NOT、XOR)。這些操作可以幫助提高輸入照片的質(zhì)量。本文將詳解一下這些運算,需要的可以參考一下
    2022-05-05
  • 簡單了解python單例模式的幾種寫法

    簡單了解python單例模式的幾種寫法

    這篇文章主要介紹了簡單了解python單例模式的幾種寫法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python計算機視覺OpenCV入門講解

    python計算機視覺OpenCV入門講解

    這篇文章主要介紹了python計算機視覺OpenCV入門講解,關于圖像處理的相關簡單操作,包括讀入圖像、顯示圖像及圖像相關理論知識
    2022-06-06
  • python使用pandas實現(xiàn)數(shù)據(jù)分割實例代碼

    python使用pandas實現(xiàn)數(shù)據(jù)分割實例代碼

    這篇文章主要介紹了python使用pandas實現(xiàn)數(shù)據(jù)分割實例代碼,介紹了使用pandas實現(xiàn)對dataframe格式的數(shù)據(jù)分割成時間跨度相等的數(shù)據(jù)塊,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 使用Keras建立模型并訓練等一系列操作方式

    使用Keras建立模型并訓練等一系列操作方式

    這篇文章主要介紹了使用Keras建立模型并訓練等一系列操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python中如何用Matplotlib繪制多圖并合并展示

    Python中如何用Matplotlib繪制多圖并合并展示

    這篇文章主要介紹了Python中如何用Matplotlib繪制多圖并合并展示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論