tensorflow之tf.train.exponential_decay()指數衰減法

exponential_decay(learning_rate,? global_steps, decay_steps, decay_rate, staircase=False, name=None)

使用方式:

tf.tf.train.exponential_decay()

例子:

tf.train.exponential_decay(self.config.e_lr, self.e_global_steps,self.config.decay_steps, self.config.decay_rate, staircase=True)

在 Tensorflow 中,exponential_decay()是應用于學習率的指數衰減函數(實現指數衰減學習率)。

在訓練模型時,通常建議隨著訓練的進行逐步降低學習率。該函數需要`global_step`值來計算衰減的學習速率。

該函數返回衰減后的學習率。該函數的計算方程式如下

參數:

  • learning_rate - 初始學習率
  • global_step -?用于衰減計算的全局步驟。 一定不為負數。喂入一次 BACTH_SIZE 計為一次 global_step
  • decay_steps - 衰減速度,一定不能為負數,每間隔decay_steps次更新一次learning_rate值
  • decay_rate - 衰減系數,衰減速率,其具體意義參看函數計算方程(對應α^t中的α)。
  • staircase - 若 ‘ True ’ ,則學習率衰減呈 ‘ 離散間隔 ’ (discrete intervals),具體地講,`global_step / decay_steps`是整數除法,衰減學習率( the decayed learning rate )遵循階梯函數;若為 ’ False ‘ ,則更新學習率的值是一個連續的過程,每步都會更新學習率。

返回值:

  • 與初始學習率 ‘ learning_rate ’ 相同的標量 ’ Tensor ‘ 。

?優點:

  • 訓練伊始可以使用較大學習率,以快速得到比較優的解。
  • 后期通過逐步衰減后的學習率進行迭代訓練,以使模型在訓練后期更加穩定。?

示例代碼:

import tensorflow as tf
import matplotlib.pyplot as plt

learning_rate = 0.1
decay_rate = 0.96
global_steps = 1000
decay_steps = 100

global_step = tf.Variable(0, trainable = Fasle)
c = tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=True)
d = tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False)

T_C = []
F_D = []

with tf.Session() as sess:
for i in range(global_steps):
T_c = sess.run(c, feed_dict={global_step: i})
T_C.append(T_c)
F_d = sess.run(d, feed_dict={global_step: i})
F_D.append(F_d)

plt.figure(1)
plt.plot(range(global_steps), F_D, 'r-')
plt.plot(range(global_steps), T_C, 'b-')

plt.show()

實操:

運行結果:

備注:

(1)

臺階形狀的藍色線是?staircase =?True

線條形狀的紅色線是?staircase = Fasle

(2)

初始學習率 learning_rate 為0.1,總訓練次數 global_setps 為 1000 次;staircase=True時,每隔?decay_steps = 100 次更新一次 學習率 learning_rate,而staircase=True時,每一步均會更新一次學習率 learning_rate ,

(3)

訓練過程中,decay_rate的數值保持步不變。

?

參考文獻:https://www.cnblogs.com/gengyi/p/9898960.html

轉載于:https://www.cnblogs.com/happystudyeveryday/p/11144433.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448472.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

wait( )和 waitpid( )

進程一旦調用了wait,就立即阻塞自己,由wait自動分析是否當前進程的某個子進程已經退出,如果讓它找到了這樣一個已經變成僵尸的子進程,wait就會收集這個子進程的信息,并把它徹底銷毀后返回;如果沒有找到這樣…

享受閱讀的十二個好習慣

嚴謹的國際閱讀率比較研究顯示,當下韓國國民人均閱讀量約為每年11本,法國約為8.4本,日本在8.4—8.5本之間。全世界每年閱讀書籍數量排名第一的是猶太人,平均每人一年讀書64本。而中國13億人口,扣除教科書,平…

在 vscode 中使用 Git :拉取、提交、克隆

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 PS:轉載此文后,網友在評論中提到還有其它方法,不過目前個人尚在研究中,有興趣的朋友們也可…

偶也要去上海Tech一把了

公司組織的,后天去,呵呵:)希望能多認識一點博客園的兄弟姐妹轉載于:https://www.cnblogs.com/martinxj/archive/2004/09/14/42930.html

進程控制常用的一些操作

1、獲取進程的id int main0() {printf ("當前進程 ID %d\n", getpid());printf ("當前父進程:%d\n", getppid());printf ("當前用戶: %d\n", getuid());while (1);return 0; }2、fork 和 vfork之前的博客里有&#xf…

vscode 配置 git (配置、暫存、推送、拉取、免密)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 vscode 中對 git 進行了集成,很多操作只需點擊就能操作,無需寫一些 git 指令。 不過這就需要你對 vscode 進行配…

男女之間應該保留多少隱私

究竟,男女朋友之間,應該保留多少個人隱私? 我覺得,如果各自的隱私太多,那么,很難會相信彼此的愛能有多深濃。然而,如果兩個人沒有半點隱私,而且絕對坦誠。 彼此的行為和思想也沒有絲毫隱瞞的話,這種清白赤誠有如標…

處理bugs心法

1. 前提 第一層:遇到異常首先必須告訴自己,冷靜,不要慌。(一看到Bug就心慌,那么武功就施展不了了) 2. 入門級 第二層:遇到Bug,第一潛意識看輸出異常的信息的(控制臺輸出&…

C語言實現簡單的電子通訊錄2

這兩天學完系統調用和標準IO,之前的通訊錄可以進行一些改進,將數據保存到文件中(圖我這里就不發了)。 原理:每次啟動程序時先從預設文件中以只讀的形式讀取保存的通訊錄信息,然后將讀取到的信息導入到結構體中;每次執…

解決 VS Code 保存時候自動格式化

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 不知道從哪個版本起,VS code 保存會自動格式化。 以前都是altshiftF格式化的,現在一保存就格式化,而…

發布在線文檔【軟件=業務+架構+流程+組織.pptx】

10年的技術工作,軟件這個詞對我來說一點都不陌生,但是當我問自己如何理解軟件的?我卻不知道如何回答。軟件=業務+架構+流程+組織,其中公式是借用軟件產品線工程BAPO的概念&#xff0…

12種食物最養男人 10種食物最養女人 太值得收藏了

據統計,男性10大死因中有4項與飲食有關,包括癌癥、腦血管疾病、心臟病和糖尿病。以下12種食品對男性健康有益,建議男性多多攝取。 男人需要的十種養生食物 No.1西紅柿 西紅柿的酸味能促進胃液分泌,幫助消化蛋白質等&#xff…

ES 基礎

1. ES 基礎一網打盡 1.1 ES定義 ESelaticsearch簡寫, Elasticsearch是一個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。 Elasticsear…

為什么 那么多 前端開發者都想學 Vue.js

根據JavaScript 2017 前端庫狀況調查 Vue.js是開發者最想學的前端庫。我在這里說明一下我為什么認為這也是和你一起通過使用 Vue 構建一個簡單的 App 應用程序的原因。 我最近曾與 Evan You,Chris Fritz,Sarah Drasner,和 Adam Jahr 做了一個…

進程間通信之管道通信

兩個程序之間傳遞數據的一種簡單方法是使用popen和pclose。 #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); popen函數允許一個程序將另一個程序作為新進程來啟動&#xff0c;并可以傳遞數據給它或者通過它接收數據…

vue 各組件 使用 Demo

環境搭建 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 假設你已經通讀vue官方文檔&#xff08;文檔都沒讀一遍&#xff08;至少&#xff09;&#xff0c;那不建議動手擼碼&#xff…

Dropbox推獨立應用,公司估值已達100億美元

摘要&#xff1a;Dropbox剛獲得5億美元的新一輪融資&#xff0c;其估值已高達100億美元&#xff0c;現在又推出針對云服務的獨立應用Carousel&#xff0c;不久之后&#xff0c;還會有應用陸續推出&#xff0c;隨著美國前國務卿賴斯的加盟&#xff0c;Dropbox在云市場的表現異常…

SQL經典面試題(二)

有3個表S&#xff0c;C&#xff0c;SCS&#xff08;SNO&#xff0c;SNAME&#xff09;代表&#xff08;學號&#xff0c;姓名&#xff09; //主鍵&#xff1a;SNO //多個人&#xff0c;多門課 3張表 &#xff0c;SC 關系表C&#xff08;CNO&#xff0c;CNAME&#xff0c;…

進程間通信之信號he信號量

信號的篇幅較少&#xff0c;就把他和信號量放在一起了。先講講他們之間的區別&#xff1a; 1.信號&#xff1a;&#xff08;signal&#xff09;是一種處理異步事件的方式。信號時比較復雜的通信方式&#xff0c;用于通知接受進程有某種事件發生&#xff0c;除了用于進程外&…

開源當自強:我們不是“便宜貨”

之前人們爭相使用開源軟件&#xff0c;無非是因為它便宜、好用、易得&#xff0c;不過根據最新的開源軟件調查顯示&#xff0c;人們使用開源軟件最主要的原因還是看重它的高質量。 成本低是很過公司參與開源項目的最主要原因之一&#xff0c;而現在他們視開源是一條通往創新、省…