【发布时间】:2020-12-17 20:47:30
【问题描述】:
我试图了解使用 SWA (Tensorflow addons implementation) 有和没有回调的区别。所以,我有两个实现,它们都工作得很好。但是,我不确定两者之间的区别。第一个是没有 swa 回调:
optimizer = tf.keras.optimizers.Adam(learning_rate=.01, beta_1=0.9, beta_2=0.999)
opt = tfa.optimizers.SWA(optimizer, start_averaging=start_epoch,
average_period=1, lr=0.005)
model.compile(loss=lossFunction, optimizer=opt, metrics=['accuracy'])
print(model.summary())
# simple early stopping
es = tf.keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=20)
mc = tf.keras.callbacks.ModelCheckpoint(checkpointFilePath, monitor='val_accuracy',
mode='max', verbose=1, save_best_only=True)
history = model.fit(trainX, trainy, validation_data=(valX, valy),
batch_size=batch_size,
epochs=epochs, verbose=0, callbacks=[es, mc])
第二个是一样的,只是多了一个回调:
swa = tfa.callbacks.AverageModelCheckpoint(filepath=checkpointFilePath,
update_weights=True)
而当添加swa回调时,最后一行变化如下:
history = model.fit(trainX, trainy, validation_data=(valX, valy),
batch_size=batch_size,
epochs=epochs, verbose=0, callbacks=[es, mc, swa])
我的问题是这两种实现有什么区别?如果有的话,哪个更好?
【问题讨论】:
标签: python tensorflow optimization callback tensorflow2.0