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

Tensorflow訓(xùn)練模型越來越慢的2種解決方案

 更新時間:2020年02月07日 09:57:20   作者:xdq101  
今天小編就為大家分享一篇Tensorflow訓(xùn)練模型越來越慢的2種解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1 解決方案

【方案一】

載入模型結(jié)構(gòu)放在全局,即tensorflow會話外層。

'''載入模型結(jié)構(gòu):最關(guān)鍵的一步'''
saver = tf.train.Saver()
'''建立會話'''
with tf.Session() as sess:
 for i in range(STEPS):
 '''開始訓(xùn)練'''
 _, loss_1, acc, summary = sess.run([train_op_1, train_loss, train_acc, summary_op], feed_dict=feed_dict)
 '''保存模型'''
 saver.save(sess, save_path="./model/path", i)

【方案二】

在方案一的基礎(chǔ)上,將模型結(jié)構(gòu)放在圖會話的外部。

'''預(yù)測值'''
train_logits= network_model.inference(inputs, keep_prob)
'''損失值'''
train_loss = network_model.losses(train_logits)
'''優(yōu)化'''
train_op = network_model.train(train_loss, learning_rate)
'''準(zhǔn)確率'''
train_acc = network_model.evaluation(train_logits, labels)
'''模型輸入'''
feed_dict = {inputs: x_batch, labels: y_batch, keep_prob: 0.5}
'''載入模型結(jié)構(gòu)'''
saver = tf.train.Saver()
'''建立會話'''
with tf.Session() as sess:
 for i in range(STEPS):
 '''開始訓(xùn)練'''
 _, loss_1, acc, summary = sess.run([train_op_1, train_loss, train_acc, summary_op], feed_dict=feed_dict)
 '''保存模型'''
 saver.save(sess, save_path="./model/path", i) 

2 時間測試

通過不同方法測試訓(xùn)練程序,得到不同的訓(xùn)練時間,每執(zhí)行一次訓(xùn)練都重新載入圖結(jié)構(gòu),會使每一步的訓(xùn)練時間逐次增加,如果訓(xùn)練步數(shù)越大,后面訓(xùn)練速度越來越慢,最終可導(dǎo)致圖爆炸,而終止訓(xùn)練。

【時間累加】

2019-05-15 10:55:29.009205: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
step: 0, time cost: 1.8800880908966064
step: 1, time cost: 1.592250108718872
step: 2, time cost: 1.553826093673706
step: 3, time cost: 1.5687050819396973
step: 4, time cost: 1.5777575969696045
step: 5, time cost: 1.5908267498016357
step: 6, time cost: 1.5989274978637695
step: 7, time cost: 1.6078357696533203
step: 8, time cost: 1.6087186336517334
step: 9, time cost: 1.6123006343841553
step: 10, time cost: 1.6320762634277344
step: 11, time cost: 1.6317598819732666
step: 12, time cost: 1.6570467948913574
step: 13, time cost: 1.6584930419921875
step: 14, time cost: 1.6765813827514648
step: 15, time cost: 1.6751370429992676
step: 16, time cost: 1.7304580211639404
step: 17, time cost: 1.7583982944488525

【時間均衡】

2019-05-15 13:03:49.394354: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 7048 MB memory) -> physical GPU (device: 1, name: Tesla P4, pci bus id: 0000:00:0d.0, compute capability: 6.1)
step: 0, time cost: 1.9781079292297363
loss1:6.78, loss2:5.47, loss3:5.27, loss4:7.31, loss5:5.44, loss6:6.87, loss7: 6.84
Total loss: 43.98, accuracy: 0.04, steps: 0, time cost: 1.9781079292297363
step: 1, time cost: 0.09688425064086914
step: 2, time cost: 0.09693264961242676
step: 3, time cost: 0.09671926498413086
step: 4, time cost: 0.09688210487365723
step: 5, time cost: 0.09646058082580566
step: 6, time cost: 0.09669041633605957
step: 7, time cost: 0.09666872024536133
step: 8, time cost: 0.09651994705200195
step: 9, time cost: 0.09705543518066406
step: 10, time cost: 0.09690332412719727

3 原因分析

(1) Tensorflow使用圖結(jié)構(gòu)構(gòu)建系統(tǒng),圖結(jié)構(gòu)中有節(jié)點(node)和邊(operation),每次進行計算時會向圖中添加邊和節(jié)點進行計算或者讀取已存在的圖結(jié)構(gòu);

(2) 使用圖結(jié)構(gòu)也是一把雙刃之劍,可以加快計算和提高設(shè)計效率,但是,程序設(shè)計不合理會導(dǎo)向負面,使訓(xùn)練越來約慢;

(3) 訓(xùn)練越來越慢是因為運行一次sess.run,向圖中添加一次節(jié)點或者重新載入一次圖結(jié)構(gòu),導(dǎo)致圖中節(jié)點和邊越來越多,計算參數(shù)也成倍增長;

(4) tf.train.Saver()就是載入圖結(jié)構(gòu)的類,因此設(shè)計訓(xùn)練程序時,若每執(zhí)行一次跟新就使用該類載入圖結(jié)構(gòu),自然會增加參數(shù)數(shù)量,必然導(dǎo)致訓(xùn)練變慢;

(5) 因此,將載入圖結(jié)構(gòu)的類放在全局,即只載入一次圖結(jié)構(gòu),其他時間只訓(xùn)練圖結(jié)構(gòu)中的參數(shù),可保持原有的訓(xùn)練速度;

4 總結(jié)

(1) 設(shè)計訓(xùn)練網(wǎng)絡(luò),只載入一次圖結(jié)構(gòu)即可;

(2) tf.train.Saver()就是載入圖結(jié)構(gòu)的類,將該類的實例化放在全局,即會話外部,解決訓(xùn)練越來越慢。

以上這篇Tensorflow訓(xùn)練模型越來越慢的2種解決方案就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?迭代器Iterator詳情

    Python?迭代器Iterator詳情

    這篇文章主要介紹了Python?迭代器Iterator詳情,迭代器可以幫助我們解決面對復(fù)雜的數(shù)據(jù)場景時,快速簡便的獲取數(shù)據(jù),下文關(guān)于其詳細介紹,需要的小伙伴可以參考一下
    2022-05-05
  • 利用Python編寫個有趣的記仇本

    利用Python編寫個有趣的記仇本

    這篇文章主要為大家介紹了一個有趣的小案例——利用Python編寫個有趣的記仇本,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2023-04-04
  • python里將list中元素依次向前移動一位

    python里將list中元素依次向前移動一位

    這篇文章主要介紹了python里將list中元素依次向前移動一位,以及使用racket 5.2.1實現(xiàn)此功能的代碼,希望對大家有所幫助
    2014-09-09
  • Python GUI之如何使用tkinter控件

    Python GUI之如何使用tkinter控件

    今天帶大家學(xué)習(xí)Python GUI的相關(guān)知識,文中對如何使用tkinter控件作了非常詳細的介紹及代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 6種將Python代碼打包成exe應(yīng)用的方式

    6種將Python代碼打包成exe應(yīng)用的方式

    這篇文章主要給大家介紹了關(guān)于6種將Python代碼打包成exe應(yīng)用的方式,對于很多python的初學(xué)者來說,很希望將自己用python寫的.py文件生成exe直接在電腦上運行,需要的朋友可以參考下
    2023-08-08
  • python實現(xiàn)對文件中圖片生成帶標(biāo)簽的txt文件方法

    python實現(xiàn)對文件中圖片生成帶標(biāo)簽的txt文件方法

    下面小編就為大家分享一篇python實現(xiàn)對文件中圖片生成帶標(biāo)簽的txt文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 使用Python寫一個創(chuàng)意五子棋游戲源代碼

    使用Python寫一個創(chuàng)意五子棋游戲源代碼

    這篇文章主要給大家介紹了關(guān)于使用Python寫一個創(chuàng)意五子棋游戲的相關(guān)資料,Python作為一種簡單易上手的編程語言,能夠輕松實現(xiàn)五子棋游戲,需要的朋友可以參考下
    2023-08-08
  • Python使用Paramiko模塊編寫腳本進行遠程服務(wù)器操作

    Python使用Paramiko模塊編寫腳本進行遠程服務(wù)器操作

    這篇文章主要介紹了Python使用Paramiko模塊編寫腳本進行遠程服務(wù)器操作的實例,通過Paramiko能夠方便地使用SSH服務(wù),需要的朋友可以參考下
    2016-05-05
  • 基于python實現(xiàn)對文件進行切分行

    基于python實現(xiàn)對文件進行切分行

    這篇文章主要介紹了基于python實現(xiàn)對文件進行切分行,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Python中最強大的錯誤重試庫(tenacity庫)

    Python中最強大的錯誤重試庫(tenacity庫)

    本文要給大家介紹的tenacity庫,可能是目前Python生態(tài)中最好用的錯誤重試庫,主要介紹tenacity的主要使用方法和特性,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04

最新評論