Keras 损失函数值不会降低



我正在用Keras实现MLP,我注意到损失函数在历元期间不会改变。

我试着改变学习率和权重初始化,但没有任何变化。

这是代码:

mlp = keras.models.Sequential()
# add input layer
mlp.add(
keras.layers.Input(
shape = (training_dataset.shape[1], )
)
)
# add hidden layer
mlp.add(
keras.layers.Dense(
units=training_dataset.shape[1] - 500,
input_shape = (training_dataset.shape[1] - 500,),
kernel_initializer=keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None),
bias_initializer='zeros',
activation='relu')
)
# add output layer
mlp.add(
keras.layers.Dense(
units=1,
input_shape = (1, ),
kernel_initializer=keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None),
bias_initializer='zeros',
activation='sigmoid')
)
# define SGD optimizer
sgd_optimizer = keras.optimizers.SGD(lr=0.00001, decay=1e-2)
print('Compiling model...n')
mlp.compile(
optimizer=sgd_optimizer,
loss=listnet_loss
)
mlp.summary() # print model settings
generator = DataGenerator(training_dataset, training_dataset_labels[0:5000], groups_id_count, [])
# Training
with tf.device('/GPU:0'):
print('Start training')
mlp.fit(generator, steps_per_epoch=len(training_dataset), 
epochs=50, verbose=1, workers=10, 
use_multiprocessing=True,
callbacks=[KendallTauHistory(generator)])

这是我的损失函数:

def listnet_loss(real_labels, predicted_labels):
return -K.sum(get_top_one_probability(real_labels) * tf.math.log(get_top_one_probability(predicted_labels)))

我该怎么办?

好的,通过更改优化器,损失会在时期内减少。

最新更新