最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

記錄一次小白的tensorflow學(xué)習(xí)過程,也為有同樣困擾的小白留下點(diǎn)經(jīng)驗(yàn)。

先說我出錯和解決的過程。在做風(fēng)格遷移實(shí)驗(yàn)時,使用預(yù)加載權(quán)重的VGG19網(wǎng)絡(luò)正向提取中間層結(jié)果,結(jié)果因?yàn)榇a不當(dāng),在遍歷圖片提取時內(nèi)存持續(xù)增長,導(dǎo)致提取幾十個圖片的特征內(nèi)存就滿了。

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

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

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

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

錯誤示例:

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計(jì)算操作
  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進(jìn)行一些處理,此處在遍歷圖片時額外使用了tensorflow的計(jì)算節(jié)點(diǎn),導(dǎo)致在內(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計(jì)算操作定義在模型中
  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計(jì)算節(jié)點(diǎn)吧。

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

相關(guān)文章

最新評論

乌鲁木齐县| 阿拉尔市| 伽师县| 理塘县| 武隆县| 德令哈市| 都兰县| 城步| 山阴县| 当雄县| 赫章县| 自贡市| 建阳市| 区。| 辉南县| 阿巴嘎旗| 江安县| 新和县| 都匀市| 香河县| 广东省| 庆阳市| 宝坻区| 茂名市| 台南县| 宁德市| 景德镇市| 西乌| 房山区| 鄄城县| 淄博市| 湖口县| 舒城县| 芜湖市| 河津市| 牡丹江市| 会宁县| 安顺市| 错那县| 新郑市| 小金县|