flo*_*o29 4 python deep-learning keras
我想在Keras的(X_train, y_train)每个N时期传递另一个训练数据集,这些数据(X_train, y_train)是通过Monte Carlo模拟获得的。
用伪代码,可以通过以下方式完成:
for i in range(nb_total_epochs):
if i%N == 0:
X_train, y_train = generate_new_dataset(simulation_parameters)
train_model(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
是否有任何现成的技巧可以通过该fit()功能实现?
使用Sequence创建您的数据集,并把它传递给fit_generator。定义on_epoch_end在特定时期修改数据集的方法。
每个人都
Sequence必须实现__getitem__和__len__方法。如果您想在各个时期之间修改数据集,则可以实现on_epoch_end。该方法__getitem__应返回完整的批次。
此外,您可以安全地Sequence与多处理数据处理一起使用:
使用
keras.utils.Sequence保证顺序,并保证使用时每个时期每个输入的单一使用use_multiprocessing=True。
从Sequence文档中稍作修改,以包括on_epoch_end。
class CIFAR10Sequence(Sequence):
def __init__(self, x_set, y_set, batch_size):
self.x, self.y = x_set, y_set
self.epoch = 0
self.batch_size = batch_size
def __len__(self):
return int(np.ceil(len(self.x) / float(self.batch_size)))
def __getitem__(self, idx):
batch_x = self.x[idx * self.batch_size:(idx + 1) * self.batch_size]
batch_y = self.y[idx * self.batch_size:(idx + 1) * self.batch_size]
return np.array([
resize(imread(file_name), (200, 200))
for file_name in batch_x]), np.array(batch_y)
def on_epoch_end(self):
if self.epoch % N == 0:
pass
# modify data
self.epoch += 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |