Sign up to take part
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
im trying to use custom callback
callbacks = [
EarlyStopping(monitor='val_accuracy',
min_delta=1e-3,
patience=5,
mode='max',
restore_best_weights=True,
verbose=1),
]
its running ok! but o dashboard not showing epochs and the running state only showing -> Optimization results will appear as soon as they are available.
sharing full code below from Training
from keras.callbacks import EarlyStopping
early_stopping_callback = [
EarlyStopping(monitor='val_accuracy',
min_delta=1e-3,
patience=5,
mode='max',
restore_best_weights=True,
verbose=1),
]
# A function that builds train and validation sequences.
# You can define your custom data augmentation based on the original train and validation sequences
# build_train_sequence_with_batch_size - function that returns train data sequence depending on
# batch size
# build_validation_sequence_with_batch_size - function that returns validation data sequence depending on
# batch size
def build_sequences(build_train_sequence_with_batch_size, build_validation_sequence_with_batch_size):
batch_size = 64
train_sequence = build_train_sequence_with_batch_size(batch_size)
validation_sequence = build_validation_sequence_with_batch_size(batch_size)
return train_sequence, validation_sequence
# A function that contains a call to fit a model.
# model - compiled model
# train_sequence - train data sequence, returned in build_sequence
# validation_sequence - validation data sequence, returned in build_sequence
# base_callbacks - a list of Dataiku callbacks, that are not to be removed. User callbacks can be added to this list
def fit_model(model, train_sequence, validation_sequence, base_callbacks):
epochs = 50
model.fit_generator(train_sequence,
epochs=epochs,
callbacks=early_stopping_callback,
validation_data=(validation_sequence),
shuffle=True)
and for model Architecture
from keras.layers import Input, Dense
from keras.models import Model
from keras import Sequential
from keras.layers import Embedding, Bidirectional, LSTM, Dense
from keras.optimizers import Adam
# Define the keras architecture of your model in 'build_model' and return it. Compilation must be done in 'compile_model'.
# input_shapes - dictionary of shapes per input as defined in features handling
# n_classes - For classification, number of target classes
def build_model(input_shapes, n_classes=None):
# This input will receive all the preprocessed features
# sent to 'main'
input_main = Input(shape=input_shapes["main"], name="main")
#input_main = Input(shape=(50), name="name_preprocessed")
num_alphabets=27
name_length=50
embedding_dim=256
x = Sequential()
x = Embedding(num_alphabets, embedding_dim, input_length=name_length)(input_main)
x = Bidirectional(LSTM(units=128, recurrent_dropout=0.2, dropout=0.2))(x)
x = Dense(1, activation="sigmoid")(x)
predictions = Dense(1, activation='sigmoid')(x)
# The 'inputs' parameter of your model must contain the
# full list of inputs used in the architecture
model = Model(inputs=[input_main], outputs=predictions)
return model
# Compile your model and return it
# model - model defined in 'build_model'
def compile_model(model):
# The loss function depends on the type of problem you solve.
# 'binary_crossentropy' is appropriate for a binary classification.
model.compile(loss='binary_crossentropy',
optimizer=Adam(learning_rate=0.001),
metrics=['accuracy'])
return model
Operating system used: linux ubuntu
I got the solution for that I didn't know about the base_callbacks is fundamental for saving a model than append a custom callback to base one !
from keras.callbacks import EarlyStopping
def build_sequences(build_train_sequence_with_batch_size, build_validation_sequence_with_batch_size):
batch_size = 64
train_sequence = build_train_sequence_with_batch_size(batch_size)
validation_sequence = build_validation_sequence_with_batch_size(batch_size)
return train_sequence, validation_sequence
def fit_model(model, train_sequence, validation_sequence, base_callbacks):
epochs = 1
early_stopping_callback = EarlyStopping(monitor='val_accuracy', min_delta=1e-3, patience=5, mode='max', restore_best_weights=True, verbose=1)
base_callbacks.append(early_stopping_callback)
model.fit_generator(train_sequence,
epochs=epochs,
callbacks=base_callbacks,
validation_data=(validation_sequence),
shuffle=True)
I got the solution for that I didn't know about the base_callbacks is fundamental for saving a model than append a custom callback to base one !
from keras.callbacks import EarlyStopping
def build_sequences(build_train_sequence_with_batch_size, build_validation_sequence_with_batch_size):
batch_size = 64
train_sequence = build_train_sequence_with_batch_size(batch_size)
validation_sequence = build_validation_sequence_with_batch_size(batch_size)
return train_sequence, validation_sequence
def fit_model(model, train_sequence, validation_sequence, base_callbacks):
epochs = 1
early_stopping_callback = EarlyStopping(monitor='val_accuracy', min_delta=1e-3, patience=5, mode='max', restore_best_weights=True, verbose=1)
base_callbacks.append(early_stopping_callback)
model.fit_generator(train_sequence,
epochs=epochs,
callbacks=base_callbacks,
validation_data=(validation_sequence),
shuffle=True)
Thank you for sharing your solution with us @traderpedroso!