成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    人工智能開發者 正文
    發私信給三川
    發送

    1

    你在數據預處理上花費的時間,是否比機器學習還要多?

    本文作者: 三川 2017-05-31 19:05
    導語:IBM 模型架構專家,向大家介紹一個新出世的 Python 數據預處理神器——nuts-ml。

    雷鋒網按:本文作者  Stefan Maetschke 為 IBM 機器學習架構模型專家,根據自身工作經歷向大家推薦這款全新的數據預處理工具。雷鋒網編譯。

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

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

    你在數據預處理上花費的時間,是否比機器學習還要多?

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

    有些機器學習框架,比如 Keras,就在 API 中提供了這些預處理模塊。若與任務的匹配程度高,這就能大幅簡化神經網絡的訓練。請見下面的用 keras 訓練采用了數據擴充(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))

    但如果,深度學習框架的 API 沒有提供圖像格式、數據擴充等預處理功能呢?

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

    這便要 nuts-ml 上場了。

    如開頭介紹的,nuts-ml 是一個 Python 庫,它提供了常見的預處理函數,即所謂的 “nuts”,能自由排列并且輕松擴展,以創建高效的數據預處理流水線。下面是節選的一段 nuts-ml 示例代碼,展示了訓練神經網絡的流水線,>> 指示操作流。

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

    上面的示例中,訓練圖像被擴充,像素值被重新分配,樣本在創建訓練網絡的 batch 之前被打亂順序。最后,batch 的平均訓練損失被分批計算、打印出來。組成該數據流的 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] 區間的像素值轉化為 [0, 1] 區間的圖像轉換過程。數據擴充生成用于訓練的額外圖像。build_batch 創建由圖像和 one-hot 編碼的類標簽組成的 batch。神經網絡把現有 Keras 模型封裝為一個 nut,后者能插入進流水線。該示例的完整代碼在這里。

    Nuts-ml 的作用,是幫助開發者在深度學習任務重更快地創建數據預處理流水線。產生的代碼根據可讀性,修改后還可試驗不同的預處理方案。針對特定任務的函數可方便地作為 nuts 實現并添加進數據流。下面就是一個調整圖像亮度的簡單 nut:

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

    Nuts-ml 本身并不能進行神經網絡的訓練,而是借助于 Keras、Theano 等已有的庫來實現。任何能接受 Numpy 陣列的 mini-batch 用來訓練、推理的機器學習庫,都與它兼容。

    via kdnuggets,雷鋒網編譯

    相關文章:

    谷歌發布全新TensorFlow庫“tf.Transform” 簡化機器學習數據預處理過程

    雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

    你在數據預處理上花費的時間,是否比機器學習還要多?

    分享:
    相關文章

    用愛救世界
    當月熱門文章
    最新文章
    請填寫申請人資料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說