我想在Tensorflow中堆叠两个数据集对象(R中的rbind函数)。我从tfRecord文件创建了一个数据集A,从numpy数组创建了一个数据集B.两者都有相同的变量。你知道是否有办法堆叠这两个数据集来创建一个更大的数据集?或者创建一个随机读取这两个来源数据的iterrator?
由于
答案 0 :(得分:5)
当使用数据集工作时,tf.data.Dataset.concatenate()
方法是tf.stack()
最接近的模拟方法。如果您有两个具有相同结构的数据集(即每个组件的类型相同,但可能有不同的形状):
dataset_1 = tf.data.Dataset.range(10, 20)
dataset_2 = tf.data.Dataset.range(60, 70)
...你可以按如下方式连接它们:
combined_dataset = dataset_1.concatenate(dataset_2)
答案 1 :(得分:0)
如果通过堆叠来表示tf.stack()
和np.stack()
的作用:
将等级
R
张量的列表堆叠到一个等级(R+1)
张量中。
https://www.tensorflow.org/api_docs/python/tf/stack
沿着新轴加入一系列数组。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.stack.html
那么我认为tf.data.Dataset
最接近的是Dataset.zip()
:
@staticmethod
zip(datasets)
通过将给定的数据集压缩在一起来创建
Dataset
。
https://www.tensorflow.org/api_docs/python/tf/data/Dataset?version=stable#zip
这允许您通过遍历原始数据集的共享维度(类似于stack()
张量或矩阵)来遍历多个数据集。
然后,您还可以使用.map(tf.stack)
或.map(lambda *t: tf.stack(t, axis=-1))
将张量分别沿着正面或背面的新尺寸堆叠起来。
如果确实要实现tf.concat()
和np.concatenate()
的功能,则可以使用Dataset.concatenate()
。