Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将keras ImageDataGenerator类应用于TFRecordsDataset以增强它?_Python_Tensorflow_Keras - Fatal编程技术网

Python 如何将keras ImageDataGenerator类应用于TFRecordsDataset以增强它?

Python 如何将keras ImageDataGenerator类应用于TFRecordsDataset以增强它?,python,tensorflow,keras,Python,Tensorflow,Keras,我想从TFRecords文件中高效地检索示例,并使用kerasImageDataGenerator类对其进行扩充,但据我所知ImageDataGenerator只能对numpy数组、pandas数据帧或目录(由PIL可读的图像组成)进行采样。我还知道,可以使用tf.data.Datset.from_generator()将其转换为tf.data.Dataset对象,但不能转换为逆方法 也许我应该使用ImageDataGenartor.flow\u from\u directory(),但我认为它

我想从
TFRecords
文件中高效地检索示例,并使用keras
ImageDataGenerator
类对其进行扩充,但据我所知
ImageDataGenerator
只能对numpy数组、pandas数据帧或目录(由PIL可读的图像组成)进行采样。我还知道,可以使用
tf.data.Datset.from_generator()
将其转换为
tf.data.Dataset
对象,但不能转换为逆方法

也许我应该使用
ImageDataGenartor.flow\u from\u directory()
,但我认为它速度较慢,尽管我没有用大型数据集精确地测量它。如果它是近似相等的,我将感谢一位说明它的消息来源。下一段代码显示了我希望的示例:

来自tf.keras.preprocessing.image导入ImageDataGenerator
从tf.data导入TFRecordDataset;
导入tensorflow作为tf;
从型号进口DenseNetBN100;
eps=150;批量大小=32;tot_示例=50000;
imre_形状=(32,32,3);lare_形状=(10,);
列车名称为cifar10列车记录;
型号=DenseNetBN100(尺寸较小,形状较大);
定义解析记录(proto,clip=False):
特征={
“image”:tf.FixedLenFeature([],tf.string),
“标签”:tf.FixedLenFeature([],tf.string),
}    
示例=tf.parse_single_示例(proto,features)
im=tf.decode_raw(例如['image'],tf.float32)
im=tf.重塑(im,imre_形状)
la=tf.decode_raw(例如['label'],tf.int8)
la=tf。重塑(la,lare_形);
la=tf.cast(la,tf.32);
返回im,la;
dtst=TFRecordDataset(train\u fname).map(\u parse\u record)
dtst=dtst.重复(eps).洗牌(10000)
dtst=dtst.批次(批次大小)
列车\数据发生器=图像数据发生器(
旋转范围=40,
宽度\偏移\范围=0.2,
高度\位移\范围=0.2,
剪切范围=0.2,
缩放范围=0.2,
水平翻转=真,
填充模式(最近的);
列车发电机=列车数据生成流(dtst)
模型安装(列车发电机,epochs=eps
每个历元的步数=总步数示例//批量大小)
由于
tf.data.Dataset
管理,通过将
ImageDataGenerator
转换为
tf.data.Dataset
,仍然有可能获得更高的效率。但这仍然只是另一种理论,我认为拥有可靠的数据源比只使用稀疏的个人测量数据要好