【问题标题】:How to flatten a tensorflow dataset along feature columns when using data.make_csv_dataset?使用data.make_csv_dataset时如何沿特征列展平张量流数据集?
【发布时间】:2018-06-12 03:42:53
【问题描述】:

我正在使用 tf.contrib.data.make_csv_dataset 读取具有不同数量的特征列的 CSV 文件。

读取每个文件后,我想连接所有特征列。

dataset = tf.contrib.data.make_csv_dataset(file_names[0],48,select_columns=['Load_residential_multi_0','Load_residential_multi_1'],shuffle=False)
dataset = dataset.batch(2)
get_batch = dataset.make_one_shot_iterator()
get_batch = get_batch.get_next()
with tf.Session() as sess:
      power_data = sess.run(get_batch)
print(power_data.keys())

上面的代码将给出一个带有两个键的有序字典,如下所示:

odict_keys(['Load_residential_multi_0', 'Load_residential_multi_1'])

我可以使用功能名称访问各个功能。比如power_data['Load_residential_multi_0']会给我,

array([[0.075 , 0.1225, 0.0775, 0.12  ],
       [0.0875, 0.1125, 0.095 , 0.1025]], dtype=float32)

但是,我希望将两个特征列 'Load_residential_multi_0','Load_residential_multi_1' 连接起来。

我可以使用 dataset.flatmap(map_func) 来做到这一点,但我不确定应该使用什么作为 flatmap() 的参数。

【问题讨论】:

    标签: tensorflow tensorflow-datasets


    【解决方案1】:

    通过使用dataset.map,您可以连接两个字典值:

    dataset = dataset.map(lambda x: tf.stack(list(x.values())))
    get_batch = dataset.make_one_shot_iterator()
    

    【讨论】:

    • 感谢您的回答,但是当我在会话中使用 get_batch 时出现以下错误。获取参数 具有无效类型 ,必须是字符串或张量。 (不能将 Iterator 转换为 Tensor 或 Operation。)
    • 您的意思是当您使用tf.contrib.data.make_csv_dataset (48) 中声明的batch_size 时?
    • 是的,batch_size 是 48。
    • 你能分享一个产生问题的示例 csv。在我的示例设置中它可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2017-07-16
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多