TensorFlow分佈式訓練MNIST分類器

http://c.biancheng.net/view/2004.htmlhtml

本節以分佈式方式訓練完整的 MNIST 分類器。git

該案例受到下面博客文章的啓發:http://ischlag.github.io/2016/06/12/async-distributed-tensorflow/,運行在 TensorFlow 1.2 上的代碼能夠在網址https://github.com/ischlag/distributed-tensorflow-example上找到。github

注意,這個案例基於上一節,因此按順序閱讀可能會很方便。服務器

具體作法

  1. 導入一些標準模塊並定義運行計算的 TensorFlow 集羣,而後爲指定任務啓動服務:


     
  2. 讀取 MNIST 數據並定義用於訓練的超參數:


     
  3. 檢查角色是參數服務器仍是 worker,若是是 worker 就定義一個簡單的稠密神經網絡,定義一個優化器以及用於評估分類器的度量(例如精確度):


     
  4. 啓動一個監督器做爲分佈式設置的主機,主機是管理集羣其他部分的機器。會話由主機維護,關鍵指令是 sv=tf.train.Supervisor(is_chief=(FLAGS.task_index==0))。另外,經過 prepare_or_wait_for_session(server.target),監督器將等待模型投入使用。請注意,每一個 worker 將處理不一樣的批量模型,而後將最終的模型提供給主機:

這個案例描述了一個分佈式 MNIST 分類器的示例,在這個例子中,TensorFlow 容許定義一個三臺機器的集羣,一個用做參數服務器,另外兩個用做獨立批量訓練數據的 worker。網絡

相關文章
相關標籤/搜索