91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么深度學習Spark和TensorFlow

發布時間:2021-12-17 09:14:59 來源:億速云 閱讀:281 作者:柒染 欄目:云計算

本篇文章為大家展示了怎么深度學習Spark和TensorFlow,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

在過去幾年中,神經網絡領域的發展非常迅猛,也是現在圖像識別和自動翻譯領域中最強者。TensorFlow 是谷歌發布的數值計算和神經網絡的新框架。本文中,我們將演示如何使用TensorFlow和Spark一起訓練和應用深度學習模型。

你可能會困惑:在最高性能深度學習實現還是單節點的當下, Spark 的用處在哪里?為了回答這個問題,我們將會演示兩個例子并解釋如何使用 Spark 和機器集群搭配 TensorFlow 來提高深度學習的管道數。

超參數調整

深度機器學習(ML)技術的一個典型應用是人工神經網絡。它們采取一個復雜的輸入,如圖像或音頻記錄,然后對這些信號應用復雜的數學變換。此變換的輸出是更易于由其他ML算法處理的數字向量。人工神經網絡通過模仿人類大腦的視覺皮層的神經元(以相當簡化的形式)執行該轉換。

就像人類學會解讀他們所看到的,人工神經網絡需要通過訓練來識別那些“有趣”的具體模式。可以是簡單的模式,比如邊緣,圓形,但也可以是更復雜的模式。在這里,我們將用NIST提供的經典數據集來訓練神經網絡以識別這些數字:

怎么深度學習Spark和TensorFlow

TensorFlow 庫將會自動創建各種形狀和大小的神經網絡訓練算法。建立一個神經網絡的實際過程,比單純在數據集上跑一些算法要復雜得多。通常會有一些非常重要的超參數(通俗地說,參數配置)需要設置,這將影響該模型是如何訓練的。選擇正確的參數可以讓性能優越,而壞的參數將會導致長時間的訓練和糟糕的表現。在實踐中,機器學習從業者會多次使用不同的超參數重復運行相同的模型,以期找到最佳的集合。這是一個被稱為超參數調整的經典技術。

建立一個神經網絡時,有許多需要精心挑選的重要超參數。 例如:

  • 每層的神經元數目:太少的神經元會降低網絡的表達能力,但太多會大大增加運行時間,并返回模糊噪音。

  • 學習速度:如果過高,神經網絡將只專注于看到過去的幾個樣例,并忽略之前積累的經驗。如果太低,則需要很長時間才能達到一個很好的狀態。

這里有趣的是,即使 TensorFlow 本身不予分發,超參數調整過程是“易并行”(embarrassingly parallel),并且可以使用 Spark 來分配的。在這種情況下,我們可以使用 Spark 廣播通用的元素,例如數據和模型描述,然后以允許錯誤的方式安排機器集群中的個體進行獨立的重復性計算。

怎么深度學習Spark和TensorFlow

如何使用 Spark 提高精度?用默認的超參數設置精度為99.2%。我們在測試集上的最好結果是99.47%的精確度,這減少了34%的測試誤差。分布式計算時間與添加到集群的節點數量成線性關系:使用有13個節點的集群,我們能夠并行培養13個模型,這相比于在同一臺機器一個接著一個訓練速度提升了7倍。這里是相對于該集群上機器的數量的計算時間(以秒計)的曲線圖:

怎么深度學習Spark和TensorFlow

最重要的是,我們分析了大量訓練過程中的超參數的靈敏度。例如,我們相對于不同數目的神經元所得學習率繪制了最終測試性能圖:

怎么深度學習Spark和TensorFlow

這顯示了一個典型的神經網絡權衡曲線:

  • 學習速度是非常關鍵的:如果它太低,神經網絡沒有學到任何東西(高測試誤差)。如果它太高,訓練過程可能發生隨機振蕩甚至在某些配置下出現發散。

  • 神經元的數目對于獲得良好的性能來說沒有那么重要,并且有更多神經元的網絡的學習率更加敏感。這是奧卡姆剃刀原則:對大多數目標來說,簡單的模型往往已經“足夠好”。除非你在訓練中投入大量的時間和資源,并找到合適的超參數來除去這缺少的1%測試誤差,這才會有所不同。

通過使用參數稀疏樣本,我們可以在最優的參數集下取得零失誤率。

我該如何使用它?

盡管 TensorFlow 可以使用每一個 worker 上的所有核心,但每個工人同一時間只能運行一個任務,我們可以將它們打包以限制競爭。TensorFlow 庫可以按照[instructions on the TensorFlow website](https://www.tensorflow.org/get_started/os_setup.html)上的指示在 Spark 集群上作為一個普通的Python庫進行安裝。下面的筆記展示了用戶如何安裝 TensorFlow 庫并重復該文章的實驗:

  • 使用 TensorFlow 進行圖像分布式處理

  • 使用 TensorFlow 進行圖像分布式處理測試

大規模部署

TensorFlow 模型可以直接在管道內嵌入對數據集執行的復雜識別任務。作為一個例子,我們將展示我們如何能夠使用一個已經訓練完成的股票神經網絡模型標注一組圖片

首先使用 Spark 內置的廣播機制將該模型分發到集群中的worker上:

with gfile.FastGFile( 'classify_image_graph_def.pb', 'rb') as f:
  model_data = f.read()
model_data_bc = sc.broadcast(model_data)

之后,這個模型被加載到每個節點上,并且應用于圖片。這是每個節點運行的代碼框架:

def apply_batch(image_url):
  # Creates a new TensorFlow graph of computation and imports the model
  with tf.Graph().as_default() as g:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(model_data_bc.value)
    tf.import_graph_def(graph_def, name='')     
    # Loads the image data from the URL:
    image_data = urllib.request.urlopen(img_url, timeout=1.0).read()     
    # Runs a tensor flow session that loads the 
    with tf.Session() as sess:
      softmax_tensor = sess.graph.get_tensor_by_name('softmax:0')
      predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data})      return predictions

通過將圖片打包在一起,這份代碼可以運行地更快。
下面是圖片的一個樣例:

怎么深度學習Spark和TensorFlow

這是神經網絡對于這張圖片的解釋,相當精確:

   ('coral reef', 0.88503921),
   ('scuba diver', 0.025853464),
   ('brain coral', 0.0090828091),
   ('snorkel', 0.0036010914),
   ('promontory, headland, head, foreland', 0.0022605944)])

上述內容就是怎么深度學習Spark和TensorFlow,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通江县| 库伦旗| 晋中市| 馆陶县| 长泰县| 昆明市| 永胜县| 汪清县| 吐鲁番市| 双柏县| 桐梓县| 扎囊县| 贡嘎县| 乐山市| 东方市| 大关县| 海南省| 内丘县| 瑞丽市| 南康市| 九龙坡区| 镇安县| 大港区| 海南省| 科技| 定兴县| 克东县| 进贤县| 凤台县| 永修县| 菏泽市| 尉氏县| 金乡县| 阳谷县| 洛川县| 肇庆市| 齐河县| 高雄县| 鹤壁市| 万全县| 巫溪县|