python - DataGenerator(Sequence) 无需调整大小
问题描述
我创建了一个DataGenerator(Sequence)
定义batch_size
,batch_x
和batch_y
. batch_x
是一批图像(来自x_set
,图像的文件路径列表),由 读取imread
、调整大小resize
并除以 255 以获得介于 0 和 1 之间的值。batch_y
是这些图像的标签,它们来自y_set
,a包含所有标签的列表。
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_x = np.array([resize(imread(file_name), (64, 128)) for file_name in batch_x])
batch_x = batch_x * 1./255
batch_y = self.y[idx*self.batch_size : (idx + 1)*self.batch_size]
batch_y = np.array(batch_y)
return batch_x, batch_y
因为这个生成器可以工作,但在 Colab 上需要很长时间,所以我之前调整了图像的大小。所以,这不再是必要的了,我现在想修改DataGenerator
并保留该resize
功能。这是我的代码DataGenerator_withoutresize(Sequence)
:
class DataGenerator_withoutresize(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_x = np.array([(imread(file_name) for file_name in batch_x])
batch_x = batch_x * 1./255
batch_y = self.y[idx*self.batch_size : (idx + 1)*self.batch_size]
batch_y = np.array(batch_y)
return batch_x, batch_y
这段代码正确吗?
谢谢!
解决方案
最后,我使用了这段代码,它对我有用:
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_x = [imread(file_name) for file_name in batch_x]
batch_x = np.array(batch_x)
batch_x = batch_x * 1./255
batch_y = self.y[idx*self.batch_size : (idx + 1)*self.batch_size]
batch_y = np.array(batch_y)
return batch_x, batch_y
推荐阅读
- c - GCC 发出警告,指出我的预编译头文件 (.h.gch) 无效
- java - 使用 mutableSetOf 创建 HashMap Kotlin 的未解决参考
- encryption - 什么是 Thales HSM BA 命令加密清除 PIN
- java - 算术计算中的 0.01 差异,然后在 java 中舍入到小数点后 2 位
- android - 分析 apk 中的这些文件是什么?
- rust - Rust:如何允许和检测 macro_rules 中的可选标点符号?
- amazon-web-services - 在 Raspberry Pi 3b+ 上运行 Greengrass 核心
- azure - 部署之间的 Microsoft Dev Ops yaml 变量
- c# - System.AccessViolationException WebAPI2 实体框架 6
- python - “元组”对象不能解释为整数错误