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

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

1

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

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

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

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

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

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

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

有些機器學(xué)習(xí)框架,比如 Keras,就在 API 中提供了這些預(yù)處理模塊。若與任務(wù)的匹配程度高,這就能大幅簡化神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。請見下面的用 keras 訓(xùn)練采用了數(shù)據(jù)擴充(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 沒有提供圖像格式、數(shù)據(jù)擴充等預(yù)處理功能呢?

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

這便要 nuts-ml 上場了。

如開頭介紹的,nuts-ml 是一個 Python 庫,它提供了常見的預(yù)處理函數(shù),即所謂的 “nuts”,能自由排列并且輕松擴展,以創(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)練圖像被擴充,像素值被重新分配,樣本在創(chuàng)建訓(xùn)練網(wǎng)絡(luò)的 batch 之前被打亂順序。最后,batch 的平均訓(xùn)練損失被分批計算、打印出來。組成該數(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)是一個把 [0, 255] 區(qū)間的像素值轉(zhuǎn)化為 [0, 1] 區(qū)間的圖像轉(zhuǎn)換過程。數(shù)據(jù)擴充生成用于訓(xùn)練的額外圖像。build_batch 創(chuàng)建由圖像和 one-hot 編碼的類標簽組成的 batch。神經(jīng)網(wǎng)絡(luò)把現(xiàn)有 Keras 模型封裝為一個 nut,后者能插入進流水線。該示例的完整代碼在這里。

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

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

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

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

相關(guān)文章:

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

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

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

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

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