【问题标题】:Input pipeline using TensorFlow Dataset API and Pandas?使用 TensorFlow Dataset API 和 Pandas 的输入管道?
【发布时间】:2018-08-11 19:24:48
【问题描述】:

我正在尝试创建一个 TensorFlow 数据集,它接收 CSV 文件的路径名列表并创建批量训练数据。首先,我创建了一个使用 Pandas 读取前 n 行的解析函数。我将此函数作为 Dataset 中“map”方法的参数

def _get_data_for_dataset(file_name,rows=100):
  print(file_name.decode())

  df_input=pd.read_csv(os.path.join(folder_name, file_name.decode()),
                     usecols =['Wind_MWh','Actual_Load_MWh'],nrows = rows)

  X_data = df_input.as_matrix()
  X_data.astype('float32', copy=False)

  return X_data

 dataset = tf.data.Dataset.from_tensor_slices(file_names)
 dataset = dataset2.map(lambda file_name: tf.py_func(_get_data_for_dataset,[file_name,100], tf.float64))
 dataset= dataset.batch(2) #Create batches
 iter = dataset.make_one_shot_iterator()
 get_batch = iter.get_next()

with tf.Session() as sess:
  print(sess.run(get_batch).shape)

上面的代码可以工作,但不是生成形状为 (200,2) 的数据集,而是生成形状为 (2, 100, 2) 的数据集。请帮忙。

【问题讨论】:

    标签: pandas tensorflow tensorflow-datasets


    【解决方案1】:

    我终于得到了Dataset API 'flat_map' method producing error for same code which works with 'map' method的答案 我发布了完整的代码,以防它可以帮助其他想要一起使用 Pandas 和 Dataset API 的人。

    folder_name = './data/power_data/'
    file_names = os.listdir(folder_name)
    
    def _get_data_for_dataset(file_name):
        df_input=pd.read_csv(os.path.join(folder_name, file_name.decode()),
                             usecols=['Wind_MWh', 'Actual_Load_MWh'])
        X_data = df_input.as_matrix()
        return X_data.astype('float32', copy=False)
    
    dataset = tf.data.Dataset.from_tensor_slices(file_names)
    
    # Use `Dataset.from_tensor_slices()` to make a `Dataset` from the output of 
    # the `tf.py_func()` op.
    dataset = dataset.flat_map(lambda file_name: tf.data.Dataset.from_tensor_slices(
        tf.py_func(_get_data_for_dataset, [file_name], tf.float32)))
    
    dataset = dataset.batch(100)
    
    iter = dataset.make_one_shot_iterator()
    get_batch = iter.get_next()
    
      with tf.Session() as sess:
        print(sess.run(get_batch))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 2019-09-24
      • 2017-08-18
      • 1970-01-01
      相关资源
      最近更新 更多