尝试使用tensorflow数据集为keras模型准备CSV

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用tensorflow数据集为keras模型准备CSV相关的知识,希望对你有一定的参考价值。

我确实准备了一个keras CNN模型,它希望[None,20,20,3]数组作为输入。 (这里的图像大小是20 ...)另一方面,我的云存储中有一个带有1200(20 * 20 * 3)列的CSV。

我想编写一个带张量流的ETL管道,以获得csv中每行的[20,20,3]形状张量。

我的代码到目前为止:

我已经花了好几天的工作并且有信心,这种方法最终可能会成功。

import tensorflow as tf

BATCH_SIZE = 30

tf.enable_eager_execution()

X_csv_path = 'gs://my-bucket/dataX.csv'


X_dataset = tf.data.experimental.make_csv_dataset(X_csv_path, BATCH_SIZE, column_names=range(1200) , header=False)
X_dataset = X_dataset.map(lambda x: tf.stack(list(x.values())))

iterator = X_dataset.make_one_shot_iterator()
image = iterator.get_next()

我希望有一个[30,1200]形状,但我仍然得到1200个形状的张量[30]。我的想法是将每一条线读入一个[1200]形状的张量,然后将线重新塑造成[20,20,3]张量,以便为我的模型提供补偿。谢谢你的时间!

答案

tf.data.experimental.make_csv_dataset创建了一个列数组的OrderedDict。为了你的任务,我会使用tf.data.TextLineDataset

def parse(filename):
    string = tf.strings.split([filename], sep=',').values
    return string

dataset = tf.data.TextLineDataset('sample.csv').map(parse).batch(BATCH_SIZE)
for i in dataset:
    print(i)

这将输出形状的张量(BATCH_SIZE,row_length),其中row_length是来自csv文件的一行。您可以根据您的任务应用任何其他预处理

以上是关于尝试使用tensorflow数据集为keras模型准备CSV的主要内容,如果未能解决你的问题,请参考以下文章

将 Keras 模型集成到 TensorFlow

TensorFlow/Keras 多线程模型拟合

如何为 keras 模型使用 tensorflow 自定义损失?

使用 TensorFlow 2.0 Alpha 时无法在 Tensorboard 中看到 keras 模型图

深度学习笔记_Keras六步法搭建网络

Tensorflow.keras:AlreadyExistsError