丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給三川
發(fā)送

1

你在數(shù)據(jù)預(yù)處理上花費(fèi)的時(shí)間,是否比機(jī)器學(xué)習(xí)還要多?

本文作者: 三川 2017-05-31 19:05
導(dǎo)語(yǔ):IBM 模型架構(gòu)專家,向大家介紹一個(gè)新出世的 Python 數(shù)據(jù)預(yù)處理神器——nuts-ml。

雷鋒網(wǎng)按:本文作者  Stefan Maetschke 為 IBM 機(jī)器學(xué)習(xí)架構(gòu)模型專家,根據(jù)自身工作經(jīng)歷向大家推薦這款全新的數(shù)據(jù)預(yù)處理工具。雷鋒網(wǎng)編譯。

Nuts-ml 是一個(gè)新的 Python 數(shù)據(jù)預(yù)處理庫(kù),專門針對(duì)視覺(jué)領(lǐng)域的 GPU 深度學(xué)習(xí)應(yīng)用。 它以獨(dú)立、可復(fù)用的單元模塊的形式,提供主流數(shù)據(jù)預(yù)處理函數(shù)。前者便是“nuts-ml” 里的 “nuts”,開(kāi)發(fā)者可自由將其排列組合,創(chuàng)建高效、可讀性強(qiáng)、方便修改的數(shù)據(jù)流。

對(duì)于機(jī)器學(xué)習(xí)項(xiàng)目,數(shù)據(jù)預(yù)處理都是基礎(chǔ)。相比實(shí)際的機(jī)器學(xué)習(xí),開(kāi)發(fā)者花在數(shù)據(jù)預(yù)處理上的時(shí)間往往還要更多。有的數(shù)據(jù)預(yù)處理任務(wù)只針對(duì)特定問(wèn)題,但大多數(shù),比如把數(shù)據(jù)分割為訓(xùn)練和測(cè)試組、給樣本分層和創(chuàng)建 mini-batch 都是通用的。下面的 Canonical 流水線展示了深度學(xué)習(xí)視覺(jué)任務(wù)常見(jiàn)的處理步驟。 

你在數(shù)據(jù)預(yù)處理上花費(fèi)的時(shí)間,是否比機(jī)器學(xué)習(xí)還要多?

Reader 讀取文本文件、 Excel 或 Pandas 表格中的樣本數(shù)據(jù)。接下來(lái) Splitter 把數(shù)據(jù)分割為訓(xùn)練、驗(yàn)證和測(cè)試集,如需要再進(jìn)行分層。一般情況下,并不是所有圖像數(shù)據(jù)都能載入內(nèi)存,于是,我們需要 Loader 按需導(dǎo)入。這些圖像一般由 Transformer 進(jìn)行處理,以修改尺寸、截圖或做其它調(diào)整。另外,為增加訓(xùn)練集, Augmenter 會(huì)隨機(jī)選取圖像進(jìn)行擴(kuò)充(比如翻轉(zhuǎn)),以合成額外圖像?;?GPU 的高效率的機(jī)器學(xué)習(xí),需要用 Batcher 把圖像和標(biāo)簽數(shù)據(jù)編成 mini-batch。隨后導(dǎo)入 Network 進(jìn)行訓(xùn)練或者推理。最后,為追蹤訓(xùn)練過(guò)程,一般我們會(huì)用 Logger 來(lái)把訓(xùn)練損失或精度記錄到 log 文件。

有些機(jī)器學(xué)習(xí)框架,比如 Keras,就在 API 中提供了這些預(yù)處理模塊。若與任務(wù)的匹配程度高,這就能大幅簡(jiǎn)化神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。請(qǐng)見(jiàn)下面的用 keras 訓(xùn)練采用了數(shù)據(jù)擴(kuò)充(augmentation)的模型。 


datagen = ImageDataGenerator(  # augment images
   width_shift_range=0.1,  
   height_shift_range=0.1,
   horizontal_flip=True)   

datagen.fit(x_train)

model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size),
   steps_per_epoch=x_train.shape[0]
   epochs=epochs,
   validation_data=(x_test, y_test))

但如果,深度學(xué)習(xí)框架的 API 沒(méi)有提供圖像格式、數(shù)據(jù)擴(kuò)充等預(yù)處理功能呢?

擴(kuò)展 Keras 這樣的庫(kù)并不是一個(gè)輕松的活兒。常見(jiàn)的解決方案是簡(jiǎn)單粗暴地(重新)實(shí)現(xiàn)所需功能。但實(shí)現(xiàn)一個(gè)強(qiáng)魯棒性的數(shù)據(jù)流水線,能按需加載、轉(zhuǎn)換、擴(kuò)充、處理圖像仍然很具挑戰(zhàn)性,并且有很高時(shí)間成本。

這便要 nuts-ml 上場(chǎng)了。

如開(kāi)頭介紹的,nuts-ml 是一個(gè) Python 庫(kù),它提供了常見(jiàn)的預(yù)處理函數(shù),即所謂的 “nuts”,能自由排列并且輕松擴(kuò)展,以創(chuàng)建高效的數(shù)據(jù)預(yù)處理流水線。下面是節(jié)選的一段 nuts-ml 示例代碼,展示了訓(xùn)練神經(jīng)網(wǎng)絡(luò)的流水線,>> 指示操作流。

t_loss = (train_samples >> augment >> rerange >> Shuffle(100) >>
         build_batch >> network.train() >> Mean())
print "training loss  :", t_loss

上面的示例中,訓(xùn)練圖像被擴(kuò)充,像素值被重新分配,樣本在創(chuàng)建訓(xùn)練網(wǎng)絡(luò)的 batch 之前被打亂順序。最后,batch 的平均訓(xùn)練損失被分批計(jì)算、打印出來(lái)。組成該數(shù)據(jù)流的 nuts 可如下定義:

rerange = TransformImage(0).by('rerange', 0, 255, 0, 1, 'float32')

augment = (AugmentImage(0)
          .by('identical', 1.0)
          .by('brightness', 0.1, [0.7, 1.3])
          .by('fliplr', 0.1)))
          
build_batch = (BuildBatch(BATCH_SIZE)
              .by(0, 'image', 'float32')
              .by(1, 'one_hot', 'uint8', NUM_CLASSES))           

network = KerasNetwork(model)

重分配(rerange)是一個(gè)把 [0, 255] 區(qū)間的像素值轉(zhuǎn)化為 [0, 1] 區(qū)間的圖像轉(zhuǎn)換過(guò)程。數(shù)據(jù)擴(kuò)充生成用于訓(xùn)練的額外圖像。build_batch 創(chuàng)建由圖像和 one-hot 編碼的類標(biāo)簽組成的 batch。神經(jīng)網(wǎng)絡(luò)把現(xiàn)有 Keras 模型封裝為一個(gè) nut,后者能插入進(jìn)流水線。該示例的完整代碼在這里。

Nuts-ml 的作用,是幫助開(kāi)發(fā)者在深度學(xué)習(xí)任務(wù)重更快地創(chuàng)建數(shù)據(jù)預(yù)處理流水線。產(chǎn)生的代碼根據(jù)可讀性,修改后還可試驗(yàn)不同的預(yù)處理方案。針對(duì)特定任務(wù)的函數(shù)可方便地作為 nuts 實(shí)現(xiàn)并添加進(jìn)數(shù)據(jù)流。下面就是一個(gè)調(diào)整圖像亮度的簡(jiǎn)單 nut:

@nut_function
def AdjustBrightness(image, c):
 return image * c
 
... images >> AdjustBrightness(1.1) >> ...  

Nuts-ml 本身并不能進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,而是借助于 Keras、Theano 等已有的庫(kù)來(lái)實(shí)現(xiàn)。任何能接受 Numpy 陣列的 mini-batch 用來(lái)訓(xùn)練、推理的機(jī)器學(xué)習(xí)庫(kù),都與它兼容。

via kdnuggets,雷鋒網(wǎng)編譯

相關(guān)文章:

谷歌發(fā)布全新TensorFlow庫(kù)“tf.Transform” 簡(jiǎn)化機(jī)器學(xué)習(xí)數(shù)據(jù)預(yù)處理過(guò)程

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

你在數(shù)據(jù)預(yù)處理上花費(fèi)的時(shí)間,是否比機(jī)器學(xué)習(xí)還要多?

分享:
相關(guān)文章

用愛(ài)救世界
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)