def fit(self, train_X, val_X, nb_epoch=50, batch_size=100, feature_weights=None):
print 'Training autoencoder'
optimizer = Adadelta(lr=1.5)
# optimizer = Adam()
# optimizer = Adagrad()
if feature_weights is None:
self.autoencoder.compile(optimizer=optimizer, loss='binary_crossentropy') # kld, binary_crossentropy, mse
else:
print 'Using weighted loss'
self.autoencoder.compile(optimizer=optimizer, loss=weighted_binary_crossentropy(feature_weights)) # kld, binary_crossentropy, mse
self.autoencoder.fit(train_X[0], train_X[1],
nb_epoch=nb_epoch,
batch_size=batch_size,
shuffle=True,
validation_data=(val_X[0], val_X[1]),
callbacks=[
ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, min_lr=0.01),
EarlyStopping(monitor='val_loss', min_delta=1e-5, patience=5, verbose=1, mode='auto'),
# ModelCheckpoint(self.model_save_path, monitor='val_loss', save_best_only=True, verbose=0),
]
)
return self
评论列表
文章目录