【发布时间】:2019-03-28 22:05:30
【问题描述】:
我有大量带有标签 (.mat) 文件的图像(不能使用 tf.data.Dataset.from_tensor_slices()),我想使用 tf.data API 来制作张量流数据集。
正如我在文档中所读到的,我可以将tf.data.TextLineDataset 用于大量数据(我必须有一个包含所有图像地址的 txt 文件,并将 txt 文件的路径作为tf.data.TextLineDataset 参数发送) .
然后,我可以使用map方法读取txt文件(tf.read_file)解码jpg图像(tf.image.decode_jpeg)并对图像进行一些基本的转换。
但是,我不能在map 方法的任何部分使用scipy.io.loadmat,因为我没有指示mat 文件路径的字符串。我只有tf.Tensor。
在这种情况下,我认为读取所有图像并从中制作 TFRecord 效率并不高,因为我基本上每件事都会做两次。一次,读取全图制作TFRecord,再次读取TFRecord制作tensorflow数据集。
知道如何解决这个问题吗?
这是我的代码:
dataset = tf.data.TextLineDataset(txt_file).map(read_img_and_mat)
然后:
def read_img_and_mat(path):
image_string = tf.read_file(path)
image_decoded = tf.image.decode_jpeg(image_string, channels=3)
label = ... # get label from mat file
return image_decoded, label
【问题讨论】:
-
所以你的问题是不知道你自己的mat文件的路径?它们与带有一些恒定字符串替换的图像不一样吗?您是在问如何在 TensorFlow 中操作字符串?
-
@buzjwa mat 文件的路径是已知的,实际上我可以通过将 '.mat' 替换为 '.jpg' 来获得它。我的问题是如何在方法中打开 mat 文件并提取我需要的信息。看来我在
read_img_and_mat方法中没有指示图像路径的字符串。
标签: python tensorflow mat-file