我想训练一个模型,为可变大小的事件序列分配一些分数。每个序列都在自己的文件中,我从(文件名、目标分数)列表开始。
所以我做了这样的事情:
dataset = fileNames.map((fileName, score) => (new CsvDataset(x), score));
我得到的是:NotImplementedError:Dataset.map() 转换当前不支持嵌套数据集作为输出
我使用的是 TensorFlow 1.10。
问题是:如何将(序列、训练分数)对加载并提供给模型? tf.data
是一种可行的方法吗?
最佳答案
在使用 amy map 函数之前,您需要创建数据集对象。数据集 API 是一个完全可行的选择。
dataset = tf.contrib.data.make_csv_dataset(filenames)
该功能从1.10版本开始。然后,您可以使用 dataset.zip((dataset, labels))
添加标签,或使用 dataset.map()
映射某些解析函数
更多关于此
https://www.tensorflow.org/api_docs/python/tf/data/Dataset
https://www.tensorflow.org/versions/r1.10/api_docs/python/tf/contrib/data/make_csv_dataset
编辑1:
If you need to parse file by file you can do
x = ['1.csv', '2.csv']
y = [label_1, labels_2]
def parse_csv_func(data, label):
return tf.decode_csv(data, ['float32']*number_of_columns)
dataset = tf.data.Dataset.from_tensor_slices((x, y))
dataset = dataset.map(parse_csv_func)
输出:[b'1.csv'] label_1
此数据集对象将包含 csv 文件名和相应标签的路径,因此您可以将任何解析函数应用于所需的单独文件。如果数据集是嵌套的,您可以将其展平。
关于python - 如何将序列输入 TensorFlow Keras 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54873022/