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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Keras实现mode.fit和model.fit_generator比较

發布時間:2025/4/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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數組

from keras.callbacks import ModelCheckpointcheckpoint = ModelCheckpoint(save_best_only= True) callbacks = [checkpoint] model.fit(trainX, trainY, validation_data= (testX, testY), batch_size = 20, epoch = 15, callbacks = callbacks)

總結

以上是生活随笔為你收集整理的Keras实现mode.fit和model.fit_generator比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。