keras如何在验证集加噪声_使用keras的多个验证集

我最终根据History回调编写了自己的Callback来解决问题.我不确定这是否是最佳方法,但以下Callback记录了训练和验证集的损失和指标,如历史回调以及传递给构造函数的其他验证集的损失和指标.

class AdditionalValidationSets(Callback):

def __init__(self, validation_sets, verbose=0, batch_size=None):

"""

:param validation_sets:

a list of 3-tuples (validation_data, validation_targets, validation_set_name)

or 4-tuples (validation_data, validation_targets, sample_weights, validation_set_name)

:param verbose:

verbosity mode, 1 or 0

:param batch_size:

batch size to be used when evaluating on the additional datasets

"""

super(AdditionalValidationSets, self).__init__()

self.validation_sets = validation_sets

for validation_set in self.validation_sets:

if len(validation_set) not in [2, 3]:

raise ValueError()

self.epoch = []

self.history = {}

self.verbose = verbose

self.batch_size = batch_size

def on_train_begin(self, logs=None):

self.epoch = []

self.history = {}

def on_epoch_end(self, epoch, logs=None):

logs = logs or {}

self.epoch.append(epoch)

# record the same values as History() as well

for k, v in logs.items():

self.history.setdefault(k, []).append(v)

# evaluate on the additional validation sets

for validation_set in self.validation_sets:

if len(validation_set) == 3:

validation_data, validation_targets, validation_set_name = validation_set

sample_weights = None

elif len(validation_set) == 4:

validation_data, validation_targets, sample_weights, validation_set_name = validation_set

else:

raise ValueError()

results = self.model.evaluate(x=validation_data,

y=validation_targets,

verbose=self.verbose,

sample_weight=sample_weights,

batch_size=self.batch_size)

for i, result in enumerate(results):

if i == 0:

valuename = validation_set_name + '_loss'

else:

valuename = validation_set_name + '_' + self.model.metrics[i-1].__name__

self.history.setdefault(valuename, []).append(result)

我当时正在使用这样的:

history = AdditionalValidationSets([(validation_data2, validation_targets2, 'val2')])

model.fit(train_data, train_targets,

epochs=epochs,

batch_size=batch_size,

validation_data=(validation_data1, validation_targets1),

callbacks=[history]

shuffle=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值