GCP datalab – MNIST with Tensorflow

by allenlu2007

 

前文 說明用 GCP + tensorflow 解決 MNIST 問題。 

Solution 1: Softmax classifier.  Accuracy 92%.  Very bad.

Solution 2: Neural network.  Accuracy 99.2%.   Pretty good.

 

不過前文是用 core/project (Ubuntu OS or Debian OS) + Anaconda (python, numpy, matplotlib) + tensorflow.

一個更簡單的方法是直接用 GCP + cloud shell + datalab (default jupyter notebook) + tensorflow.

好處是 (1) 不需要用 Anaconda install python, datalab by default 包含 python, numpy, matplotlib, tensorflow.  不過沒有包含 caffe, scikit-learn packages. 需要自己再 install. (2) datalab by default 使用 jupyter notebook.  可以做出圖文並茂的 notebook.  程序如下。

 

Step 0:  GCP cloud shell to select core/project 

Step 1:  GP cloud shell to create datalab instance (i.e. VM).  

也就是說 datalab 是一個 VM.  這可以在 Google Cloud Platform dashboard 的 VM instances 看到。

> datalab create instance-name (e.g.  datalab create jupyter-trial)

如果之後要 delete datalab VM!   > datalab delete instance-name

 

Step 2: 比較特別的是 datalab (jupyter notebook) VM 使用方式似乎是用為 server.  需要再開 web preview browser to connect to the datalab VM!!  

所有的 notebook 都是存在 web preview browser.  這造成兩個問題: (1) web preview browser 常常斷線,怎麼辦?(2) 如何保存或備份 notebook?

(1) 只要 datalab VM 存在(可以在 GCP dashboard 看到), 可以用

> datalab connect instance-name  重新讓 web preview browser 連回 datalab VM.

(2) 終於找到 jupyter notebook 放在哪裡。如果是是在 VM instance (e.g. jupyter-trial) 內: 

/mnt/disks/datalab-pd/content/datalab/notebooks

Reference: https://cloud.google.com/datalab/docs/how-to/working-with-notebooks  (path is wrong!)

如果是在 cloud shell, 則是在:

datalab@instance-name:/mnt/disks/datalab-pd/content/datalab/notebooks

不過 access 的方式需要用 gcloud command.  舉例而言 copy from datalab VM to cloud shell.

> gcloud compute copy-files datalab@jupyter-trial:/mnt/disks/datalab-pd/content/datalab/notebooks jupyter-trial-notebooks 

上述 command copy datalab VM 上的 notebooks folder copy 到 cloud 的 jupyter-trial-notebooks folder.

 

另外 GCP 自動備份每一個 project 的所有 files in zip format.

$ gsutil ls gs://compute-engine-166715/datalab-backups/asia-east1-a/jupyter-trial/content/

gs://compute-engine-166715/datalab-backups/asia-east1-a/jupyter-trial/content/daily-20170616151645

gs://compute-engine-166715/datalab-backups/asia-east1-a/jupyter-trial/content/daily-20170617152646

gs://compute-engine-166715/datalab-backups/asia-east1-a/jupyter-trial/content/hourly-20170618021646

所以不用再備份 notebook. 只要 copy (用 gsutil cp gs://….  就可).

 

另外還有 Storage API and BigQuery API, 之後再研究。

 

General question: 如何 visualize convergence? 使用Use tensorBoard.  TBA

 

Step 3:  MNIST using softmax classifier on Google CloudDatalab

Reference: https://www.tensorflow.org/get_started/mnist/beginners

NewImage

92% 的準確度並不好,其實是比較差。

 

Step 4:  MNIST using multi-layer neural network classifier on Google CloudDatalab

Reference: https://www.tensorflow.org/get_started/mnist/pros

第一階段是建立 model.

NewImage

第二階段是 train and evaluate the model.

NewImage

test accuracy 0.9855, or 98.6%

如何監看收斂情況

Advertisements