亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 keras 的 CNN 結果不一致

使用 keras 的 CNN 結果不一致

皈依舞 2021-11-16 16:10:03
我使用 CNN 根據 Keras 中的圖像對汽車損壞進行了預測,無論它們是否嚴重。每次我為同一數據集運行代碼并且沒有更改其他參數時,預測的類別和準確性都會發生變化。我嘗試重新啟動內核并為模型設置種子,希望獲得一致的結果。我是 python 的新手,所以請幫助我每次都獲得相同的結果。import randomrandom.seed(801)# Importing the Keras libraries and packagesfrom keras.models import Sequentialfrom keras.layers import Conv2Dfrom keras.layers import MaxPooling2Dfrom keras.layers import Flattenfrom keras.layers import Densefrom keras.layers import Dropout# Initialising the CNNclassifier = Sequential()# Step 1 - Convolutionclassifier.add(Conv2D(64, (2, 2), input_shape = (64, 64, 3), activation = 'relu'))# Step 2 - Poolingclassifier.add(MaxPooling2D(pool_size = (2, 2)))# Adding a second convolutional layerclassifier.add(Conv2D(64, (2, 2), activation = 'relu'))classifier.add(MaxPooling2D(pool_size = (2, 2)))# Step 3 - Flatteningclassifier.add(Flatten())# Adding dropoutclassifier.add(Dropout(0.2))# Step 4 - Full connectionclassifier.add(Dense(units = 128, activation = 'relu'))# Adding dropoutclassifier.add(Dropout(0.2))classifier.add(Dense(units = 1, activation = 'sigmoid'))# Compiling the CNNclassifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])# Part 2 - Fitting the CNN to the imagesfrom keras.preprocessing.image import ImageDataGeneratortrain_datagen = ImageDataGenerator(rescale = 1./255,                                  # shear_range = 0.2,                                  # zoom_range = 0.2,                                   horizontal_flip = True)test_datagen = ImageDataGenerator(rescale = 1./255)#train_labels = keras.utils.to_categorical(train_labels,num_classes)#test_labels = keras.utils.to_categorical(test_labels,num_classes)training_set = train_datagen.flow_from_directory('C:/Users/Allianz/Desktop/Image Processing/car-damage-detective-neokt/app/2 category/training',                                                 target_size = (64, 64),                                                 batch_size = 16,                                                 class_mode = 'binary')
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

每次分類時,您似乎都在訓練模型!這就是造成不一致的原因。盡管您設置了種子,但仍會產生不同結果的原因可以在(此處)找到[為什么即使我設置了隨機種子,我也無法在 Keras 中獲得可重現的結果?.

我建議您將這兩個文件分開,以便在一個腳本中訓練并加載然后在另一個腳本中進行測試。這樣,您將獲得更一致的結果。


查看完整回答
反對 回復 2021-11-16
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

我在加載重量時遇到了類似的問題。問題是,當您加載權重時,由于模型聲明,keras 隨機分配權重。我改用檢查點來存儲我的權重并model.load_weights(checkpoints_directory)加載權重。您將不得不為此使用回調。這是此任務的簡短代碼片段(Google有關于他的主題的精彩視頻)。


from keras.callbacks import ModelCheckpoint


callbacks = [ModelCheckpoint(checkpoints_directory, monitor='val_loss', save_weights_only=True, save_best_only=True, period=period)]


model.fit(..., callbacks=callbacks, ...)


查看完整回答
反對 回復 2021-11-16
  • 2 回答
  • 0 關注
  • 351 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號