我尝试使用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是一个表示概率的浮点数组,我想将其四舍五入为用于分类任务的二进制格式。
答案 0 :(得分:0)
对于规范化,您可以使用 this code snippet。它使用归一化层,这是核心预处理层之一。
您可以使用 axis
参数指定要规范化的元素/轴。您也可以在模型中使用此层。
为了将目标输出 Y 转换为二进制,tf.math.round
可能与 tf.data.Dataset.map
一起使用。检查here