閱讀352 返回首頁    go 技術社區[雲棲]


PAI TensorFlow Q&A

PAI TensorFlow Q&A

目錄

如果以上內容無法解決您的問題,請首先查看PAI知識庫:https://help.aliyun.com/product/30347.html,若問題仍得不到解決請粘貼logview(Tensorflow日誌中的藍色長鏈接)到PAI工單係統進行提問,工單係統地址:https://workorder.console.aliyun.com/console.htm?spm=5176.product30347.4.8.ZvFh1j


如何開通PAI的深度學習功能

目前機器學習平台深度學習相關功能處於公測階段,深度學習組件包含TensorFlow、Caffe、MXNet三個框架,開通方式如下,進入機器學習控製台,在相應項目下勾選GPU資源即可使用。

開通GPU資源的項目會被分配到公共的資源池,可以動態的調用底層的GPU計算資源。另外需要在設置中設置OSS的訪問權限:

如何支持多python文件腳本引用

很多時候我們通過python 模塊文件組織訓練腳本。可能將模型定義在不同的Python文件裏,將數據的預處理邏輯放在另外一個Python文件中,最後有一個Python文件將整個訓練過程串聯起來。例如:在test1.py中定義了一些函數,需要在test2.py文件使用test1.py中的函數,並且將test2.py作為程序入口函數,隻需要將test1.py和test2.py打包成tar.gz文件上傳即可。

  • Python代碼文件為定義的tar.gz包
  • Python主文件定義入口程序文件

如何上傳數據到OSS

可以觀看視頻:https://help.aliyun.com/video_detail/54945.html

使用深度學習處理數據時,數據先存儲到OSS的bucket中。第一步要創建OSS Bucket。 由於深度學習的GPU集群在華東2,建議您創建 OSS Bucket 時選擇華東2地區。這樣在數據傳輸時就可以使用阿裏雲經典網絡,算法運行時不需要收取流量費用。Bucket 創建好之後,可以在OSS管理控製台 來創建文件夾,組織數據目錄,上傳數據了。

OSS支持多種方式上傳數據, API或SDK詳細見:https://help.aliyun.com/document_detail/31848.html?spm=5176.doc31848.6.580.a6es2a

OSS還提供了大量的常用工具用來幫助用戶更加高效的使用OSS。工具列表請參見: https://help.aliyun.com/document_detail/44075.html?spm=5176.doc32184.6.1012.XlMMUx

建議您使用 ossutil 或 osscmd ,這是兩個命令行工具,通過命令的方式來上傳、下載文件,還支持斷點續傳。

注:在使用工具時需要配置 AccessKey 和ID,登錄後,可以在Access Key 管理控製台創建或查看。

如何使用PAI讀取OSS數據

Python不支持讀取oss的數據, 故所有調用python Open() os.path.exist() 等文件, 文件夾操作的
函數的代碼都無法執行.如**Scipy.misc.imread()**,**numpy.load()** 等

那如何在PAI讀取數據呢, 通常我們采用兩種辦法.

方法一

如果隻是簡單的讀取一張圖片, 或者一個文本等, 可以使用**tf.gfile**下的函數, 具體成員函數如下

tf.gfile.Copy(oldpath, newpath, overwrite=False) # 拷貝文件
tf.gfile.DeleteRecursively(dirname) # 遞歸刪除目錄下所有文件
tf.gfile.Exists(filename) # 文件是否存在
tf.gfile.FastGFile(name, mode='r') # 無阻塞讀取文件
tf.gfile.GFile(name, mode='r') # 讀取文件
tf.gfile.Glob(filename) # 列出文件夾下所有文件, 支持pattern
tf.gfile.IsDirectory(dirname) # 返回dirname是否為一個目錄
tf.gfile.ListDirectory(dirname) # 列出dirname下所有文件
tf.gfile.MakeDirs(dirname) # 在dirname下創建一個文件夾, 如果父目錄不存在, 會自動創建父目錄. 如果
文件夾已經存在, 且文件夾可寫, 會返回成功
tf.gfile.MkDir(dirname) # 在dirname處創建一個文件夾
tf.gfile.Remove(filename) # 刪除filename
tf.gfile.Rename(oldname, newname, overwrite=False) # 重命名
tf.gfile.Stat(dirname) # 返回目錄的統計數據
tf.gfile.Walk(top, inOrder=True) # 返回目錄的文件樹

具體的文檔可以參照這裏(可能需要翻牆)

方法二

如果是一批一批的讀取文件, 一般會采用**tf.WhoFileReader()** 和 tf.train.batch()
tf.train.shuffer_batch()

接下來會重點介紹常用的 tf.gfile.Glob, tf.gfile.FastGFile, tf.WhoFileReader()
tf.train.shuffer_batch()

讀取文件一般有兩步:

  1. 獲取文件列表
  2. 讀取文件

如果是批量讀取, 還有第三步:創建batch

從代碼上手:
在使用PAI的時候, 通常需要在右側設置讀取目錄, 代碼文件等參數, 這些參數都會通過--XXX的形式傳入,**tf.flags**可以提供了這個功能

import tensorflow as tf
FLAGS = tf.flags.FLAGS
tf.flags.DEFINE_string('buckets', 'oss://XXX', '訓練圖片所在文件夾')
tf.flags.DEFINE_string('batch_size', '15', 'batch大小')
files = tf.gfile.Glob(os.path.join(FLAGS.buckets,'*.jpg')) # 如我想列出buckets下所有jpg文件路徑  

接下來就分兩種情況了

  • 小規模讀取時建議:tf.gfile.FastGfile()
for path in files:
    file_content = tf.gfile.FastGFile(path, 'rb').read() # 一定記得使用rb讀取, 不然很多情況下都會報錯
    image = tf.image.decode_jpeg(file_content, channels=3) # 本教程以JPG圖片為例
  • 大批量讀取時建議:tf.WhoFileReader()
reader = tf.WholeFileReader()  # 實例化一個reader
fileQueue = tf.train.string_input_producer(files)  # 創建一個供reader讀取的隊列
file_name, file_content = reader.read(fileQueue)  # 使reader從隊列中讀取一個文件
image_content = tf.image.decode_jpeg(file_content, channels=3)  # 講讀取結果解碼為圖片
label = XXX  # 這裏省略處理label的過程
batch = tf.train.shuffle_batch([label, image_content], batch_size=FLAGS.batch_size, num_threads=4,
                               capacity=1000 + 3 * FLAGS.batch_size, min_after_dequeue=1000)

sess = tf.Session()  # 創建Session
tf.train.start_queue_runners(sess=sess)  # 重要!!! 這個函數是啟動隊列, 不加這句線程會一直阻塞
labels, images = sess.run(batch)  # 獲取結果

現在解釋下其中重要的部分

  1. tf.train.string_input_producer, 這個是把files轉換成一個隊列, 並且需要 tf.train.start_queue_runners 來啟動隊列
  2. tf.train.shuffle_batch 參數解釋
  3. batch_size 批大小, 每次運行這個batch, 返回多少個數據
  4. num_threads 運行線程數, 在PAI上4個就好
  5. capacity 隨機取文件範圍, 比如你的數據集有10000個數據, 你想從5000個數據中隨機取, capacity就設置成5000.
  6. min_after_dequeue 維持隊列的最小長度, 這裏隻要注意不要大於**capacity**即可

如何使用PAI寫入數據到OSS

  • 直接使用tf.gfile.FastGFile()寫入
tf.gfile.FastGFile(FLAGS.checkpointDir + 'example.txt', 'wb').write('hello world')
  • 通過tf.gfile.Copy()拷貝
tf.gfile.Copy('./example.txt', FLAGS.checkpointDir + 'example.txt')

通過這兩種方法, 文件都會出現在 '輸出目錄/model/example.txt' 下

PAI平台關於Tensorflow的案例有哪些

案例一:如何使用TensorFlow實現圖像分類
視頻地址:https://help.aliyun.com/video_detail/54948.html
文檔介紹:https://yq.aliyun.com/articles/72841
代碼下載:https://help.aliyun.com/document_detail/51800.html

案例二:如何使用TensorFlow自動寫歌
文檔介紹:https://yq.aliyun.com/articles/134287
代碼下載:https://help.aliyun.com/document_detail/57011.html

如何查看Tensorflow的相關日誌

具體請參考:https://yq.aliyun.com/articles/72841

最後更新:2017-10-30 18:33:46

  上一篇:go  阿裏雲虛擬主機:如何上傳壓縮文件,如何解壓縮?
  下一篇:go  天貓雙11預售榜:掃地機器人成最熱單品,iPhone 8賣爆