我想训练一个模型,该模型为可变大小的事件序列分配一些分数。每个序列都在其自己的文件中,我从(文件名,目标分数)列表开始。
所以我做这样的事情:
dataset = fileNames.map((fileName, score) => (new CsvDataset(x), score));
我得到的是:NotImplementedError : The Dataset.map() transformation does not currently support nested datasets as outputs
我正在使用TensorFlow 1.10。
问题是:如何将模型(序列,训练得分)对加载并提供给模型? tf.data
甚至是可行的方法吗?
答案 0 :(得分:1)
您需要在使用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文件名的路径和相应的标签,因此您可以将任何解析函数应用于所需的单独文件。如果数据集是嵌套的,则可以将其展平。