如何为多个相关的 CSV 创建 Tensorflow 数据摄取管道?

Mil*_*der 5 relational-database tensorflow tensorflow2.0

假设我们有一些关系数据。为零售连锁店做一个简单的例子:

  • 数据集 1 --> Store_id、Daily_sales
  • 数据集 2 --> Customer_id, store_id, Time in, Time out

让我们说任务是预测Daily_sales

我知道如何为单个 CSV 创建数据批次。我可以使用tf.data.experimental.make_csv_dataset并迭代它返回的可迭代数据集以懒惰地读取批次。

然而,我想在批次读取来自Dataset 1Dataset 2上述其中公共ID是描述store_id使得批读出与相同的行store_id来自两个数据集秒。我想这样做是因为我将在两个数据集Dataset 2上运行两个网络(RNN和单个完全连接层Dataset 1),然后将它们合并到最终的完全连接层中。

您能否指导我如何在以下情况下解决此问题:

  • 数据集可以放入内存
  • 数据集无法放入内存

这是我正在寻找的一致批处理创建的具体示例:

import pandas as pd
Dataset_1 = pd.DataFrame({'id':['a','b','c','d'],'col1':[1,2,3,4]})
print(Dataset_1)
  id  col1
0  a     1
1  b     2
2  c     3
3  d     4
Dataset_2 = pd.DataFrame({'id':['a','a','b','c','c','c','d'],'col1':[10,11,12,13,14,15,16]})
print(Dataset_2)
    id  col1
0   a   10
1   a   11
2   b   12
3   c   13
4   c   14
5   c   15
6   d   16
#Let us say i want to create 2 batches. The following dataframes are how i want my batches to look like
batch_1 = (pd.DataFrame({'id':['a','b'],'col1':[1,2]}),pd.DataFrame({'id':['a','a','b'],'col1':[10,11,12]}))
print(batch_1[0])
    id  col1
0   a   1
1   b   2
print(batch_1[1])
  id  col1
0  a    10
1  a    11
2  b    12
batch_2 = (pd.DataFrame({'id':['c','d'],'col1':[3,4]}),pd.DataFrame({'id':['c','c','c','d'],'col1':[13,14,15,16]}))
print(batch_2[0])
id  col1
0  c     3
1  d     4

print(batch_2[1])
 id  col1
0  c    13
1  c    14
2  c    15
3  d    16
Run Code Online (Sandbox Code Playgroud)