这里是Tensorflow的新手,如果问题可能是基本的,那么很抱歉。
我正在尝试创建一个GAN,它将基于一小组参数加上随机向量生成图像。
在训练集中,对于每个图像,我在CSV文件中也有一行与该图像相关。
CSV文件的结构如下:
参数1、参数2、参数3、图像文件
4,7,2,图像221.png
6,0,8,图像044.png
1,4,2,图像179.png
我还有一个文件夹,里面有给定文件名的图像文件。
我的问题是:我想创建一个管道,它不必一次将整个数据加载到内存中进行训练(这是tf.data.Dataset确实表现出的行为(,但我需要将CSV文件中的每一行与其相应的图像文件相结合。
我知道如何使用list_files来使用图像,也知道如何使用make_csv_dataset来使用csv,但我如何保证每个csv行都必须链接到其正确的图像文件?
对于那些面临同样问题的人,我找到了显而易见的解决方案:你所要做的就是创建一个映射函数,它接受文件名,加载它,并将加载的图像作为张量插入到替换文件名列的列中。
Ex(用于一个具有文件名的列和一个具有类的列(:
import PIL
def load_image(filename, class):
img = PIL.Image.Open(filename)
return img, class
dataset = dataset.map(load_image)
请注意,我正在使用枕头库(PIL(来加载图像,这不是强制性的。你可以使用任何你认为合适的手段。
这里真正重要的是在函数中加载图像,并用该函数映射数据集。