本文轉自微信公眾號:機器學習初學者

原創: 機器學習初學者 機器學習初學者 


TensorFlowKerasPytorch是目前深度學習的主要框架,也是入門深度學習必須掌握的三大框架,但是官方文件相對內容較多,初學者往往無從下手。本人從github裡搜到三個非常不錯的學習資源,並對資源目錄進行翻譯,強烈建議初學者下載學習,這些資源包含了大量的程式碼示例(含資料集),個人認為,只要把以上資源執行一次,不懂的地方查官方文件,很快就能理解和運用這三大框架。

 


一、TensorFlow

資源地址:

https://github.com/aymericdamien/TensorFlow-Examples

 

資源介紹:

本資源旨在通過示例輕鬆深入瞭解TensorFlow。 為了便於閱讀,它包括notebook和帶註釋的原始碼。

它適合想要找到關於TensorFlow的清晰簡潔示例的初學者。 除了傳統的“原始”TensorFlow實現,您還可以找到最新的TensorFlow API實踐(例如layers,estimator,dataset, ......)。

最後更新(07/25/2018):新增新示例(GBDT,Word2Vec)和 TF1.9相容性! (TF v1.9 +推薦)。

 

配置環境:

python 3.6以上,TensorFlow 1.8+

 

資源目錄:

0  - 先決條件

  • 機器學習簡介

  • MNIST資料集簡介

     

1  - 簡介

  • Hello World(包含notebook和py原始碼)。非常簡單的例子,學習如何使用TensorFlow列印“hello world”。

  • 基本操作(包含notebook和py原始碼)。一個涵蓋TensorFlow基本操作的簡單示例。

  • TensorFlow Eager API基礎知識(包含notebook和py原始碼)。開始使用TensorFlow的Eager API。

     

2  - 基礎模型

  • 線性迴歸(包含notebook和py原始碼)。使用TensorFlow實現線性迴歸。

  • 線性迴歸(eager api)(包含notebook和py原始碼)。使用TensorFlow的Eager API實現線性迴歸。

  • Logistic迴歸(包含notebook和py原始碼)。使用TensorFlow實現Logistic迴歸。

  • Logistic迴歸(eager api)(包含notebook和py原始碼)。使用TensorFlow的Eager API實現Logistic迴歸。

  • 最近鄰(包含notebook和py原始碼)。使用TensorFlow實現最近鄰演算法。

  • K-Means(包含notebook和py原始碼)。使用TensorFlow構建K-Means分類器。

  • 隨機森林(包含notebook和py原始碼)。使用TensorFlow構建隨機森林分類器。

  • Gradient Boosted Decision Tree(GBDT)(包含notebook和py原始碼)。使用TensorFlow構建梯度提升決策樹(GBDT)。

  • Word2Vec(詞嵌入)(包含notebook和py原始碼)。使用TensorFlow從Wikipedia資料構建詞嵌入模型(Word2Vec)。

     

3  - 神經網路

  • 監督學習部分

  • 簡單神經網路(包含notebook和py原始碼)。構建一個簡單的神經網路(如多層感知器)來對MNIST數字資料集進行分類。 Raw TensorFlow實現。

  • 簡單神經網路(tf.layers / estimator api)(包含notebook和py原始碼)。使用TensorFlow'layers'和'estimator'API構建一個簡單的神經網路(如:Multi-layer Perceptron)來對MNIST數字資料集進行分類。

  • 簡單神經網路(Eager API)(包含notebook和py原始碼)。使用TensorFlow Eager API構建一個簡單的神經網路(如多層感知器)來對MNIST數字資料集進行分類。

  • 卷積神經網路(包含notebook和py原始碼)。構建卷積神經網路以對MNIST數字資料集進行分類。 Raw TensorFlow實現。

  • 卷積神經網路(tf.layers / estimator api)(包含notebook和py原始碼)。使用TensorFlow'layers'和'estimator'API構建卷積神經網路,對MNIST數字資料集進行分類。

  • 遞迴神經網路(LSTM)(包含notebook和py原始碼)。構建遞迴神經網路(LSTM)以對MNIST數字資料集進行分類。

  • 雙向LSTM(包含notebook和py原始碼)。構建雙向遞迴神經網路(LSTM)以對MNIST數字資料集進行分類。

  • 動態LSTM(包含notebook和py原始碼)。構建一個遞迴神經網路(LSTM),執行動態計算以對不同長度的序列進行分類。

 

  • 無監督

  • 自動編碼器(包含notebook和py原始碼)。構建自動編碼器以將影象編碼為較低維度並重新構建它。

  • 變分自動編碼器((包含notebook和py原始碼)。構建變分自動編碼器(VAE),對噪聲進行編碼和生成影象。

  • GAN(Generative Adversarial Networks)(包含notebook和py原始碼)。構建生成對抗網路(GAN)以從噪聲生成影象。

  • DCGAN(Deep Convolutional Generative Adversarial Networks)(包含notebook和py原始碼)。構建深度卷積生成對抗網路(DCGAN)以從噪聲生成影象。

 

4  - 工具

  • 儲存和還原模型(包含notebook和py原始碼)。使用TensorFlow儲存和還原模型。

  • Tensorboard  - 圖形和損失視覺化(包含notebook和py原始碼)。使用Tensorboard視覺化計算圖並繪製損失。

  • Tensorboard  - 高階視覺化(包含notebook和py原始碼)。深入瞭解Tensorboard;視覺化變數,梯度等......

 

5  - 資料管理

  • 構建影象資料集(包含notebook和py原始碼)。使用TensorFlow資料佇列,從影象資料夾或資料集檔案構建您自己的影象資料集。

  • TensorFlow資料集API(包含notebook和py原始碼)。引入TensorFlow資料集API以優化輸入資料管道。

 

6  - 多GPU

  • 多GPU的基本操作(包含notebook和py原始碼)。在TensorFlow中引入多GPU的簡單示例。

  • 在多GPU上訓練神經網路(包含notebook和py原始碼)。一個清晰簡單的TensorFlow實現,用於在多個GPU上訓練卷積神經網路。

 

資料集


二、Keras

資源地址:

https://github.com/erhwenkuo/deep-learning-with-keras-notebooks

 

資源介紹:

這個github的repository主要是ErhWen Kuo在學習Keras的一些記錄及練習。希望在學習過程中發現到一些好的資訊與示例也可以對想要學習使用Keras來解決問題的同學帶來幫助。這些notebooks主要是使用Python 3.6與Keras 2.1.1版本跑在一臺配置Nivida 1080Ti的Windows 10的機臺所產生的結果,但有些部份會參雜一些Tensorflow與其它的函式庫的介紹。

 

配置環境:

python 3.6以上,Keras 2.1.1

 

資源目錄:

0.圖象資料集/工具介紹

  • 0.0: COCO API解說與簡單示例

  • 0.1:土炮自制撲克牌圖象資料集

  • 0.2:使用Pillow來進行影象處理

 

1.Keras API示例

  • 1.0:使用影象增強來進行深度學習

  • 1.1:如何使用Keras函式式API進行深度學習

  • 1.2:從零開始構建VGG網路來學習Keras

  • 1.3:使用預訓練的模型來分類照片中的物體

  • 1.4:使用影象增強來訓練小資料集

  • 1.5:使用預先訓練的卷積網路模型

  • 1.6:卷積網路模型學習到什麼的視覺化

  • 1.7:構建自動編碼器(Autoencoder)

  • 1.8:序列到序列(Seq-to-Seq)學習介紹

  • 1.9: One-hot編碼工具程式介紹

  • 1.10:迴圈神經網路(RNN)介紹

  • 1.11: LSTM的返回序列和返回狀態之間的區別

  • 1.12:用LSTM來學習英文字母表順序

 

2.影象分類(Image Classification)

  • 2.0: Julia(Chars74K)字母影象分類

  • 2.1:交通標誌影象分類

  • 2.2:辛普森卡通影象角色分類

  • 2.3:時尚服飾影象分類

  • 2.4:人臉關鍵點辨識

  • 2.5: Captcha驗證碼分類

  • 2.6: Mnist手寫影象分類(MLP)

  • 2.7: Mnist手寫影象分類(CNN)

     

3.目標檢測(Object Recognition)

  • 3.0: YOLO目標檢測演算法概念與介紹

  • 3.1: YOLOv2目標檢測示例

  • 3.2:浣熊(Racoon)檢測-YOLOv2模型訓練與調整

  • 3.3:浣熊(Racoon)檢測-YOLOv2模型的使用

  • 3.4:袋鼠(Kangaroo)檢測-YOLOv2模型訓練與調整

  • 3.5:雙手(Hands)檢測-YOLOv2模型訓練與調整

  • 3.6:辛普森卡通圖象角色(Simpson)檢測-YOLOv2模型訓練與調整

  • 3.7: MS COCO圖象檢測-YOLOv2模型訓練與調整

     

4.物體分割(Object Segmentation)

 

5.關鍵點檢測(Keypoint Detection)

 

6.圖象標題(Image Caption)

 

7.人臉檢測識別(Face Detection/Recognition)

  • 7.0:人臉檢測- OpenCV(Haar特徵分類器)

  • 7.1:人臉檢測- MTCNN(Multi-task Cascaded Convolutional Networks)

  • 7.2:人臉識別-臉部檢測、對齊&裁剪

  • 7.3:人臉識別-人臉部特徵提取&人臉分類器

  • 7.4:人臉識別-轉換、對齊、裁剪、特徵提取與比對

  • 7.5:臉部關鍵點檢測(dlib)

  • 7.6:頭部姿態(Head pose)估計(dlib)

     

8.自然語言處理(Natural Language Processing)

  • 8.0:詞嵌入(word embeddings)介紹

  • 8.1:使用結巴(jieba)進行中文分詞

  • 8.2: Word2vec詞嵌入(word embeddings)的基本概念

  • 8.3:使用結巴(jieba)進行歌詞分析

  • 8.4:使用gensim訓練中文詞向量(word2vec)


三、Pytorch

資源地址:

https://github.com/yunjey/pytorch-tutorial

 

資源介紹:

這個資源為深度學習研究人員提供了學習PyTorch的教程程式碼大多數模型都使用少於30行程式碼實現。 在開始本教程之前,建議先看完Pytorch官方教程。

 

配置環境:

python 2.7或者3.5以上,pytorch 0.4

 

資源目錄:

1.基礎知識

  • PyTorch基礎知識

  • 線性迴歸

  • Logistic迴歸

  • 前饋神經網路

     

2.中級

  • 卷積神經網路

  • 深度殘差網路

  • 遞迴神經網路

  • 雙向遞迴神經網路

  • 語言模型(RNN-LM)

     

3.高階

  • 生成性對抗網路

  • 變分自動編碼器

  • 神經風格轉移

  • 影象字幕(CNN-RNN)

     

4.工具

  • PyTorch中的TensorBoard


總結

TensorFlowKerasPytorch是目前深度學習的主要框架,也是入門深度學習必須掌握的三大框架,但是官方文件相對內容較多,初學者往往無從下手。本人從github裡搜到三個非常不錯的學習資源,並對資源目錄進行翻譯,強烈建議初學者下載學習,這些資源包含了大量的程式碼示例(含資料集),個人認為,只要把以上資源執行一次,不懂的地方查官方文件,很快就能理解和運用這三大框架。