dataset.zip()与zip()
这个函数和python
中的zip()
相当的不一样,切勿被迷惑了双眼。首先tensorflow
中的zip
接受的数据是dataset
作用:通过将给定的数据集压缩在一起创建一个“数据集”。
使用过程举例
a = Dataset.range(1, 4) # ==> [ 1, 2, 3 ]
b = Dataset.range(4, 7) # ==> [ 4, 5, 6 ]
c = Dataset.range(7, 13).batch(2) # ==> [ [7, 8], [9, 10], [11, 12] ]
d = Dataset.range(13, 15) # ==> [ 13, 14 ]
Dataset.zip((a, b)) # ==> [ (1, 4), (2, 5), (3, 6) ]
Dataset.zip((b, a)) # ==> [ (4, 1), (5, 2), (6, 3) ]
甚至还可以三个一起
Dataset.zip((a, b, c)) # ==> [ (1, 4, [7, 8]),
# (2, 5, [9, 10]),
# (3, 6, [11, 12]) ]
这是和Python
的zip
有很大不一样的。
同样的代码,结果如下
a = [1,2,3]
b = [4,5,6]
c = range(13,15)
zip((a,b))
# ==> <zip at 0x7f515dcc19c8>
# 那我们打印看看
for x in d:
print(x)
# ⇒ ([1, 2, 3],)
# ([4, 5, 6],)
既然官方说是来源zip(),那么肯定可以用python实现dataset.zip()的代码的.如下:
a = [1,2,3]
b = [4,5,6]
for x in list(zip(a,b)):
print(x)
$ outputs == >
(1, 4)
(2, 5)
(3, 6)
值得注意
所以正如官方说的通过将给定的数据集压缩在一起创建一个“数据集”。
但是一定要记住:这个数据集的最小元素就是整合后的单个元素