Keras实现mode.fit和model.fit_generator比较
生活随笔
收集整理的這篇文章主要介紹了
Keras实现mode.fit和model.fit_generator比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模型部分
模型部分都一樣,比如我這里使用AlexNet網絡來做。我做的是一個二分類任務,所以結尾部分網絡有改動。輸入圖片尺寸是256*256的,所以輸出圖片尺寸有一點改動。
from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D, ZeroPadding2D, BatchNormalization import os# AlexNet model = Sequential() #第一段 model.add(Conv2D(filters=96, kernel_size=(11,11),strides=(4,4), padding='valid',input_shape=(256, 256, 3),activation='relu')) model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid')) #第二段 model.add(Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), padding='same', activation='relu')) model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid')) #第三段 model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding='same', activation='relu')) model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding='same', activation='relu')) model.add(Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), padding='same', activation='relu')) model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid')) #第四段 model.add(Flatten()) model.add(Dense(4096, activation='relu')) model.add(Dropout(0.5))model.add(Dense(4096, activation='relu')) model.add(Dropout(0.5))model.add(Dense(1000, activation='relu')) model.add(Dropout(0.5))# Output Layer model.add(Dense(1)) model.add(Activation('sigmoid'))使用model.fit_generator
使用這個方法,因為是生成器,所以會比較節省內存。但有一個問題是沒有辦法定義callback,有的地方不太方便。
train_dir = os.path.abspath(r"../train/")train_dir_good = os.path.abspath(r"../train/good/") train_dir_wrong = os.path.abspath(r"../train/wrong/")validation_dir = os.path.abspath(r"../validation/") validation_dir_good = os.path.abspath(r"../validation/good/") validation_dir_wrong = os.path.abspath(r"../validation/wrong/") from keras.preprocessing.image import ImageDataGeneratortrain_datagen = ImageDataGenerator(rescale = 1./255) test_datagen = ImageDataGenerator(rescale = 1./255)train_generator = train_datagen.flow_from_directory(train_dir, batch_size = 20, class_mode= 'binary')validation_generator = test_datagen.flow_from_directory(validation_dir, batch_size = 20, class_mode = 'binary') from keras import optimizersmodel.compile(loss= 'binary_crossentropy', optimizer= optimizers.RMSprop(lr= 1e-4, decay= 0.01/20), metrics= ['acc'])history = model.fit_generator(train_generator, steps_per_epoch = 100, epochs= 20,validation_data = validation_generator, validation_steps= 50) model.save('AlexNet.h5')使用model.fit
下面使用model.fit來做:
https://keras.io/zh/models/model/ 這個鏈接說明了model.fit怎么用,需要輸入的numpy數組
總結
以上是生活随笔為你收集整理的Keras实现mode.fit和model.fit_generator比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10+tensorflow:Imp
- 下一篇: LeetCode:1. Two Sum