最小化和最大化损失。

3

我希望训练一个自编码器,使得在某些观察值上重构误差很低,而在其他观察值上则很高。

from keras.model import Sequential
from keras.layers import Dense
import keras.backend as K

def l1Loss(y_true, y_pred):
    return K.mean(K.abs(y_true - y_pred))

model = Sequential()
model.add(Dense(5, input_dim=10, activation='relu'))
model.add(Dense(10, activation='sigmoid'))
model.compile(optimizer='adam', loss=l1Loss)

for i in range(1000):
    model.train_on_batch(x_good, x_good) # minimize on low
    model.train_on_batch(x_bad, x_bad, ???) # need to maximize this part, so that mse(x_bad, x_bad_reconstructed is high)

我看到有人建议用 sample_weight=-np.ones(batch_size) 来替换 ???,但我不知道这是否适合我的目标。

1个回答

3
如果您将样本权重设置为负数,则最小化它实际上会导致其绝对值的最大化。

能否使用fit函数来实现这个功能? - JobHunter69
1
是的,您必须使用fit函数的参数sample_weight。这会更加困难(和慢),因为您必须创建一个1d numpy数组,并根据需要最大化或最小化每个样本的值。 - maksym33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接