最小化和最大化损失
Minimizing and maximizing the loss
我想以这样一种方式训练自动编码器,使得重建误差在某些观测值上较低,而在其他观测值上较高。
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)
替换 ???
的内容,但我不知道这是否适合我的目标。
如果将样本权重设置为负数,那么最小化它实际上会导致其绝对值最大化。
我想以这样一种方式训练自动编码器,使得重建误差在某些观测值上较低,而在其他观测值上较高。
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)
替换 ???
的内容,但我不知道这是否适合我的目标。
如果将样本权重设置为负数,那么最小化它实际上会导致其绝对值最大化。