真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何深度學(xué)習(xí)與Spark和TensorFlow

如何深度學(xué)習(xí)與 Spark 和 TensorFlow,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),寧德企業(yè)網(wǎng)站建設(shè),寧德品牌網(wǎng)站建設(shè),網(wǎng)站定制,寧德網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,寧德網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

深度學(xué)習(xí)與 Spark 和 TensorFlow

在過去幾年中,神經(jīng)網(wǎng)絡(luò)領(lǐng)域的發(fā)展非常迅猛,也是現(xiàn)在圖像識(shí)別和自動(dòng)翻譯領(lǐng)域中最強(qiáng)者。TensorFlow 是谷歌發(fā)布的數(shù)值計(jì)算和神經(jīng)網(wǎng)絡(luò)的新框架。本文中,我們將演示如何使用TensorFlow和Spark一起訓(xùn)練和應(yīng)用深度學(xué)習(xí)模型。

你可能會(huì)困惑:在最高性能深度學(xué)習(xí)實(shí)現(xiàn)還是單節(jié)點(diǎn)的當(dāng)下, Spark 的用處在哪里?為了回答這個(gè)問題,我們將會(huì)演示兩個(gè)例子并解釋如何使用 Spark 和機(jī)器集群搭配 TensorFlow 來提高深度學(xué)習(xí)的管道數(shù)。

  1. 超參數(shù)調(diào)整: 使用 Spark 來找到最優(yōu)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練參數(shù)集,減少十倍訓(xùn)練時(shí)間并降低34%的失誤率。

  2. 部署模型規(guī)模: 使用 Spark 在大量數(shù)據(jù)上應(yīng)用訓(xùn)練完畢的神經(jīng)網(wǎng)絡(luò)模型。

超參數(shù)調(diào)整

深度機(jī)器學(xué)習(xí)(ML)技術(shù)的一個(gè)典型應(yīng)用是人工神經(jīng)網(wǎng)絡(luò)。它們采取一個(gè)復(fù)雜的輸入,如圖像或音頻記錄,然后對(duì)這些信號(hào)應(yīng)用復(fù)雜的數(shù)學(xué)變換。此變換的輸出是更易于由其他ML算法處理的數(shù)字向量。人工神經(jīng)網(wǎng)絡(luò)通過模仿人類大腦的視覺皮層的神經(jīng)元(以相當(dāng)簡化的形式)執(zhí)行該轉(zhuǎn)換。

就像人類學(xué)會(huì)解讀他們所看到的,人工神經(jīng)網(wǎng)絡(luò)需要通過訓(xùn)練來識(shí)別那些“有趣”的具體模式??梢允呛唵蔚哪J?,比如邊緣,圓形,但也可以是更復(fù)雜的模式。在這里,我們將用NIST提供的經(jīng)典數(shù)據(jù)集來訓(xùn)練神經(jīng)網(wǎng)絡(luò)以識(shí)別這些數(shù)字:

如何深度學(xué)習(xí)與 Spark 和 TensorFlow

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

建立一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),有許多需要精心挑選的重要超參數(shù)。 例如:

  • 每層的神經(jīng)元數(shù)目:太少的神經(jīng)元會(huì)降低網(wǎng)絡(luò)的表達(dá)能力,但太多會(huì)大大增加運(yùn)行時(shí)間,并返回模糊噪音。

  • 學(xué)習(xí)速度:如果過高,神經(jīng)網(wǎng)絡(luò)將只專注于看到過去的幾個(gè)樣例,并忽略之前積累的經(jīng)驗(yàn)。如果太低,則需要很長時(shí)間才能達(dá)到一個(gè)很好的狀態(tài)。

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

如何深度學(xué)習(xí)與 Spark 和 TensorFlow

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

如何深度學(xué)習(xí)與 Spark 和 TensorFlow

最重要的是,我們分析了大量訓(xùn)練過程中的超參數(shù)的靈敏度。例如,我們相對(duì)于不同數(shù)目的神經(jīng)元所得學(xué)習(xí)率繪制了最終測(cè)試性能圖:

如何深度學(xué)習(xí)與 Spark 和 TensorFlow

這顯示了一個(gè)典型的神經(jīng)網(wǎng)絡(luò)權(quán)衡曲線:

  • 學(xué)習(xí)速度是非常關(guān)鍵的:如果它太低,神經(jīng)網(wǎng)絡(luò)沒有學(xué)到任何東西(高測(cè)試誤差)。如果它太高,訓(xùn)練過程可能發(fā)生隨機(jī)振蕩甚至在某些配置下出現(xiàn)發(fā)散。

  • 神經(jīng)元的數(shù)目對(duì)于獲得良好的性能來說沒有那么重要,并且有更多神經(jīng)元的網(wǎng)絡(luò)的學(xué)習(xí)率更加敏感。這是奧卡姆剃刀原則:對(duì)大多數(shù)目標(biāo)來說,簡單的模型往往已經(jīng)“足夠好”。除非你在訓(xùn)練中投入大量的時(shí)間和資源,并找到合適的超參數(shù)來除去這缺少的1%測(cè)試誤差,這才會(huì)有所不同。

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

我該如何使用它?

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

  • 使用 TensorFlow 進(jìn)行圖像分布式處理

  • 使用 TensorFlow 進(jìn)行圖像分布式處理測(cè)試

大規(guī)模部署

TensorFlow 模型可以直接在管道內(nèi)嵌入對(duì)數(shù)據(jù)集執(zhí)行的復(fù)雜識(shí)別任務(wù)。作為一個(gè)例子,我們將展示我們?nèi)绾文軌蚴褂靡粋€(gè)已經(jīng)訓(xùn)練完成的股票神經(jīng)網(wǎng)絡(luò)模型標(biāo)注一組圖片

首先使用 Spark 內(nèi)置的廣播機(jī)制將該模型分發(fā)到集群中的worker上:

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

之后,這個(gè)模型被加載到每個(gè)節(jié)點(diǎn)上,并且應(yīng)用于圖片。這是每個(gè)節(jié)點(diǎn)運(yùn)行的代碼框架:

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

通過將圖片打包在一起,這份代碼可以運(yùn)行地更快。 下面是圖片的一個(gè)樣例: 如何深度學(xué)習(xí)與 Spark 和 TensorFlow

這是神經(jīng)網(wǎng)絡(luò)對(duì)于這張圖片的解釋,相當(dāng)精確:

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

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


當(dāng)前標(biāo)題:如何深度學(xué)習(xí)與Spark和TensorFlow
URL標(biāo)題:http://weahome.cn/article/gsohdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部