def build_network(deepest=False):
dropout = [0., 0.1, 0.2, 0.3, 0.4]
conv = [(64, 3, 3), (128, 3, 3), (256, 3, 3), (512, 3, 3), (512, 2, 2)]
input= Input(shape=(3, 32, 32))
output = fractal_net(
c=3, b=5, conv=conv,
drop_path=0.15, dropout=dropout,
deepest=deepest)(input)
output = Flatten()(output)
output = Dense(NB_CLASSES, init='he_normal')(output)
output = Activation('softmax')(output)
model = Model(input=input, output=output)
optimizer = SGD(lr=LEARN_START, momentum=MOMENTUM)
#optimizer = RMSprop(lr=LEARN_START)
#optimizer = Adam()
#optimizer = Nadam()
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
plot(model, to_file='model.png')
return model
python类RMSprop()的实例源码
def main():
game_width = 12
game_height = 9
nb_frames = 4
actions = ((-1, 0), (1, 0), (0, -1), (0, 1), (0, 0))
# Recipe of deep reinforcement learning model
model = Sequential()
model.add(Convolution2D(
16,
nb_row=3,
nb_col=3,
activation='relu',
input_shape=(nb_frames, game_height, game_width)))
model.add(Convolution2D(32, nb_row=3, nb_col=3, activation='relu'))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(len(actions)))
model.compile(RMSprop(), 'MSE')
agent = Agent(
model, nb_frames, snake_game, actions, size=(game_width, game_height))
agent.train(nb_epochs=10000, batch_size=64, gamma=0.8, save_model=True)
agent.play(nb_rounds=10)
def __init__(self, input_shape, lr=0.01, n_layers=2, n_hidden=8, rate_dropout=0.2, loss='risk_estimation'):
print("initializing..., learing rate %s, n_layers %s, n_hidden %s, dropout rate %s." %(lr, n_layers, n_hidden, rate_dropout))
self.model = Sequential()
self.model.add(Dropout(rate=rate_dropout, input_shape=(input_shape[0], input_shape[1])))
for i in range(0, n_layers - 1):
self.model.add(LSTM(n_hidden * 4, return_sequences=True, activation='tanh',
recurrent_activation='hard_sigmoid', kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal', bias_initializer='zeros',
dropout=rate_dropout, recurrent_dropout=rate_dropout))
self.model.add(LSTM(n_hidden, return_sequences=False, activation='tanh',
recurrent_activation='hard_sigmoid', kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal', bias_initializer='zeros',
dropout=rate_dropout, recurrent_dropout=rate_dropout))
self.model.add(Dense(1, kernel_initializer=initializers.glorot_uniform()))
# self.model.add(BatchNormalization(axis=-1, moving_mean_initializer=Constant(value=0.5),
# moving_variance_initializer=Constant(value=0.25)))
self.model.add(BatchRenormalization(axis=-1, beta_init=Constant(value=0.5)))
self.model.add(Activation('relu_limited'))
opt = RMSprop(lr=lr)
self.model.compile(loss=loss,
optimizer=opt,
metrics=['accuracy'])
def simple_cnn(agent, env, dropout=0, learning_rate=1e-3, **args):
with tf.device("/cpu:0"):
state = tf.placeholder('float', [None, agent.input_dim])
S = Input(shape=[agent.input_dim])
h = Reshape( agent.input_dim_orig )(S)
h = TimeDistributed( Convolution2D(16, 8, 8, subsample=(4, 4), border_mode='same', activation='relu', dim_ordering='tf'))(h)
# h = Dropout(dropout)(h)
h = TimeDistributed( Convolution2D(32, 4, 4, subsample=(2, 2), border_mode='same', activation='relu', dim_ordering='tf'))(h)
h = Flatten()(h)
# h = Dropout(dropout)(h)
h = Dense(256, activation='relu')(h)
# h = Dropout(dropout)(h)
h = Dense(128, activation='relu')(h)
V = Dense(env.action_space.n, activation='linear',init='zero')(h)
model = Model(S, V)
model.compile(loss='mse', optimizer=RMSprop(lr=learning_rate) )
return state, model
def init_model():
start_time = time.time()
print 'Compiling Model ... '
model = Sequential()
model.add(Dense(500, input_dim=784))
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(300))
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(10))
model.add(Activation('softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms,
metrics=['accuracy'])
print 'Model compiled in {0} seconds'.format(time.time() - start_time)
return model
def init_model():
"""
"""
start_time = time.time()
print 'Compiling model...'
model = Sequential()
model.add(Convolution2D(64, 3,3, border_mode='valid', input_shape=INPUT_SHAPE))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(.25))
model.add(Flatten())
model.add(Dense(10))
model.add(Activation('softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms,
metrics=['accuracy'])
print 'Model compiled in {0} seconds'.format(time.time() - start_time)
model.summary()
return model
def test_fuctional_model_saving():
input = Input(shape=(3,))
x = Dense(2)(input)
output = Dense(3)(x)
model = Model(input, output)
model.compile(loss=objectives.MSE,
optimizer=optimizers.RMSprop(lr=0.0001),
metrics=[metrics.categorical_accuracy])
x = np.random.random((1, 3))
y = np.random.random((1, 3))
model.train_on_batch(x, y)
out = model.predict(x)
_, fname = tempfile.mkstemp('.h5')
save_model(model, fname)
model = load_model(fname)
os.remove(fname)
out2 = model.predict(x)
assert_allclose(out, out2, atol=1e-05)
def __init__(self):
super().__init__()
self._learning = True
self._learning_rate = .1
self._discount = .1
self._epsilon = .9
# Create Model
model = Sequential()
model.add(Dense(2, init='lecun_uniform', input_shape=(2,)))
model.add(Activation('relu'))
model.add(Dense(10, init='lecun_uniform'))
model.add(Activation('relu'))
model.add(Dense(4, init='lecun_uniform'))
model.add(Activation('linear'))
rms = RMSprop()
model.compile(loss='mse', optimizer=rms)
self._model = model
def model(X_train, X_test, Y_train, Y_test):
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense({{choice([400, 512, 600])}}))
model.add(Activation('relu'))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense(10))
model.add(Activation('softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy'])
nb_epoch = 10
batch_size = 128
model.fit(X_train, Y_train,
batch_size=batch_size, nb_epoch=nb_epoch,
verbose=2,
validation_data=(X_test, Y_test))
score, acc = model.evaluate(X_test, Y_test, verbose=0)
return {'loss': -acc, 'status': STATUS_OK, 'model': model}
def model(X_train, Y_train, X_test, Y_test):
model = Sequential()
model.add(Dense(50, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense({{choice([20, 30, 40])}}))
model.add(Activation('relu'))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense(10))
model.add(Activation('softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy'])
model.fit(X_train, Y_train,
batch_size={{choice([64, 128])}},
nb_epoch=1,
verbose=2,
validation_data=(X_test, Y_test))
score, acc = model.evaluate(X_test, Y_test, verbose=0)
print('Test accuracy:', acc)
return {'loss': -acc, 'status': STATUS_OK, 'model': model}
def ensemble_model(X_train, X_test, Y_train, Y_test):
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense({{choice([400, 512, 600])}}))
model.add(Activation('relu'))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense(10))
model.add(Activation('softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy'])
nb_epoch = 10
batch_size = 128
model.fit(X_train, Y_train,
batch_size=batch_size, nb_epoch=nb_epoch,
verbose=2,
validation_data=(X_test, Y_test))
score, acc = model.evaluate(X_test, Y_test, verbose=0)
return {'loss': -acc, 'status': STATUS_OK, 'model': model}
def model_masking(discrete_time, init_alpha, max_beta):
model = Sequential()
model.add(Masking(mask_value=mask_value,
input_shape=(n_timesteps, n_features)))
model.add(TimeDistributed(Dense(2)))
model.add(Lambda(wtte.output_lambda, arguments={"init_alpha": init_alpha,
"max_beta_value": max_beta}))
if discrete_time:
loss = wtte.loss(kind='discrete', reduce_loss=False).loss_function
else:
loss = wtte.loss(kind='continuous', reduce_loss=False).loss_function
model.compile(loss=loss, optimizer=RMSprop(
lr=lr), sample_weight_mode='temporal')
return model
def get_optimizer(self):
if self.opt == 'sgd':
return k_opt.SGD(lr=self.learning_rate, momentum=self.momentum)
if self.opt == 'rmsprop':
return k_opt.RMSprop(lr=self.learning_rate)
if self.opt == 'adagrad':
return k_opt.Adagrad(lr=self.learning_rate)
if self.opt == 'adadelta':
return k_opt.Adadelta(lr=self.learning_rate)
if self.opt == 'adam':
return k_opt.Adam(lr=self.learning_rate)
raise Exception('Invalid optimization function - %s' % self.opt)
def get_dense_model():
"""Make keras model"""
learning_rate=1e-4
inp = Input(shape=(80*80,))
h = Dense(200, activation='relu')(inp)
out = Dense(1, activation='sigmoid')(h)
model = Model(inp, out)
optim = RMSprop(learning_rate)
model.compile(optim, 'binary_crossentropy')
try:
model.load_weights('mod_weights_binary.h5')
print('weights loaded')
except:
pass
return model
modular_neural_network.py 文件源码
项目:deep-learning-with-Keras
作者: decordoba
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def __init__(self):
filters1 = [16, 32, 64] # filters1 = [4, 8, 16, 32, 64, 128, 256]
filters2 = [16, 32, 64] # filters2 = [4, 8, 16, 32, 64, 128, 256]
losses1 = [losses.MSE, losses.MAE, losses.hinge, losses.categorical_crossentropy] # losses1 = [losses.MSE, losses.MAE, losses.hinge, losses.categorical_crossentropy]
optimizers1 = [optimizers.Adam()] # optimizers1 = [optimizers.Adadelta(), optimizers.Adagrad(), optimizers.Adam(), optimizers.Adamax(), optimizers.SGD(), optimizers.RMSprop()]
units1 = [16, 32, 64] # units1 = [4, 8, 16, 32, 64, 128, 256]
kernel_sizes1 = [(3, 3)] # kernel_sizes = [(3, 3), (5, 5)]
dropouts1 = [0.25] # dropouts1 = [0.25, 0.5, 0.75]
dropouts2 = [0.5] # dropouts2 = [0.25, 0.5, 0.75]
pool_sizes1 = [(2, 2)] # pool_sizes1 = [(2, 2)]
# create standard experiments structure
self.experiments = {"filters1": filters1,
"filters2": filters2,
"losses1": losses1,
"units1": units1,
"optimizers1": optimizers1,
"kernel_sizes1": kernel_sizes1,
"dropouts1": dropouts1,
"dropouts2": dropouts2,
"pool_sizes1": pool_sizes1}
def get_optimizer(name='Adadelta'):
if name == 'SGD':
return optimizers.SGD(clipnorm=1.)
if name == 'RMSprop':
return optimizers.RMSprop(clipnorm=1.)
if name == 'Adagrad':
return optimizers.Adagrad(clipnorm=1.)
if name == 'Adadelta':
return optimizers.Adadelta(clipnorm=1.)
if name == 'Adam':
return optimizers.Adam(clipnorm=1.)
if name == 'Adamax':
return optimizers.Adamax(clipnorm=1.)
if name == 'Nadam':
return optimizers.Nadam(clipnorm=1.)
return optimizers.Adam(clipnorm=1.)
def test_fuctional_model_saving():
input = Input(shape=(3,))
x = Dense(2)(input)
output = Dense(3)(x)
model = Model(input, output)
model.compile(loss=objectives.MSE,
optimizer=optimizers.RMSprop(lr=0.0001),
metrics=[metrics.categorical_accuracy])
x = np.random.random((1, 3))
y = np.random.random((1, 3))
model.train_on_batch(x, y)
out = model.predict(x)
_, fname = tempfile.mkstemp('.h5')
save_model(model, fname)
model = load_model(fname)
os.remove(fname)
out2 = model.predict(x)
assert_allclose(out, out2, atol=1e-05)
def test_saving_lambda_custom_objects():
input = Input(shape=(3,))
x = Lambda(lambda x: square_fn(x), output_shape=(3,))(input)
output = Dense(3)(x)
model = Model(input, output)
model.compile(loss=objectives.MSE,
optimizer=optimizers.RMSprop(lr=0.0001),
metrics=[metrics.categorical_accuracy])
x = np.random.random((1, 3))
y = np.random.random((1, 3))
model.train_on_batch(x, y)
out = model.predict(x)
_, fname = tempfile.mkstemp('.h5')
save_model(model, fname)
model = load_model(fname, custom_objects={'square_fn': square_fn})
os.remove(fname)
out2 = model.predict(x)
assert_allclose(out, out2, atol=1e-05)
def init_model():
start_time = time.time()
print 'Compiling Model ... '
model = Sequential()
model.add(Dense(500, input_dim=784))
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(300))
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(10))
model.add(Activation('softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy'])
print 'Model compield in {0} seconds'.format(time.time() - start_time)
return model
def createNetwork(self):
model = Sequential()
firstlayer = True
for l in self.layers:
if firstlayer:
model.add(Dense(l.size, input_shape=self.input_shape))
firstlayer = False
else:
model.add(Dense(l.size))
model.add(Activation(l.activation))
if l.dropout > 0:
model.add(Dropout(l.dropout))
# final part
model.add(Dense(self.noutputs))
if Config.task_type == "classification":
model.add(Activation('softmax'))
model.compile(loss=Config.loss,
optimizer=RMSprop())
return model
def create_model(self, epsilon):
"""Return a compiled model and the state and action input
layers with the given epsilon for numerical stability.
"""
inputs = Input(shape=(self.state_shape,))
action_input = Input(shape=(self.action_shape,))
x1 = Dense(self.neurons_per_layer[0], activation='relu')(inputs)
x1 = Dense(self.neurons_per_layer[1], activation='relu')(x1)
x2 = Dense(self.neurons_per_layer[1], activation='relu')(action_input)
x = add([x1, x2])
for n in self.neurons_per_layer[2:]:
x = Dense(n, activation='relu')(x)
outputs = Dense(self.action_shape)(x)
model = Model(inputs=[inputs, action_input], outputs=outputs)
assert self.optimizer_choice in ['adam', 'rmsprop']
if self.optimizer_choice == 'adam':
opti = Adam(lr=self.alpha, epsilon=epsilon)
else:
opti = RMSprop(lr=self.alpha, epsilon=epsilon)
model.compile(optimizer=opti, loss='mse')
return model, inputs, action_input
def build_model(layers):
model = Sequential()
model.add(Dense(layers[1], input_shape=(20,), activation='relu'))
model.add(Dropout(0.2)) # Dropout overfitting
# model.add(Dense(layers[2],activation='tanh'))
# model.add(Dropout(0.2)) # Dropout overfitting
model.add(Dense(layers[2], activation='relu'))
model.add(Dropout(0.2)) # Dropout overfitting
model.add(Dense(output_dim=layers[3]))
model.add(Activation("softmax"))
model.summary()
start = time.time()
# sgd = SGD(lr=0.5, decay=1e-6, momentum=0.9, nesterov=True)
# model.compile(loss="mse", optimizer=sgd)
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=['accuracy']) # Nadam RMSprop()
print "Compilation Time : ", time.time() - start
return model
def createModel(self, inputs, outputs, hiddenLayers, activationType):
model = Sequential()
if len(hiddenLayers) == 0:
model.add(Dense(self.output_size, input_shape=(self.input_size,), init='lecun_uniform'))
model.add(Activation("linear"))
else :
model.add(Dense(hiddenLayers[0], input_shape=(self.input_size,), init='lecun_uniform'))
if (activationType == "LeakyReLU") :
model.add(LeakyReLU(alpha=0.01))
else :
model.add(Activation(activationType))
for index in range(1, len(hiddenLayers)-1):
layerSize = hiddenLayers[index]
model.add(Dense(layerSize, init='lecun_uniform'))
if (activationType == "LeakyReLU") :
model.add(LeakyReLU(alpha=0.01))
else :
model.add(Activation(activationType))
model.add(Dense(self.output_size, init='lecun_uniform'))
model.add(Activation("linear"))
optimizer = optimizers.RMSprop(lr=1, rho=0.9, epsilon=1e-06)
model.compile(loss="mse", optimizer=optimizer)
return model
def createModel(self, inputs, outputs, hiddenLayers, activationType):
model = Sequential()
if len(hiddenLayers) == 0:
model.add(Dense(self.output_size, input_shape=(self.input_size,), init='lecun_uniform'))
model.add(Activation("linear"))
else :
model.add(Dense(hiddenLayers[0], input_shape=(self.input_size,), init='lecun_uniform'))
if (activationType == "LeakyReLU") :
model.add(LeakyReLU(alpha=0.01))
else :
model.add(Activation(activationType))
for index in range(1, len(hiddenLayers)-1):
layerSize = hiddenLayers[index]
model.add(Dense(layerSize, init='lecun_uniform'))
if (activationType == "LeakyReLU") :
model.add(LeakyReLU(alpha=0.01))
else :
model.add(Activation(activationType))
model.add(Dense(self.output_size, init='lecun_uniform'))
model.add(Activation("linear"))
optimizer = optimizers.RMSprop(lr=1, rho=0.9, epsilon=1e-06)
model.compile(loss="mse", optimizer=optimizer)
return model
def __init__(self, action_space, batch_size=32, screen=(84, 84), swap_freq=200):
from keras.optimizers import RMSprop
# -----
self.screen = screen
self.input_depth = 1
self.past_range = 3
self.observation_shape = (self.input_depth * self.past_range,) + self.screen
self.batch_size = batch_size
_, _, self.train_net, adventage = build_network(self.observation_shape, action_space.n)
self.train_net.compile(optimizer=RMSprop(epsilon=0.1, rho=0.99),
loss=[value_loss(), policy_loss(adventage, args.beta)])
self.pol_loss = deque(maxlen=25)
self.val_loss = deque(maxlen=25)
self.values = deque(maxlen=25)
self.entropy = deque(maxlen=25)
self.swap_freq = swap_freq
self.swap_counter = self.swap_freq
self.unroll = np.arange(self.batch_size)
self.targets = np.zeros((self.batch_size, action_space.n))
self.counter = 0
def __init__(self, action_space, batch_size=32, screen=(84, 84), swap_freq=200):
from keras.optimizers import RMSprop
# -----
self.screen = screen
self.input_depth = 1
self.past_range = 3
self.observation_shape = (self.input_depth * self.past_range,) + self.screen
self.batch_size = batch_size
self.action_value = build_network(self.observation_shape, action_space.n)
self.action_value.compile(optimizer=RMSprop(clipnorm=1.), loss='mse')
self.losses = deque(maxlen=25)
self.q_values = deque(maxlen=25)
self.swap_freq = swap_freq
self.swap_counter = self.swap_freq
self.unroll = np.arange(self.batch_size)
self.frames = 0
def __init__(self, action_space, screen=(84, 84), n_step=8, discount=0.99):
from keras.optimizers import RMSprop
# -----
self.screen = screen
self.input_depth = 1
self.past_range = 3
self.observation_shape = (self.input_depth * self.past_range,) + self.screen
self.action_value = build_network(self.observation_shape, action_space.n)
self.action_value.compile(optimizer=RMSprop(clipnorm=1.), loss='mse') # clipnorm=1.
self.action_space = action_space
self.observations = np.zeros(self.observation_shape)
self.last_observations = np.zeros_like(self.observations)
# -----
self.n_step_observations = deque(maxlen=n_step)
self.n_step_actions = deque(maxlen=n_step)
self.n_step_rewards = deque(maxlen=n_step)
self.n_step = n_step
self.discount = discount
self.counter = 0
def get_optimizer(args):
clipvalue = 0
clipnorm = 10
if args.algorithm == 'rmsprop':
optimizer = opt.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06, clipnorm=clipnorm, clipvalue=clipvalue)
elif args.algorithm == 'sgd':
optimizer = opt.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False, clipnorm=clipnorm, clipvalue=clipvalue)
elif args.algorithm == 'adagrad':
optimizer = opt.Adagrad(lr=0.01, epsilon=1e-06, clipnorm=clipnorm, clipvalue=clipvalue)
elif args.algorithm == 'adadelta':
optimizer = opt.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06, clipnorm=clipnorm, clipvalue=clipvalue)
elif args.algorithm == 'adam':
optimizer = opt.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, clipnorm=clipnorm, clipvalue=clipvalue)
elif args.algorithm == 'adamax':
optimizer = opt.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, clipnorm=clipnorm, clipvalue=clipvalue)
return optimizer
def main():
from keras.optimizers import Adam, RMSprop, SGD
from metric import dice_coef, dice_coef_loss
import numpy as np
img_rows = IMG_ROWS
img_cols = IMG_COLS
optimizer = RMSprop(lr=0.045, rho=0.9, epsilon=1.0)
model = get_unet(Adam(lr=1e-5))
model.compile(optimizer=optimizer, loss=dice_coef_loss, metrics=[dice_coef])
x = np.random.random((1, 1,img_rows,img_cols))
res = model.predict(x, 1)
print res
#print 'res', res[0].shape
print 'params', model.count_params()
print 'layer num', len(model.layers)
#
def setOptimizer(self, **kwargs):
"""
Sets a new optimizer for the Translation_Model.
:param **kwargs:
"""
# compile differently depending if our model is 'Sequential' or 'Graph'
if self.verbose > 0:
logging.info("Preparing optimizer and compiling.")
if self.params['OPTIMIZER'].lower() == 'adam':
optimizer = Adam(lr=self.params['LR'], clipnorm=self.params['CLIP_C'])
elif self.params['OPTIMIZER'].lower() == 'rmsprop':
optimizer = RMSprop(lr=self.params['LR'], clipnorm=self.params['CLIP_C'])
elif self.params['OPTIMIZER'].lower() == 'nadam':
optimizer = Nadam(lr=self.params['LR'], clipnorm=self.params['CLIP_C'])
elif self.params['OPTIMIZER'].lower() == 'adadelta':
optimizer = Adadelta(lr=self.params['LR'], clipnorm=self.params['CLIP_C'])
elif self.params['OPTIMIZER'].lower() == 'sgd':
optimizer = SGD(lr=self.params['LR'], clipnorm=self.params['CLIP_C'])
else:
logging.info('\tWARNING: The modification of the LR is not implemented for the chosen optimizer.')
optimizer = eval(self.params['OPTIMIZER'])
self.model.compile(optimizer=optimizer, loss=self.params['LOSS'],
sample_weight_mode='temporal' if self.params['SAMPLE_WEIGHTS'] else None)