(黃獻德) Hsien-De Huang | E-Mail:TonTon (at) TWMAN.ORG | TonTon (痛痛)
Malware Analysis Network in Taiwan (MiT) | 惡意程式分析網在台灣 (抬丸郎)
Deep Learning (深度學習), Malware Analysis (惡意程式分析), Ontology (知識本體)
Android Reverse Engineering (Android 逆向工程), Type-2 Fuzzy Logic (第二型模糊邏輯)

ONE PIECE (海賊王)

ONE PIECE (海賊王)

2016年5月20日

[教學] Install TensorFlow with Docker on Centos 6.6 x86_64



這篇主要說明的是 深度學習 裡用安裝在 CentoS 上的 Docker 版的 TensorFlow 來進行相關的 安裝 使用 教學

深度學習 的 TensorFlow & Deep Learning 的源碼 安裝 操作 教學

如何用深度学习识别网络欺诈?

當然你也可以看看 Freebuf上下的這兩篇文章

应用深度学习与大数据分析识别诈骗(骚扰)电话

最近最夯的技術我想就以下幾個吧: ElasticSearch, Docker, Deep Learning (Tensorflow) 了

http://blog.twman.org/search/label/技術分享
嗯 ! 話說來天龍國這2年多 (以前是平均10篇) 整個沒啥時間更不方便寫平常研究發現的技術筆記 ... (我想我比較屬於研究新東西然後整合,寫 code 的話倒是蠻弱;再說我也不像更沒說過我寫 code 多強 !)

重點回顧!iThome Container Summit 筆記大整理
剛好好一陣子之前 iThome 辦了個會議,然後有人整理了很詳盡的資料 ... 



嗯 ... docker 有多紅你看連 CentOS 官網都有寫就知道了
安裝的過程實在是非常的簡單 ... yum install docker-io -y 就能搞定 !


有興趣瞭解更深入的倒是可以看看這篇網誌 ... Docker 實作入門:
http://puremonkey2010.blogspot.tw/2015/04/docker.html


安裝好之後就直接 service docker start 就好
https://docs.docker.com/engine/installation/linux/centos/



其實也可以照 docker 官網寫的來修改 repo 來安裝 ... 感覺更快速 !



這裡會記錄 docker 的命名、掛載硬碟、橋接網路、跳開持續運作 這樣




首先問題是 docker 上想要走自己的 bridge 到外網,這個就是要自定義橋接器;類似的文章過去寫過幾次 ...

CentOS 6.4 x64之DRBL環境下的Clients做Bridge再安裝OpenNebula 4.2.0管理 KVM: http://blog.twman.org/2013/08/OpenNebula-4.2.0.html


DRBL Client 上的 KVM 如何做 Bridge: http://blog.twman.org/2013/04/DRBL-Bridge.html

原本以為得要花點時間瞭解 ... 想不到居然都已經有很簡單的作法了

自定義橋接器

多臺物理主機之間的容器互聯(暴露容器到真實網路中)https://philipzheng.gitbooks.io/docker_practice/content/cases/container_connect.html

# service docker stop (把 docker 停用)
# ip link set dev docker0 down (把 docker0 這個 bridge 關掉)
# brctl delbr docker0 (把 docker0 這個 bridge 刪掉)
# ip link set dev br0 up (把你建的 bridge 啟用)
# ip addr show br0 (檢查一下)
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker (寫入設定檔)
# service docker start (啟用你的 docker)


嗯 ! 目前還不知道怎樣才可以重開機後還是這設定 ! 囧



接著是像上圖所示,想要把 host 主機的 資料夾給 docker 來 mount 方便共享一些檔案 ... 想不到也是非常的簡單 !


只要在 docker run 裡用 -v 指令將本地端的 ~/XXX 目錄掛載到 container 裡的 /XXX 使用,好讓 container 裡面可以存取到外面的檔案時 !! 要注意的是像我的範例 mount 的很細整串指令過長,所以要用 \ 來換行執行 !

docker run -it -v ~/XXX:/XXX test /bin/bash

我的例子就像這樣,直接把 /Research/CMCM/ 掛到 docker 裡的 /CMCM/


# docker run -it -v /Research/CMCM/:/CMCM/ --name cmcm b.gcr.io/tensorflow/tensorflow

如果是要讓 docker 離開後持續運作那就是按 CTRL + P & CTRL + Q

這樣你離開後用 docker ps 就可以看到仍舊運行中了 !

最後的最後,就來看一下怎樣直接使用 tensorflow 的 docker 吧 !!!
其實這個在官網也都有寫就是了 ! Orz ... 而且早早就有中文版 !
而也是因為要玩 tensorflow 才順手玩了 docker 啊 ! XD

https://www.tensorflow.org/versions/r0.8/get_started/os_setup.html#docker-installation


http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/os_setup.html

指令其實也是超簡單: docker run -it b.gcr.io/tensorflow/tensorflow

至於整個 tensorflow 裡的關鍵概念 Deep Learning 中的 Convolutional Neural Network (卷積類神經網路) 網路上已經非常多的介紹了 ...

Deep Learning 簡介: http://blog.csdn.net/u010555688/article/details/24438059
Tensorflow 學習筆記: http://www.jeyzhang.com/tensorflow-learning-notes.html
http://blog.csdn.net/yc461515457/article/details/50498266
http://www.cnblogs.com/tornadomeet/category/497607.html

TensorFlow在图像识别中的应用: http://www.csdn.net/article/2015-12-16/2826496

當然,除了官網以外,這個也是不能錯過的,而且裡面不少 model 是做好的了哦 ! https://github.com/tensorflow/ 而最快上手的方法就是馬上讀這兩篇了 ...

Image Recognition
https://www.tensorflow.org/versions/master/tutorials/image_recognition/index.html

How to Retrain Inception's Final Layer for New Categories
https://www.tensorflow.org/versions/master/how_tos/image_retraining/index.html


這篇的原理主要是這樣: 遷移學習(transfer learning)的思想是人們若是擅長解決一類任務,那就應該能​​遷移其中的理解內容,用它來解決另一類相關的問題。實現遷移學習的方法之一就是移除網絡的最後一層分類層,並且提取CNN的倒數第二層。但是不要忘記,如果可以還是乖乖的把原理搞懂吧 ! 至少我花了不少時間在看,總算是略懂了,剩的就是再繼續花時間深入了 !

er ? 這樣也想要騙流量 ? 當然不是咩 ... 當然有用 tensorflow 做了點東西試試水溫啦 ... 如果想再深入自己玩一玩可以參考我之後的另一篇文章

TensorFlow & Deep Learning : http://blog.twman.org/2016/06/tensorflow.html



37th IEEE Symposium on Security and Privacy 2016
Adaptive Data-Driven and Region-Aware Detection for Deceptive Advertising

http://blog.twman.org/2016/05/IEEESP2016.html

還另外硬是把之前玩過的 IRMA 跟 Elasticsearch 整合成 PoC 來 Demo
這兩個東西的安裝操作就等有空再來細說了 !





最後,長久以來,我也知道不少人跟我抱怨過抬丸郎實在是非常的難安裝設定 ... 特別是這兩篇中英文說明看完整個霧殺殺 ... 我也想過要做自動安裝光碟 ... 不過考量不確定硬體規格 (畢竟不是綁硬體規格的產品) 以及相關的操作熟練度 ... 我還是覺得一定要親手自己做過比較實在 ... 


之後若有空再用 docker 製作一個 抬丸郎 的 Server 端 image 吧 !
 https://hub.docker.com/r/tontonhuang/mit.twman/
但是就目前所查到的資料來說 ... 似乎還不能把 windows 做成一個 docker image 來快速執行

Installation on Windows
https://docs.docker.com/v1.8/installation/windows/

在Windows下使用boot2docker
https://joshhu.gitbooks.io/docker_theory_install/content/DockerBible/mac_oswindowsboot2docker.html

一般而言用 windows docker 來 google 時都會找到像上面的文章,就是讓你可以在 windows 上操作 docker,而不是讓你把 windows 做成 docker images ... 這點跟之前在搜尋 Android 時感覺是相同的結果 ! 特別的是通常會看到這一句話 ! 重點不在boot2docker,也不推薦使用,如果一定要在Windows/Mac下使用Docker,還是安裝一個 Hypervisor,再下載本書專用的VM,或自行安裝Ubuntu,再正式安裝Docker比較方便。

=== 最後是嘗試在自己機器上裝 tensorflow 的錯誤訊息: Orz ===
因為就是因為不想再一直修正這些問題,才決定使用 docker 然後順手記錄下來這篇的 !

python安装pip
http://jingyan.baidu.com/article/e52e3615aba39640c60c51c3.html

https://pypi.python.org/pypi/pip
https://pypi.python.org/pypi/distribute/0.6.49

Python easy_install 遇到“ImportError: No module named pkg_resources”错误
http://blog.csdn.net/zachaway/article/details/20618435

解决libc.so.6: version `GLIBC_2.14' not found问题
http://blog.csdn.net/cpplang/article/details/8462768

Glibc 2.8 && 2.11.2 编译
http://blog.chinaunix.net/uid-20648944-id-94836.html
http://www.gnu.org/software/libc/download.html

https://www.cs.cmu.edu/~ymiao/pdnntk.html
http://deeplearning.net/software/theano/install_centos6.html#install-centos6