1-15,學習筆記

1.自己敲了一個簡單的gan

生成minist手寫數字

對gan的一些體會:

           ①gan模型,實際上是一個“無監督學習”的過程

                                i. 因傳統的機器學習模型實際上都指定了模型的分佈(除了深度學習),然後在人的監督下去學習這個分佈。

                                 而gan卻可以隱式的去自己學習這個分佈(因爲gan只是一個讓生成結果趨向於真的過程,具體的模型分佈是             沒有定義的)。

                                 ii.並且gan可以隱式的去學習合適的損失函數。

           ②gan模型,實際上就是一個“相互博弈”的過程

                               

                                這是gan原始論文所用的loss函數:

                                

                                最後的結果,將會是D.fake也會趨近於1,而造成梯度消失,最後達到納什均衡

  一些代碼上的新知識:

           ①logits不是label,而是“模型輸出的結果”

           ②session.run(),

           

                      i.run的時候需要注意,把這個run的過程所需要的所有的placeholder都給填進去

                     ii.run的時候可以看到,run了一個list,這實際上代表的是列表中的函數同時執行,也就是在同一輪執行

                     如果寫成sess.run(d_solver)

                                     sess.run(d_loss)

                                這代表的實際上,運行了兩輪,d_loss實際上得到的是第二輪的

                     iii.爲啥不只運行一個D_solver呢?因爲你需要取得loss的值,但是D_solver的返回值中沒有loss

                     iv.run的返回值:是列表中每一個函數的返回值,圖中的_與D_loss_curr就分別是是D_solver和D_loss的返回值

              ③tf.log()

                     這個函數是對矩陣中每一個元素取ln,如a=[e,e,e²],那tf.log(a)=[1,1,2],保持原來的維度

              ③tf.reduce_mean()

                     終於有了一定的瞭解,

                     reduce_mean(),常常不用axis這個參數,因爲如果這個參數不用,那reduce_mean()默認會對矩陣中所有元素的加a                     和求平均值,如上圖中的代碼,結果是[8,7,5,0.6,0.8……],的可以說是“每一張G產生的圖片判斷爲真的概率和                            label=1之間的距離”,然後把這些距離取平均,這實際上是一個“式子”,即如(a1+a2+a3+……)/n,而每一個a實際上又                   對應了一個含有未知數的式子,因爲TensorFlow中的adam優化器傳入的實際上是“一個數loss”而非一個矩陣,故取                  reduce_mean之後,便於去求梯度。

用了簡單的全連接神經網絡,具體代碼見

https://blog.csdn.net/stalbo/article/details/79356739

 

確定了學習目標:

              ①先看完deep learning with python。好好學一下框架

              ②學《21個項目》,掌握tf

              ③把知識圖譜的課看完,同時多敲一些gan的實例

              ④爭取把圖譜補全的那個論文整完

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章