如何向TensorFlow Keras模型提供序列?

时间:2019-02-25 19:01:18

标签: python tensorflow keras tensorflow-datasets

我想训练一个模型,该模型为可变大小的事件序列分配一些分数。每个序列都在其自己的文件中,我从(文件名,目标分数)列表开始。

所以我做这样的事情:

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甚至是可行的方法吗?

1 个答案:

答案 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文件名的路径和相应的标签,因此您可以将任何解析函数应用于所需的单独文件。如果数据集是嵌套的,则可以将其展平。