2016/1/9

Vagrant 1.81版新增 box 異常,抽換 curl.exe 即可解決

Vagrant 1.81版新增 box 異常

例如:下載 ubuntu 14 with docker 的指令應該如下

vagrant box add ubuntu14_docker https://github.com/jose-lpa/packer-ubuntu_14.04/releases/download/v2.0/ubuntu-14.04.box

會吐出錯誤訊息,查詢後發現應該是 curl 異常的關係

我到這個網站 http://winampplugins.co.uk/curl/
因為我是 win10 所以下載這個 curl 7.46.0 - 64-bit (Windows Vista and newer)

下載後,將 curl.exe 置換原本在 c:\HashiCorp\Vagrant\embedded\bin\ 目錄底下的curl.exe

OK ! 打完收工 … 可以繼續開發工作囉

2016/1/4

PC 上搭建 Linux系統可簡化許多情境

思路:
  • 硬體不值錢,DRAM很便宜,新購置的PC直接裝到 32GB - 64GB 並不算高價
    • 反過來說,如果你的電腦是10年前的,然後記憶體只有2GB ...那就無法使用此法
  • Windows 上的 Docker 很難用,我已經太多次使用到暴走的經驗了
  • 有些在 mac / windows 跑得好好的程式,在windows上就是會吐出錯誤訊息
    • 例如:utf8純文字處理在windows上真的很麻煩,我寧願先在linux處理完後,轉存在xml/xlxs後再由接下處理
應用情境:
  • 在 windows 上使用 R 的朋友往往會遇到編碼處理的問題,我建議直接在Windows上搭建 VM Ubuntu 然後使用Docker上的 Rstudio Server,使用起來與桌面版的Rstudio完全沒有什麼差異… 要進行網路爬蟲大量資料捉取時也很方便
  • Windwos上的Python總是出現出一些奇怪的錯誤?
  • 公司的電腦只適合做公司事務,自我提升的進修學習是不適合使用公司資源進行,仍然有自建計算資源的需求;
前提要件:
  • 在 PC 的 Windows 上安裝vagrant 與 virtual box
  • Windwos 上的終端機可選這一套mobaxterm ,可儲存ssh登入的帳號與密碼很方便 http://mobaxterm.mobatek.net/
  • 設定 Windwos -- VM 共享資料夾
  • 在 VM 上使用Docker
細節:
  • vagrant 簡化 Linux 安裝過程,各式linux可快速建置;請參考 http://www.vagrantbox.es/
    • 只要以下3個指令就搞定囉
      • vagrant box add 自定義名稱 映象檔來源網址
      • vagrant init 自定義名稱
      • vagrant up
      • 建好後的 VM 預設的帳號與密碼 vagrant / vagrant
  • 在 VM 上再使用 Docker,若有使用 Port 記得將Virtual Box的Port也要打開
  • 資料夾共享設定:
    • 在Windows的 VirtualBox GUI設定資料夾,可將「自動掛載」、「設為永久」都勾選
      • 例如:分享了一個windows上的資料夾名稱叫做 wiki
    • VM Linux 設定:
      • 登入終端機後執行 sudo mount -t vboxsf wiki /home/vagrant/wiki
提醒:
  • 執行一些作業時間較久的作業時,請將 VM 記憶體調高
  • 能用錢解決的事情真的是小事… 請把節省下來的時間拿去學習更有價值的東西吧

2016/1/2

tensorflow 初學者筆記

身為一個 deep learning 的初學者所做的一些筆記。

建議可由 Google Brain 邱中鎮博士的投影片入門

http://www.slideshare.net/tw_dsconf/tensorflow-tutorial 這份投影片中最由價值的部份,是其對於 tensorflow 編寫的順序做了詳細的介紹; 這是你在官網中沒有辦法找到的詳細資料…

相對於傳統的統計學手法,例如:迴歸模型。 我們常常可以將資料與模型直接綁在一起;
例如:在R中要計算一個簡單的迴歸模型。

x <- rnorm(100)
y <- rnorm(100)
lm(y~x)

幾行就解決了,但是如果同樣的東西用 tensorflow 來處理的話: 可以參考這篇: https://github.com/yamitzky/tensorflow-practice/blob/master/Linear%20Regression%20by%20TensorFlow.ipynb
行數似乎增加了不少??
結合了邱博士的說明,我簡單將 tensorflow , 可以拆解為2個概念
  • 模型定義(modeling):抽象化,此階段完全是紙上談兵
    • 輸入項、輸出項的定義(tensorflow的術語叫:placehold)
    • 模型建構(隱藏層)
      • 定義 Variable (例:權重、誤差項)
      • 定義網路 (例:y = W*X+b)
    • 定義Loss函數
    • 最佳化:讓Loss函數最小化(Tensorflow 內建 Gradient Desecnt 等,可直接叫用)

  • 執行(session階段):戰爭期:計算資源投入(CPU/GPU)、實際資料投入
    • 要跑幾次去達成最佳化(Iterative Update)
    • 訓練資料讀入( feed)
讓模型定義更加抽象與獨立,是為了後續如果要建立不同模型時(例:3層模型變成30層)、定義不同的Loss函數、使用不同最佳化手法時,可以與原始資料完全隔離,不會受到影響
另外
參考連結:
地雷區:
  • tensorflow 目前對 python3 支援還不夠,例如圖示化的工具會有問題,請愛用python2進行學習

  • tensorflow 也提供了圖示化的方式,不過不建議初學者花太多時間在此;這個功能比較適合對於模型有完整瞭解後,要強化的情形;一般初學者,應該是先設定好自己的目標(想做的事),去找適合的模型(例:不要太多層的)、適合的資料、適合的LOSS函數、適合的最佳化手法,然後行有餘力把用到的數學都k一遍後,再去看圖示化的工具吧…

  • 日本網友測試如果在windows系統用docker搭建tensorflow, 只要遇上較大的資料集,就必定當機 … 想要學習的話,建議還是搭建個VM 或直接使用 Linux系統