斯坦福大學-自然語言處理與深度學習(CS224n) 筆記 第七課 tensorflow教程

課程概要

1、tensorflow介紹
2、代碼展示

一、tensorflow介紹

1、什麼是tensorflow?

  • 針對數量計算的使用數據流圖流程圖開源軟件庫
  • 由Google Brain團隊開發的機器學習的研究
  • Tensorflow 是表現機器學習算法的接口,以及執行算法的執行器。
    在這裏插入圖片描述

2、編程模型

主要思想:將數量計算表現爲圖(graph)

  • 圖節點表示是針對輸入的操作(operation)以及輸出
  • 圖邊表示節點之間流動的張量(tensor)
    在這裏插入圖片描述
  • 變量(variable)是狀態節點,輸出他們自己的值。如b,W
  • 佔位節點(Placeholders)是在執行的時候會被喂入值的節點。如x
  • 數學運算
    • MatMul:兩個矩陣的值相乘 Multiply two matrix values.
    • Add: 對應元素相加
    • ReLU: 對應元素的激活函數
      在這裏插入圖片描述
      對應代碼:
  • 創建權重,並進行初始化W~Uniform(-1,1);b=0
  • 創建x的輸入佔位節點(placeholder):m*784的輸入矩陣
  • 建立流程圖(flow graph)

代碼運行時,會自動在目前圖(graph)中自動生成新的節點。
在這裏插入圖片描述

3、節點運行

在定義好了節點以後,我們可以爲圖部署一個會話(session):和目前的執行環境相聯繫。
在這裏插入圖片描述
在代碼上的體現是sess.run(fetches,feeds)

  • Fetches:一系列圖節點,返回這些節點的輸出
  • feeds:從圖節點字典映射到具體的值。
    在這裏插入圖片描述

4、模型訓練

  • 定義損失:建立一個placeholder來表示標籤(labels),基於標籤和預測來構建損失節點。

在這裏插入圖片描述- 梯度計算:通過下面第一行的代碼,我們可以把優化運算加入到運算圖中,同時指定損失函數是cross_entropy,學習率是0.5。除了這種優化方法以外,還有其他的優化器。這些優化器可以自動後饋計算參數的梯度。

在這裏插入圖片描述
在這裏插入圖片描述

  • 訓練模型的步驟
    • 創建會話(session)
    • 建立訓練計劃
    • 運行優化器 train_step
      在這裏插入圖片描述

5、變量共享問題

有的時候我們會使用很多個GPU來訓練神經網絡,這個時候就涉及到變量共享的問題。
在這裏插入圖片描述有一種方法是在一開始就建立變量字典,用一些字符串來代表變量,但是不利於封裝。
在這裏插入圖片描述解決方法是建立一個變量層(variable scope)

  • tf.variable_scope() :提供一個層級來避免命名衝突
  • tf.get_variable() :當已經存在該變量的時候,就從命名層獲取該變量;當不存在時就創建該變量
    在這裏插入圖片描述

6、簡單總結

  • 構建圖
    • 前饋/預測
    • 優化(梯度和train_step運算)
  • 初始化一個會話
  • 使用session.run(train_step, feed_dict)訓練

二、代碼展示

1、以線性迴歸爲例

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述繪製出來的圖像
在這裏插入圖片描述

2、skip-gram

在這裏插入圖片描述在這裏插入圖片描述計算結果
在這裏插入圖片描述

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