keras入門參考網址:
keras分類應用里的人臉預測kaggle:
人臉表情分類與識別:opencv人臉檢測+Keras情緒分類(四)
數據量大無法載入時,節約內存model.fit_generator:
1 def generate_arrays_from_file(path): 2 while 1: 3 f = open(path) 4 for line in f: 5 # create Numpy arrays of input data 6 # and labels, from each line in the file 7 x, y = process_line(line) 8 yield (x, y) 9 f.close() 10 11 model.fit_generator(generate_arrays_from_file('/my_file.txt'), 12 samples_per_epoch=10000, nb_epoch=10) 13 --------------------- 14 作者:ShellCollector 15 來源:CSDN 16 原文:https://blog.csdn.net/jacke121/article/details/78877352
1 def generate_batch_data_random(x, y, batch_size): 2 """逐步提取batch數據到顯存,降低對顯存的占用""" 3 ylen = len(y) 4 loopcount = ylen // batch_size 5 while (True): 6 i = randint(0,loopcount) 7 yield x[i * batch_size:(i + 1) * batch_size], y[i * batch_size:(i + 1) * batch_size]
keras 兩種訓練模型方式fit和fit_generator(節省內存) 提供了對比,fit 和 fit_generator 兩種代碼
國外一個大佬Adrian Rosebrock寫的博客:實現自定義Keras fit_generator函數(中文) How to use Keras fit and fit_generator (a hands-on tutorial) (英文)
利用fit_generator最小化顯存占用比率/數據Batch化
1 #從節省內存的角度,通過生成器的方式來訓練 2 def data_generator(data, targets, batch_size): 3 idx = np.arange(len(data)) 4 np.random.shuffle(idx) 5 batches = [idx[range(batch_size*i, min(len(data), batch_size*(i+1)))] for i in range(len(data)/batch_size+1)] 6 while True: 7 for i in batches: 8 xx, yy = np.array(map(gen_matrix, data[i])), np.array(map(gen_target, targets[i])) 9 yield (xx, yy) 10 11 12 batch_size = 1024 13 history = model.fit_generator(data_generator(d['words'], d['label'], batch_size), samples_per_epoch=len(d), nb_epoch=200) 14 model.save_weights('words_seq2seq_final_1.model')
keras數據自動生成器,繼承keras.utils.Sequence,結合fit_generator實現節約內存訓練
提前shuffle數據:
shuffle數據並且設置callback:存儲最佳weight
1 np.random.seed(1024) 2 random.shuffle(index) 3 data = data[index] 4 label = label[index] 5 splitpoint = int(round(num * 0.8)) 6 (X_train, X_val) = (data[0:splitpoint], data[splitpoint:]) 7 (Y_train, Y_val) = (label[0:splitpoint], label[splitpoint:]) 8 X_train=X_train/255 9 X_val=X_val/255
提供了三種方法,非常詳細