有什么办法可以预处理使用tensorflow_io.IODataset.from_hdf5读取的数据

时间:2020-09-06 07:23:32

标签: python tensorflow tensorflow-datasets

我尝试使用Tensorflow在python中构建机器学习模型。问题是训练数据不适合内存。它们被保存为大的HDF5文件。输入是一个4D数组,用于存储一堆图像(每个图像都有10个以上的通道,例如红外通道)。我设法使用这篇文章中的代码读取数据: Tensorflow-IO Dataset input pipeline with very large HDF5 files

import tensorflow_io as tfio
BATCH_SIZE = 256
EPOCHS = 50

# Create an IODataset from a hdf5 file's dataset object  
x_train = tfio.IODataset.from_hdf5(training_name, dataset='/X')
y_train = tfio.IODataset.from_hdf5(training_name, dataset='/Y')

# Zip together samples and corresponding labels
train = tf.data.Dataset.zip((x_train,y_train,)).batch(
    BATCH_SIZE, drop_remainder=True).prefetch(tf.data.experimental.AUTOTUNE)

我可以在将数据输入培训之前对其进行预处理吗?我想相对于全局平均值和每个通道的std标准化输入。而且,目标输出Y是一个表示概率的浮点数组,我想将其四舍五入为用于分类任务的二进制格式。

1 个答案:

答案 0 :(得分:0)

对于规范化,您可以使用 this code snippet。它使用归一化层,这是核心预处理层之一。 您可以使用 axis 参数指定要规范化的元素/轴。您也可以在模型中使用此层。

为了将目标输出 Y 转换为二进制,tf.math.round 可能与 tf.data.Dataset.map 一起使用。检查here