日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Keras-数据增广

發(fā)布時(shí)間:2024/4/11 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Keras-数据增广 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)增廣

簡(jiǎn)介

在實(shí)際的深度學(xué)習(xí)項(xiàng)目中,數(shù)據(jù)集的需求是非常大的,強(qiáng)大的模型包含更多的參數(shù),訓(xùn)練這些參數(shù)需要大量的數(shù)據(jù);大量的數(shù)據(jù)訓(xùn)練使得模型的泛化能力變強(qiáng),一定程度上克制過擬合的出現(xiàn)。

數(shù)據(jù)增廣是對(duì)數(shù)據(jù)集進(jìn)行倍增的有效手段,首次成功應(yīng)用于AlexNet取得巨大的效果。對(duì)圖片增廣其主要含義為對(duì)原來的圖片進(jìn)行翻轉(zhuǎn)(水平翻轉(zhuǎn)和垂直翻轉(zhuǎn))、扭曲、變形、拉伸、填充、換色、裁減等手段產(chǎn)生新的圖片,該圖片近似于原圖分布且對(duì)模型而言是全新的圖片,從而達(dá)到獲取更多訓(xùn)練數(shù)據(jù)且有標(biāo)注(標(biāo)注與原圖一致或可以通過變換得到)的目的。

Keras作為一個(gè)成熟的方便的深度學(xué)習(xí)框架提供了很高效的圖片數(shù)據(jù)增廣的API,本項(xiàng)目將逐一演示其作用。

原則

數(shù)據(jù)增廣的手段是以任務(wù)為驅(qū)動(dòng)的,是對(duì)任務(wù)有利的而不是有害的。

不恰當(dāng)?shù)臄?shù)據(jù)增廣會(huì)干擾模型的訓(xùn)練,而不會(huì)提高模型效果。(如將手寫數(shù)據(jù)垂直翻轉(zhuǎn)沒有意義,沒有人的手寫字是倒置的且會(huì)使模型難以擬合。)

不是所有時(shí)候數(shù)據(jù)增廣都是有效果的,有時(shí)候即使正確的增廣未必會(huì)達(dá)到預(yù)期的效果,這是模型的問題。

數(shù)據(jù)增廣

  • 說明

    • Keras要求在創(chuàng)建生成器的時(shí)候就指定增廣方式,所以對(duì)于訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)必須創(chuàng)建不同的生成器(要求訓(xùn)練數(shù)據(jù)一般情況下是不需要增廣的)。**注意,生成器只是生成器,要想生成數(shù)據(jù)需要調(diào)用生成器的flow方法或者flow_*方法才能得到數(shù)據(jù)集,調(diào)用flow得到的生成器才是fit_generator方法需要的生成器。
    • 參數(shù)說明
      • from keras.preprocessing.image import ImageDataGeneratorimport keras.backend as Ktrain_gen = ImageDataGenerator(featurewise_center=False,samplewise_center=False,featurewise_std_normalization=False,samplewise_std_normalization=False,rescale=1/255.,zca_whitening=False,zca_epsilon=1e-6,rotation_range=0.,width_shift_range=0.,height_shift_range=0.,shear_range=0.,zoom_range=0.,channel_shift_range=0.,fill_mode='nearest',cval=0.,horizontal_flip=False,vertical_flip=False,preprocessing_function=None,data_format=K.image_data_format())
      • 說明
        • featurewise_center:布爾型,輸入數(shù)據(jù)集去中心化(均值為0)。
        • samplewise_center:布爾型,輸入數(shù)據(jù)每個(gè)樣本均值為0。
        • featurewise_std_normalization:布爾型,將輸入樣本除以數(shù)據(jù)集的標(biāo)準(zhǔn)差以完成標(biāo)準(zhǔn)化。
        • samplewise_std_normalization:布爾型,將輸入樣本除以樣本自身的標(biāo)準(zhǔn)差以完成標(biāo)準(zhǔn)化。
        • rescale:數(shù)值型,重放縮因子,默認(rèn)為None。如果為None或0則不進(jìn)行放縮,否則會(huì)將該放縮因子乘到樣本數(shù)據(jù)上(在應(yīng)用任何其他變換之前),一般設(shè)定為1/255.用于圖片歸一化。
        • zca_whitening:布爾型,對(duì)輸入數(shù)據(jù)進(jìn)行ZCA白化。
        • zca_epsilon: 數(shù)值型,ZCA白化使用的eposilon,默認(rèn)1e-6。
        • rotation_range:整型,增廣時(shí)圖片隨機(jī)轉(zhuǎn)動(dòng)的角度,取值為0-180。
        • width_shift_range:數(shù)值型,圖片寬度的某個(gè)比例值,增廣時(shí)圖片水平偏移的幅度。
        • height_shift_range:數(shù)值型,圖片高度的某個(gè)比例值,增廣時(shí)圖片豎直偏移的幅度。
        • shear_range:數(shù)值型,剪切強(qiáng)度(逆時(shí)針方向的剪切變換角度)。
        • zoom_range:數(shù)值型或[low, high]的列表,隨機(jī)縮放的幅度,數(shù)值型表示[low, high]=[1-zoom_range, 1+zoom_range]。
        • channel_shift_range:數(shù)值型,通道偏移的幅度。
        • fill_mode:‘constant’,‘nearest’,'reflect’或’wrap’取值之一,當(dāng)增廣越出邊界按該值指定的方法處理。
        • cval:數(shù)值型,當(dāng)fill_mode為’constant’時(shí),越界點(diǎn)的填充值。
        • horizontal_flip:布爾型,是否隨機(jī)進(jìn)行水平翻轉(zhuǎn)。
        • vertical_flip:布爾型,是否隨機(jī)進(jìn)行豎直翻轉(zhuǎn)。
        • preprocessing_function:將被應(yīng)用于每個(gè)輸入的函數(shù)。該函數(shù)將在圖片縮放和數(shù)據(jù)增廣之后運(yùn)行。該函數(shù)接受一個(gè)參數(shù),為一張圖片(ndarray),并且輸出一個(gè)具有相同shape的ndarray。
        • data_format:'channel_first’或’channel_last’之一,代表圖像的通道維的位置。numpy類型圖片通道維在最后,如(224,224, 3)。
    • flow方法參數(shù)說明
      • train_generator = train_gen.flow(X,y, batch_size=1, shuffle=True, seed=None, save_to_dir=None, save_prefix='', save_format='png')
      • 說明
        • flow方法會(huì)死循環(huán)地返回一批隨機(jī)增廣后數(shù)據(jù)及其標(biāo)簽(在y不為None時(shí))。
        • X:樣本數(shù)據(jù),四維數(shù)據(jù)。黑白圖像的channel軸的值為1,彩色圖像為3。
        • y:與X第一維數(shù)值相同的標(biāo)簽數(shù)據(jù)。
        • batch_size:批尺寸大小,默認(rèn)為32。
        • shuffle:是否隨機(jī)打亂數(shù)據(jù),默認(rèn)為True。
        • save_to_dir:默認(rèn)為None,字符串類型,圖片存儲(chǔ)目錄,該參數(shù)能讓你將增廣后的圖片保存本地。
        • save_prefix:字符串類型,保存增廣后圖片時(shí)使用的前綴(如train), 僅當(dāng)設(shè)置了save_to_dir時(shí)生效。
        • save_format:‘png’或’jpeg’之一,指定保存圖片的數(shù)據(jù)格式,默認(rèn)’jpeg’。
        • seed:隨機(jī)數(shù)種子,保證復(fù)現(xiàn)。
  • 增廣

    • 代碼
      • train_gen = ImageDataGenerator(featurewise_center=False,samplewise_center=False,featurewise_std_normalization=False,samplewise_std_normalization=False,rescale=1/255.,zca_whitening=False,zca_epsilon=1e-6,rotation_range=15,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,channel_shift_range=0.,fill_mode='nearest',cval=0.,horizontal_flip=True,vertical_flip=True,preprocessing_function=None,data_format=K.image_data_format())train_generator = train_gen.flow(X,y, batch_size=1, shuffle=True, seed=None, save_to_dir='gene', save_prefix='train', save_format='png')index = 0for (batch_x, batch_y) in train_generator:index += 1if index > 50:break
    • 結(jié)果
      • 可以看到,每一批都有概率進(jìn)行了隨機(jī)增廣。

補(bǔ)充說明

本項(xiàng)目重點(diǎn)是數(shù)據(jù)增廣,數(shù)據(jù)的多種讀入方式?jīng)]有過多提及。具體代碼上傳至我的Github,歡迎Star或者Fork。

總結(jié)

以上是生活随笔為你收集整理的Keras-数据增广的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。