将发电机用于Keras model.fit_发电机

我最初尝试在编写用于训练Keras模型的自定义生成器时使用generator语法。因此我从\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。然而,当我尝试使用model.fit_generator来训练我的模式时,我会得到一个错误,即我的生成器不是迭代器。解决方法是将收益率更改为返回,这也需要重新调整\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。与让为我做这项工作相比,它相当麻烦

有没有一种方法可以使这项工作与产量?如果我必须使用return语句,我将需要编写更多的迭代器,这些迭代器必须具有非常笨拙的逻辑

我无法帮助调试您的代码,因为您没有发布它,但我简化了我为语义分段项目编写的自定义数据生成器,供您用作模板:

def生成数据(目录、批次大小):
“”“替换Keras的本机ImageDataGenerator。”“”
i=0
file_list=os.listdir(目录)
尽管如此:
图像_批处理=[]
对于范围内的b(批次尺寸):
如果i==len(文件列表):
i=0
随机.shuffle(文件列表)
样本=文件列表[i]
i+=1
image=cv2.resize(cv2.imread(示例[0]),输入_形状)
image\u batch.append((image.astype(float)-128)/128)
产量np.数组(图像批处理)

用法:

model.fit\u生成器(
生成_数据(“~/my_数据”,批量大小),
steps\u per\u epoch=len(os.listdir(“~/my\u data”)//批处理大小)

发表评论