1. 程式人生 > >tensorflow 之 bazel安裝 & 使用

tensorflow 之 bazel安裝 & 使用

目錄:

1,機器學習 & MR

深度學習在推薦領域的應用 

2,tensorflow 安轉與使用

3,工具安裝

4, 工具包的使用

XGboost & LibLinear (git)


寫在文章前面:

當一個人從一個領域跨到另一個領域的時候會面臨很大的改變,理論不同了,方法變換了,遇到這樣挑戰的時候,很多人都需要長時間去適應和習慣;這種領域的轉換其實有三種,一種是理論的改變,一種是方法論的改變,另一種,則是理論和方法論都發生了改變。

1,方法論的變化,重要的應對在於做,多做,多總結,從熟悉到習慣,從習慣到精通;

2,理論的變化,重要的應對在於悟,多想,多問自己為什麼,嘗試內心的突破,打破自己既有的思維桎梏。

3,有時候覺得方法論更重要,那是因為自己對工具的使用還不熟練,當對工具使用熟練後,會覺得理論更重要,但是在接觸到更深的理論後發現,還有更多的工具需要掌握,於是方法論又變得重要,總之,人生就是在知和行中間不斷的震盪上行~~~。

扯遠了,收回來


0,前言:一些相關連線

http://www.cnblogs.com/Jack47/p/install-bazel-on-redhat-enterprise-5.html (彎路,bazel需要JDK8以上支援,裡面很雜)

https://github.com/bazelbuild/bazel/releases    ----- 下載sh檔案安裝(OK)

https://sonic.gitbooks.io/bazel/chapter1.html   ----- JDK & Bazel安裝(OK,感覺也非常的亂)

http://blog.csdn.net/zhangweijiqn/article/details/53200081  (OK,不錯的完整的安裝JDK --> Bazel --> TF的過程)

1,bazel安裝的淚水

(1)安裝google的bazel來編譯

chmod +x PATH_TO_INSTALL.SH ./PATH_TO_INSTALL.SH --user 直接安裝如果失敗,可以嘗試從原始碼安裝bazel:
cd bazel git checkout master ./compile.sh Build successful! Binary is here: /export/App/bazel/output/bazel 注意安裝完後的路徑是上面給出的路徑,由於上面的sh已經把bazel安裝到/usr/local/bin/bazel下,所以要使用新安裝的bazel修改tensorflow/configure裡的bazel改為絕對路徑。 (2)安裝其他依賴: # For Python 2.7:$ sudo apt-get install python-numpy swig python-dev python-wheel# For Python 3.x:$ sudo apt-get install python3-numpy swig python3-dev python3-wheel (3)configuration: ./configure --user (4)Create the pip package and install bazel build -c opt //tensorflow/tools/pip_package:build_pip_package 報錯: /usr/local/bin/bazel: line 88: /usr/local/lib/bazel/bin/bazel-real: cannot execute binary file 這裡解決是重新安裝bazel,參考(1)中的從原始碼安裝bazel 上面的步驟完成後,測試一下是否安裝成功:

2,使用bazel執行tensorflow的textsum模型

https://github.com/tensorflow/models/tree/master/textsum

How To Run

依賴:Prerequisite: install TensorFlow and Bazel.

第一步:

# cd to your workspace
# 1. Clone the textsum code to your workspace 'textsum' directory.
# 2. Create an empty 'WORKSPACE' file in your workspace.
# 3. Move the train/eval/test data to your workspace 'data' directory.
#    In the following example, I named the data training-*, test-*, etc.
#    If your data files have different names, update the --data_path.
#    If you don't have data but want to try out the model, copy the toy
#    data from the textsum/data/data to the data/ directory in the workspace.

上面大意是: 建立工作目錄mkdir test_dir; 建立空白檔案 touch WORKSPACE; 在test_dir中建立data資料目錄(存放training-*, test-*資料,vocab); copy訓練資料和測試資料到data目錄


第二步: $ bazel build -c opt --config=cuda textsum/...


# Run the training.
$ bazel-bin/textsum/seq2seq_attention \
    --mode=train \
    --article_key=article \        ### 
    --abstract_key=abstract \    ###
    --data_path=data/training-* \      ### 更改對應的訓練資料檔案路徑
    --vocab_path=data/vocab \        ### 類似於dic
    --log_root=textsum/log_root \
    --train_dir=textsum/log_root/train


# Run the eval. Try to avoid running on the same machine as training.
$ bazel-bin/textsum/seq2seq_attention \
    --mode=eval \
    --article_key=article \
    --abstract_key=abstract \
    --data_path=data/validation-* \
    --vocab_path=data/vocab \  
    --log_root=textsum/log_root \
    --eval_dir=textsum/log_root/eval


# Run the decode. Run it when the most is mostly converged.
$ bazel-bin/textsum/seq2seq_attention \
    --mode=decode \
    --article_key=article \
    --abstract_key=abstract \
    --data_path=data/test-* \
    --vocab_path=data/vocab \
    --log_root=textsum/log_root \
    --decode_dir=textsum/log_root/decode \
    --beam_size=8

2,使用bazel編譯環境:

第一步:建立WORKSPACE檔案:

touch WORKSPACE

第二步:建立一個BUILD檔案:vim BUILD 

genrule(
  name = "hello",
  outs = ["hello_world.txt"],
  cmd = "echo Hello World > [email protected]",
)

第三步: 

bazel build :hello  ### 注意build 後面有一個空格

最後結果如下:

lrwxrwxrwx 1 root root 110 4月   5 20:30 bazel-bin -> /root/.cache/bazel/_bazel_root/606cbeb4ca65a774eeb20cb68b5d2d4b/test_bazel/bazel-out/local_linux-fastbuild/bin
lrwxrwxrwx 1 root root 115 4月   5 20:30 bazel-genfiles -> /root/.cache/bazel/_bazel_root/606cbeb4ca65a774eeb20cb68b5d2d4b/test_bazel/bazel-out/local_linux-fastbuild/genfiles
lrwxrwxrwx 1 root root  84 4月   5 20:30 bazel-out -> /root/.cache/bazel/_bazel_root/606cbeb4ca65a774eeb20cb68b5d2d4b/test_bazel/bazel-out
lrwxrwxrwx 1 root root  74 4月   5 20:30 bazel-test_bazel -> /root/.cache/bazel/_bazel_root/606cbeb4ca65a774eeb20cb68b5d2d4b/test_bazel
lrwxrwxrwx 1 root root 115 4月   5 20:30 bazel-testlogs -> /root/.cache/bazel/_bazel_root/606cbeb4ca65a774eeb20cb68b5d2d4b/test_bazel/bazel-out/local_linux-fastbuild/testlogs
-rwxr-xr-x 1 root root  92 4月   5 20:22 BUILD
-rw-r--r-- 1 root root   0 4月   5 19:15 WORKSPACE

bazel相關命令: https://bazel.build/versions/master/docs/bazel-user-manual.html

http://blog.csdn.net/rockingdingo/article/details/55224282