前提・実現したいこと
tensorflowのearlyStoppingを使いたいのですが、今使っている物体検出のプログラムのどこに追加すればいいかがわかりません
該当のソースコード
python
1ath_prefix = 'C:\Users\ユーザー名\Desktop\引継ぎ用\リンゴ検出システム\リンゴ検出に使うデータ\学習データ1000枚/' # 画像フォルダを指定 2gen = Generator(gt, bbox_util, 2, path_prefix, 3 train_keys, val_keys, 4 (input_shape[0], input_shape[1]), do_crop=False) 5model = SSD300(input_shape, num_classes=NUM_CLASSES) 6model.load_weights('C:\Users\ユーザー名\Desktop\引継ぎ用\リンゴ検出システム\リンゴ検出に使うデータ\weights_SSD300.hdf5', by_name=True) #重みの指定 7freeze = ['input_1', 'conv1_1', 'conv1_2', 'pool1', 8 'conv2_1', 'conv2_2', 'pool2', 9 'conv3_1', 'conv3_2', 'conv3_3', 'pool3'] 10for L in model.layers[:15]: 11 if L.name in freeze: 12 L.trainable = False 13def schedule(epoch, decay=0.9): 14 return base_lr * decay**(epoch) 15 16 17# early_stopping = EarlyStopping(monitor='val_loss', min_delta=0, patience=10, verbose=0, mode='auto') #追加 18callbacks = [keras.callbacks.ModelCheckpoint('C:\Users\ユーザー名\Desktop\引継ぎ用\リンゴ検出システム\リンゴ検出に使うデータ/検出モデルの生成用フォルダ/weights.{epoch:02d}-{loss:.3f}-{val_loss:.3f}-{acc:.3f}.hdf5', #物体検出モデルの重みファイル生成 19 verbose=1,monitor='val_loss',save_best_only=True,mode='min',#val_lossの値を監視し値がよくなっているものだけを更新して保存する 20 save_weights_only=True, period=1), #間隔は回数1 21 keras.callbacks.LearningRateScheduler(schedule)] 22 23base_lr = 5e-5 #学習率 24keras.layers.Dropout(0.2) #ドロップアウト 25optim = keras.optimizers.Adam(lr=base_lr) 26model.compile(optimizer=optim, 27 loss=MultiboxLoss(NUM_CLASSES, neg_pos_ratio=2.0).compute_loss, metrics=['accuracy']) 28nb_epoch = 100 #学習回数を指定 29result = model.fit_generator(gen.generate(True), gen.train_batches, 30 nb_epoch, verbose=1, 31 callbacks=callbacks, 32 validation_data=gen.generate(False), 33 nb_val_samples=gen.val_batches, 34 nb_worker=1) 35model.save('apple.hdf5')
補足情報(FW/ツールのバージョンなど)
プログラムの途中にあるearly_stopping自体があっているコードなのかもわかりません
earlystoppingについての使い方を教えてください
参考
https://www.kaggle.com/ruruamour/sample-code4-early-stopping-callback
の「Preprocess7. 学習」の「■-- Early Stopping」