深度學習研究草稿筆記(1)

2021-08-07 02:44:08 字數 2641 閱讀 9840

from tensorflow.models.rnn import rnn改為

import tensorflow.contrib.rnn as rnn

rnn.rnn(cell, inputs, initial_state=self._initial_state)改為

rnn.static_rnn(cell, inputs, initial_state=self._initial_state)

tf.reshape(tf.concat(outputs,1), [-1, size])。

reshape中-1表示該維度的尺寸是從其它維度推算出來。

concat表示沿指定的維度重新拼接矩陣。

t1 = [[1, 2, 3], [4, 5, 6]]

t2 = [[7, 8, 9], [10, 11, 12]]

tf.concat([t1, t2], 0) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

tf.concat([t1, t2], 1) # [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]

state = m.initial_state.eval()

tf.session().run() 與 tensor.eval():假設 x 為 tf 下的乙個 tensor 物件,t.eval() 執行的動作就是 tf.session().run(t) 。

import tensorflow as tf

x = tf.constant([5.])

print(tf.session().run(x))

with tf.session():

print(x.eval())

2.1 2017820前

2.2 lstm介紹的部落格

if is_training and config.keep_prob < 1: # 在外面包裹一層dropout

lstm_cell = tf.nn

lstm_cell, output_keep_prob=config.keep_prob)

所謂dropout,就是指網路中每個單元在每次有資料流入時以一定的概率(keep prob)正常工作,否則輸出0值。這是是一種有效的正則化方法,可以有效防止過擬合。在rnn中使用dropout的方法和cnn不同。

在rnn中進行dropout時,對於rnn的部分不進行dropout,也就是說從t-1時候的狀態傳遞到t時刻進行計算時,這個中間不進行memory的dropout;僅在同乙個t時刻中,多層cell之間傳遞資訊的時候進行dropout,如下圖所示:

上圖中,t-2時刻的輸入xt−2首先傳入第一層cell,這個過程有dropout,但是從t−2時刻的第一層cell傳到t−1,t,t+1的第一層cell這個中間都不進行dropout。再從t+1時候的第一層cell向同一時刻內後續的cell傳遞時,這之間又有dropout了。

4.2 梯度修剪

tf.clip_by_global_norm ,修正梯度值,用於控制梯度**的問題。梯度**和梯度瀰散的原因一樣,都是因為鏈式法則求導的關係,導致梯度的指數級衰減。為了避免梯度**,需要對梯度進行修剪。 li

c=li

t∗nc

max(

nc,n

g)ng

=∑i(

lit)

2−−−

−−−−

√ 進一步上式可寫為,可以看出大於nc就開始修剪: li

c={l

it,(

ng<=nc

)lit

∗ncn

g,(n

g>nc

)ng=

∑i(l

it)2

−−−−

−−−√

其實乙個in-graph就是模型並行,將模型中不同節點分布式地執行;between-graph就是資料並行,同時訓練多個batch的資料。要針對神經網路結構來設計,模型並行實現難度較大,而且需要網路中天然存在很多可以並行的節點。因此一般用資料並行的比較多。

會整合越來越多的contrib模組,新增很多方便的上層介面,支援更多的語言繫結。同時新推出的xla(jit編譯器),fold(dynamics batching)都是未來的大方向。

xla會對幾個層疊的操作進行jit編譯。cuda是一門語言,cudnn是深度學習的庫,使用cuda加速也要看是怎麼使用它加速,是一層計算執行一次,還是把幾層的計算合併在一起執行,xla做的就是這個,將一些簡單的操作編譯合併成乙個操作。此前tensorflow訓練mlp等網路較慢,使用xla後有。

黃文堅: google內部非常多team在使用tensorflow,比如搜尋、郵件、語音、機器翻譯等等。資料越大,深度學習效果越好,而支援分布式的tensorflow就能發揮越大的作用。 6個月前

唐源terry: 應用非常廣的,谷歌已經在很多專案上用了tensorflow,比如說youtube watch next,還有很多研究型的專案,谷歌deepmind以後所有的研究都會使用這個框架。如果對某段**好奇,可以去參考參考源**學習學習,很多的設計都是經過內部各種專案和使用者的千錘百鍊。

深度學習筆記(1)

4深度學習基礎 5流程6應用場景 7參考文獻 最近學習深度學習的基礎,這裡主要是將一些了解的概念和資料做了一下總結,方便查閱。最近隨著人工智慧這個概念的發展,並且作為國家戰略發展方向,機器學習,深度學習的概念也變得很火,許許多多的程式設計師都開始往這個方向發展,不過,還需要一些基礎才行。深度學習的概...

深度學習筆記(1)

深度學習是機器學習的分支,要學深度學習,首先要知道機器學習。1 模型是機器學習的最終輸出結果。2 機器學習是依賴模型自身獲得引數而非依賴人,通過訓練資料去找模型解決問題。3 針對某類問題,如果人能夠很容易地解決,那我們直接使用大腦中解決辦法所遵循的規則無非是極好的,難的是如何把這些規則抽象為計算機能...

深度學習筆記總結 1

針對深度學習基礎部分,有必要惡補一些吳恩達的深度學習課程,其實晚上有很多總結和筆記,本系列文章是針對黃海廣大佬整理的 深度學習課程筆記 v5.47 的總結和自己的理解,以便加深印象和複習。下面是邏輯回歸的輸出函式 損失函式又叫做誤差函式,用來衡量演算法的運 況,loss function 通過這個?...