精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

TensorFlow和Keras解決大數(shù)據(jù)量內(nèi)存溢出問題

存儲 存儲軟件
解決思路其實(shí)說來也簡單,打破思維定式就好了,不是把所有圖片讀到內(nèi)存中,而是只把所有圖片的路徑一次性讀到內(nèi)存中。

以前做的練手小項(xiàng)目導(dǎo)致新手產(chǎn)生一個慣性思維——讀取訓(xùn)練集圖片的時候把所有圖讀到內(nèi)存中,然后分批訓(xùn)練。

其實(shí)這是有問題的,很容易導(dǎo)致OOM。現(xiàn)在內(nèi)存一般16G,而訓(xùn)練集圖片通常是上萬張,而且RGB圖,還很大,VGG16的圖片一般是224x224x3,上萬張圖片,16G內(nèi)存根本不夠用。這時候又會想起——設(shè)置batch,但是那個batch的輸入?yún)?shù)卻又是圖片,它只是把傳進(jìn)去的圖片分批送到顯卡,而我OOM的地方恰是那個“傳進(jìn)去”的圖片,怎么辦?

解決思路其實(shí)說來也簡單,打破思維定式就好了,不是把所有圖片讀到內(nèi)存中,而是只把所有圖片的路徑一次性讀到內(nèi)存中。

[[229304]]

大致的解決思路為:

將上萬張圖片的路徑一次性讀到內(nèi)存中,自己實(shí)現(xiàn)一個分批讀取函數(shù),在該函數(shù)中根據(jù)自己的內(nèi)存情況設(shè)置讀取圖片,只把這一批圖片讀入內(nèi)存中,然后交給模型,模型再對這一批圖片進(jìn)行分批訓(xùn)練,因?yàn)閮?nèi)存一般大于等于顯存,所以內(nèi)存的批次大小和顯存的批次大小通常不相同。

下面代碼分別介紹Tensorflow和Keras分批將數(shù)據(jù)讀到內(nèi)存中的關(guān)鍵函數(shù)。Tensorflow對初學(xué)者不太友好,所以我個人現(xiàn)階段更習(xí)慣用它的高層API Keras來做相關(guān)項(xiàng)目,下面的TF實(shí)現(xiàn)是之前不會用Keras分批讀時候參考的一些列資料,在模型訓(xùn)練上仍使用Keras,只有分批讀取用了TF的API。

TensorFlow

在input.py里寫get_batch函數(shù)。

  1. def get_batch(X_train, y_train, img_w, img_h, color_type, batch_size, capacity): 
  2.    ''
  3.    Args: 
  4.        X_train: train img path list 
  5.        y_train: train labels list 
  6.        img_w: image width 
  7.        img_h: image height 
  8.        batch_size: batch size 
  9.        capacity: the maximum elements in queue 
  10.    Returns
  11.        X_train_batch: 4D tensor [batch_size, width, height, chanel],\ 
  12.                        dtype=tf.float32 
  13.        y_train_batch: 1D tensor [batch_size], dtype=int32 
  14.    ''
  15.    X_train = tf.cast(X_train, tf.string) 
  16.  
  17.    y_train = tf.cast(y_train, tf.int32)     
  18.    # make an input queue 
  19.    input_queue = tf.train.slice_input_producer([X_train, y_train]) 
  20.  
  21.    y_train = input_queue[1] 
  22.    X_train_contents = tf.read_file(input_queue[0]) 
  23.    X_train = tf.image.decode_jpeg(X_train_contents, channels=color_type) 
  24.  
  25.    X_train = tf.image.resize_images(X_train, [img_h, img_w],  
  26.                                     tf.image.ResizeMethod.NEAREST_NEIGHBOR) 
  27.  
  28.    X_train_batch, y_train_batch = tf.train.batch([X_train, y_train], 
  29.                                                  batch_size=batch_size, 
  30.                                                  num_threads=64, 
  31.                                                  capacity=capacity) 
  32.    y_train_batch = tf.one_hot(y_train_batch, 10)    return X_train_batch, y_train_batch 

在train.py文件中訓(xùn)練(下面不是純TF代碼,model.fit是Keras的擬合,用純TF的替換就好了)。

  1. X_train_batch, y_train_batch = inp.get_batch(X_train, y_train,  
  2.                                             img_w, img_h, color_type,  
  3.                                             train_batch_size, capacity) 
  4. X_valid_batch, y_valid_batch = inp.get_batch(X_valid, y_valid,  
  5.                                             img_w, img_h, color_type,  
  6.                                             valid_batch_size, capacity)with tf.Session() as sess: 
  7.  
  8.    coord = tf.train.Coordinator() 
  9.    threads = tf.train.start_queue_runners(coord=coord)    
  10.  try:        
  11.  for step in np.arange(max_step):             
  12. if coord.should_stop() :                 
  13. break 
  14.            X_train, y_train = sess.run([X_train_batch,  
  15.                                             y_train_batch]) 
  16.            X_valid, y_valid = sess.run([X_valid_batch, 
  17.                                             y_valid_batch]) 
  18.               
  19.            ckpt_path = 'log/weights-{val_loss:.4f}.hdf5' 
  20.            ckpt = tf.keras.callbacks.ModelCheckpoint(ckpt_path,  
  21.                                                      monitor='val_loss',  
  22.                                                      verbose=1,  
  23.                                                      save_best_only=True,  
  24.                                                      mode='min'
  25.            model.fit(X_train, y_train, batch_size=64,  
  26.                          epochs=50, verbose=1, 
  27.                          validation_data=(X_valid, y_valid), 
  28.                          callbacks=[ckpt])             
  29.            del X_train, y_train, X_valid, y_valid     
  30. except tf.errors.OutOfRangeError: 
  31.        print('done!')    finally: 
  32.        coord.request_stop() 
  33.    coord.join(threads) 
  34.    sess.close() 

Keras

keras文檔中對fit、predict、evaluate這些函數(shù)都有一個generator,這個generator就是解決分批問題的。

關(guān)鍵函數(shù):fit_generator

  1. # 讀取圖片函數(shù) 
  2. def get_im_cv2(paths, img_rows, img_cols, color_type=1, normalize=True): 
  3.    ''
  4.    參數(shù): 
  5.        paths:要讀取的圖片路徑列表 
  6.        img_rows:圖片行 
  7.        img_cols:圖片列 
  8.        color_type:圖片顏色通道 
  9.    返回:  
  10.        imgs: 圖片數(shù)組 
  11.    ''
  12.    # Load as grayscale 
  13.    imgs = []    for path in paths:         
  14. if color_type == 1: 
  15.            img = cv2.imread(path, 0)         
  16. elif color_type == 3: 
  17.            img = cv2.imread(path)         
  18. # Reduce size 
  19.        resized = cv2.resize(img, (img_cols, img_rows))        
  20.  if normalize: 
  21.            resized = resized.astype('float32'
  22.            resized /= 127.5 
  23.            resized -= 1.  
  24.         
  25.        imgs.append(resized)         
  26.    return np.array(imgs).reshape(len(paths), img_rows, img_cols, color_type) 

獲取批次函數(shù),其實(shí)就是一個generator

  1. def get_train_batch(X_train, y_train, batch_size, img_w, img_h, color_type, is_argumentation): 
  2.    ''
  3.    參數(shù): 
  4.        X_train:所有圖片路徑列表 
  5.        y_train: 所有圖片對應(yīng)的標(biāo)簽列表 
  6.        batch_size:批次 
  7.        img_w:圖片寬 
  8.        img_h:圖片高 
  9.        color_type:圖片類型 
  10.        is_argumentation:是否需要數(shù)據(jù)增強(qiáng) 
  11.    返回:  
  12.        一個generator, 
  13. x: 獲取的批次圖片  
  14. y: 獲取的圖片對應(yīng)的標(biāo)簽 
  15.    ''
  16.    while 1:         
  17. for i in range(0, len(X_train), batch_size): 
  18.            x = get_im_cv2(X_train[i:i+batch_size], img_w, img_h, color_type) 
  19.            y = y_train[i:i+batch_size]             
  20. if is_argumentation:                 
  21. # 數(shù)據(jù)增強(qiáng) 
  22.                x, y = img_augmentation(x, y)             
  23. # 最重要的就是這個yield,它代表返回,返回以后循環(huán)還是會繼續(xù),然后再返回。就比如有一個機(jī)器一直在作累加運(yùn)算,但是會把每次累加中間結(jié)果告訴你一樣,直到把所有數(shù)加完 
  24.            yield({'input': x}, {'output': y}) 

訓(xùn)練函數(shù)

  1. result = model.fit_generator(generator=get_train_batch(X_train, y_train, train_batch_size, img_w, img_h, color_type, True),  
  2.          steps_per_epoch=1351,  
  3.          epochs=50, verbose=1, 
  4.          validation_data=get_train_batch(X_valid, y_valid, valid_batch_size,img_w, img_h, color_type, False), 
  5.          validation_steps=52, 
  6.          callbacks=[ckpt, early_stop], 
  7.          max_queue_size=capacity, 
  8.          workers=1) 

就是這么簡單。但是當(dāng)初從0到1的過程很難熬,每天都沒有進(jìn)展,沒有頭緒,急躁占據(jù)了思維的大部,熬過了這個階段,就會一切順利,不是運(yùn)氣,而是踩過的從0到1的每個腳印累積的靈感的爆發(fā),從0到1的腳印越多,后面的路越順利。

責(zé)任編輯:武曉燕 來源: 人工智能LeadAI
相關(guān)推薦

2021-03-06 10:25:19

內(nèi)存Java代碼

2021-02-03 15:12:08

java內(nèi)存溢出

2010-09-26 15:53:25

JVM內(nèi)存溢出

2011-08-25 10:50:32

SQL Server數(shù)Performance

2009-12-08 15:19:58

WCF大數(shù)據(jù)量

2024-04-25 10:06:03

內(nèi)存泄漏

2011-08-16 09:21:30

MySQL大數(shù)據(jù)量快速語句優(yōu)化

2011-04-18 11:13:41

bcp數(shù)據(jù)導(dǎo)入導(dǎo)出

2023-08-29 11:38:27

Java內(nèi)存

2024-01-31 10:11:41

Redis內(nèi)存

2022-03-25 09:01:16

CSS溢出屬性

2024-01-29 08:45:38

MySQL大數(shù)據(jù)分頁

2010-07-29 13:30:54

Hibari

2010-12-01 09:18:19

數(shù)據(jù)庫優(yōu)化

2018-04-02 15:37:33

數(shù)據(jù)庫MySQL翻頁

2018-09-06 16:46:33

數(shù)據(jù)庫MySQL分頁查詢

2010-05-05 10:30:46

MongoDBNoSQL

2024-07-30 15:56:42

2012-12-26 09:23:56

數(shù)據(jù)庫優(yōu)化

2024-09-09 09:41:03

內(nèi)存溢出golang開發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲av无码成人精品国产| avav在线播放| 91影院在线播放| 欧美在线播放| 亚洲色图狂野欧美| 三级一区二区三区| h片在线观看视频免费| 久久久久久久久久久久久夜| 国产中文欧美精品| 亚洲精品www久久久久久| 欧美综合另类| 亚洲成人网av| 中文字幕亚洲影院| 中文字幕在线直播| 亚洲精品免费在线播放| 日韩成人在线资源| 丰满少妇被猛烈进入| 麻豆精品视频在线| 日本精品视频在线播放| 青青操国产视频| jizzjizz欧美69巨大| 亚洲加勒比久久88色综合| 中文字幕资源在线观看| 高清成人在线| 精品国产91久久久| 成人国产一区二区三区| aaa在线免费观看| 91看片淫黄大片一级在线观看| 成人亚洲欧美一区二区三区| 无码视频一区二区三区| 国产日韩欧美三区| 午夜精品久久17c| 国产性xxxx| 国产国产精品| 中文字幕一精品亚洲无线一区| 日韩免费高清一区二区| av日韩精品| 91麻豆精品国产| 国产精品一区二区羞羞答答| 热色播在线视频| 一区二区三区欧美视频| 中文字幕久久一区| 欧美日本一道| 国产精品久久久一本精品| 日本一区二区三区精品视频| 三区在线视频| 久久久美女毛片| 欧美一级日本a级v片| 天堂а在线中文在线无限看推荐| 成人午夜伦理影院| 国产区日韩欧美| 欧美一区二区公司| 成人av在线播放网址| 国产尤物99| 神马午夜在线观看| 99re这里只有精品视频首页| 欧美大香线蕉线伊人久久| 手机福利小视频在线播放| 91丨porny丨蝌蚪视频| 麻豆蜜桃91| 国产永久免费高清在线观看| 日本一区二区高清| 亚洲一区二区三区加勒比| 在线观看av的网站| 日韩毛片视频在线看| 成人在线观看www| 性欧美video高清bbw| 一区二区在线免费| 五十路熟女丰满大屁股| 中文字幕 在线观看| 色婷婷综合五月| www.日本一区| 一区二区三区亚洲变态调教大结局 | 国产中文一区二区三区| 亚洲综合日韩中文字幕v在线| 精品欧美在线观看| www.欧美日韩国产在线| 欧美一区亚洲二区| 巨大荫蒂视频欧美另类大| 一区二区三区在线视频免费观看 | 免费看特级毛片| 国产精品v一区二区三区| 欧美一区二区大胆人体摄影专业网站| 欧美brazzers| 极品少妇一区二区三区精品视频| 丁香婷婷久久久综合精品国产| 欧美自拍第一页| 久久精品亚洲精品国产欧美kt∨| 亚洲乱码一区二区三区| 在线观看免费视频你懂的| 欧美色视频日本版| 九九九九九伊人| 久久av国产紧身裤| 日韩中文字幕国产精品| 日本中文字幕免费| 免费观看成人鲁鲁鲁鲁鲁视频| 99精品国产高清在线观看| 精品美女视频在线观看免费软件 | 在线亚洲美日韩| 91超碰在线免费| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲激情免费观看| 国产成人av免费在线观看| 国产亚洲毛片在线| 亚洲最大的成人网| 国产中文字幕在线观看| 亚洲一区国产视频| 污污的视频免费| 久久91麻豆精品一区| 欧美日韩成人在线播放| 国产精品露脸视频| 91女厕偷拍女厕偷拍高清| 熟妇熟女乱妇乱女网站| 91看片一区| 国产网站欧美日韩免费精品在线观看| 日本老熟俱乐部h0930| 三级久久三级久久| 久久精品美女| 女囚岛在线观看| 91麻豆精品国产91久久久久久久久 | 国产熟人av一二三区| 欧美深夜视频| 九色91av视频| 国产喷水吹潮视频www| 国产欧美精品一区aⅴ影院 | 日韩av在线免费| 麻豆影视在线播放| 精彩视频一区二区三区| 午夜老司机精品| 桃花岛tv亚洲品质| 日韩精品视频免费| 欧美三级韩国三级日本三斤在线观看| 国产精品一级片| 伊人色综合久久天天五月婷| 91精品国产66| 一区二区三区黄色| 啪啪小视频网站| 久久精品一级爱片| 国产精品69页| 美日韩中文字幕| 97精品在线视频| 神马午夜电影一区二区三区在线观看| 亚洲午夜电影网| 91精品又粗又猛又爽| 91久久夜色精品国产九色| 国产精品免费区二区三区观看| 青草视频在线免费直播| 欧美v日韩v国产v| 久久伊人成人网| 成人午夜激情影院| 日韩欧美一区二| 色综合综合网| 国产精品入口免费视频一| 成年人在线观看网站| 欧洲av在线精品| 99re6热在线精品视频| 韩国毛片一区二区三区| 欧美日韩午夜爽爽| 久久精品福利| 日本人成精品视频在线| 浮生影视网在线观看免费| 欧美性色黄大片手机版| 亚洲熟女少妇一区二区| 国产一区二区精品在线观看| 中文字幕色呦呦| 欧美大胆a级| 热久久免费视频精品| melody高清在线观看| 欧美精品一级二级| 久久精品视频日本| 久久久久久久久99精品| 五月花丁香婷婷| 一区免费视频| 欧美一区二区三区四区夜夜大片| 亚洲精品大全| 韩国欧美亚洲国产| 国产在线一二三区| 日韩亚洲欧美在线观看| 久久久精品免费看| 亚洲欧美中日韩| 人妻无码中文久久久久专区| 日韩激情视频网站| www.日本三级| 日韩欧美网站| 国产一区二区久久久| 久久影视精品| 69**夜色精品国产69乱| 日本免费在线观看| 亚洲国产精品一区二区三区| www香蕉视频| 久久国产视频网| 男女激情免费视频| 国产欧美一区| 91成人免费观看| a一区二区三区| 久久精品国产免费观看| 日本精品久久久久久| 欧美片网站yy| 中文字幕亚洲精品一区| 亚洲免费观看在线视频| 国产一二三四五区| 成人aa视频在线观看| 男生操女生视频在线观看| 在线亚洲成人| av动漫在线播放| 成人久久一区| 久久久综合亚洲91久久98| 视频一区中文字幕精品| 国产精品成人品| 看黄在线观看| 欧美激情极品视频| 久久综合网导航| 亚洲人成在线观看网站高清| 亚洲精品成av人片天堂无码| 欧美日韩国产欧美日美国产精品| 国产黄色片视频| 亚洲精品伦理在线| 小早川怜子一区二区的演员表| 久久综合九色综合97婷婷女人| 韩国三级与黑人| 国产综合久久久久久鬼色 | 欧洲亚洲一区二区| jizz久久精品永久免费| 444亚洲人体| 亚洲精品aaa| 国产欧美一区二区| 日本在线视频一区二区| 欧美最猛性xxxxx免费| 国产资源在线观看入口av| 欧美激情高清视频| 黄色影院在线看| 久久久久久久久久av| 免费在线观看的电影网站| 久精品免费视频| 在线黄色网页| 欧美华人在线视频| 黄色影院在线看| 欧美激情网友自拍| 丁香花在线电影| 久久久久国产视频| av影片在线| 97国产成人精品视频| 毛片在线网站| 欧美专区在线视频| 亚洲成人av观看| 国产噜噜噜噜噜久久久久久久久| 国内欧美日韩| 国产精品一区专区欧美日韩| 91国内外精品自在线播放| 国产区亚洲区欧美区| 欧美性www| 亚洲精品欧美一区二区三区| 祥仔av免费一区二区三区四区| 国产女人18毛片水18精品| 欧美黄色a视频| 91嫩草免费看| 国产一区二区三区亚洲| 久久另类ts人妖一区二区| 欧美激情在线精品一区二区三区| 神马欧美一区二区| 99久久九九| 香港三级日本三级a视频| 99精品欧美| av丝袜天堂网| 国产一区视频网站| 韩国三级hd两男一女| 久久久亚洲高清| 人人澡人人澡人人看| 亚洲一区二区在线视频| 五月天婷婷久久| 在线观看精品一区| 国产99对白在线播放| 亚洲成人激情图| 国产天堂素人系列在线视频| 精品激情国产视频| 超碰在线网站| 国产成人精品免费视频| 国产日韩在线观看视频| 国外成人免费视频| 日韩三级在线| 日韩小视频网站| 久久综合影音| 免费观看黄网站| 国产亚洲欧美在线| 欧美卡一卡二卡三| 欧美日韩中文字幕综合视频| 国产精品亚洲lv粉色| 亚洲国产欧美精品| 日本中文字幕伦在线观看| 久久久久久91| 成人国产综合| 精品欧美日韩在线| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 欧美中文高清| 日韩av电影免费观看| 国产精品九九| 伊人色在线观看| 91一区在线观看| 国产精品丝袜一区二区| 色婷婷精品大视频在线蜜桃视频| 99在线观看免费| 国产亚洲美女久久| 国产资源在线观看入口av| 91在线观看免费网站| 国产中文字幕一区二区三区| www.欧美黄色| 国产一区二区三区免费看| av黄色在线免费观看| 午夜亚洲国产au精品一区二区| 怡红院男人的天堂| 亚洲乱码一区二区| www欧美xxxx| 成人激情免费在线| 不卡在线一区| av免费在线播放网站| 成人av资源站| 久草免费新视频| 欧美美女网站色| 91大神在线网站| 国产成人在线播放| 亚洲精品国产setv| 热99这里只有精品| 国产91精品精华液一区二区三区| av在线免费播放网址| 91久久国产最好的精华液| 欧美91精品久久久久国产性生爱| 久久免费视频观看| 天堂va欧美ⅴa亚洲va一国产| 女女同性女同一区二区三区按摩| 麻豆精品一区二区av白丝在线| 魔女鞋交玉足榨精调教| 精品国产老师黑色丝袜高跟鞋| 亚洲精品一区二区三区区别| 欧美成人免费一级人片100| 91精品国产自产观看在线| 国产大尺度在线观看| 免费观看成人av| 看黄色录像一级片| 欧美人xxxx| 成年人黄视频在线观看| 亚洲bt欧美bt日本bt| 欧美不卡视频| 老女人性生活视频| 亚洲国产日日夜夜| 日本黄色一区二区三区| 欧美亚洲日本黄色| 九九久久婷婷| 国产精品天天av精麻传媒| 欧美激情综合在线| 中文字幕永久在线视频| 日韩在线观看免费| 精品视频一区二区三区| 国产精品久久久久9999爆乳| 不卡的电视剧免费网站有什么| 日韩精品一区二区三区国语自制| 亚洲国产精品久久91精品| 少妇淫片在线影院| 欧美色图亚洲自拍| 麻豆精品在线播放| 久久久久久久久毛片| 亚洲国产成人在线播放| 蜜桃视频www网站在线观看| 蜜桃av色综合| 免费在线看成人av| 九九热视频在线免费观看| 日韩欧美国产综合一区| 麻豆免费在线| 日本一区二区三区视频在线观看| 久久99精品久久只有精品| 日本老熟俱乐部h0930| 亚洲娇小xxxx欧美娇小| 99热播精品免费| 狠狠干视频网站| 91丨porny丨首页| 一本到在线视频| 欧美精品久久久久久久久| 无码少妇一区二区三区| 日韩一区二区三区不卡视频| 亚洲午夜久久久久中文字幕久| 人成在线免费视频| 91九色单男在线观看| 亚洲精品美女91| 一级特黄曰皮片视频| 日韩视频一区二区三区| 裤袜国产欧美精品一区| 手机在线视频你懂的| 久久久午夜精品| 精品人妻一区二区三区蜜桃| 日本高清不卡在线| 亚洲欧美偷拍自拍| 毛片网站免费观看| 91精品国产一区二区三区| av日韩亚洲| 欧美日韩福利在线| 国产精品夫妻自拍| 欧美少妇另类| 成人片在线免费看| 看国产成人h片视频| 亚洲国产成人精品激情在线| x99av成人免费|