【发布时间】:2020-06-18 12:50:21
【问题描述】:
使用这里的代码https://keras.io/api/utils/python_utils/#sequence-class,我编写了一个自定义的DataGenerator。
# Here, `x_set` is list of path to the images
# and `y_set` are the associated classes.
class DataGenerator(Sequence):
def __init__(self, x_set, y_set, batch_size):
self.x, self.y = x_set, y_set
self.batch_size = batch_size
def __len__(self):
return math.ceil(len(self.x) / 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), (224, 224))
for file_name in batch_x]), np.array(batch_y)
现在,我想知道如何将数据生成器应用于我的训练数据和验证数据?
我有X_train 和X_val,它们是包含我的图像文件的图像路径的列表以及y_train 和y_val,它们是一个热门编码标签。
然后我可以使用此代码吗?
training_generator = DataGenerator(X_train, y_train)
validation_generator = DataGenerator(X_val, y_val)
然后拟合模型?
model.fit_generator(generator=training_generator,
validation_data=validation_generator)
【问题讨论】:
-
您忘记将“batch_size”参数传递给
DataGenerator类初始化方法。如果你愿意,你可以在方法声明中设置一个默认值。