python3 zip 與tf.data.Data.zip的用法


###python自帶的zip函數  與  tf.data.Dataset.zip函數   功能用法相似
'''
zip([iterator1,iterator2,]) 將可迭代對象中對應的元素打包成一個元祖,返回有這些元祖組成的對象,用list把這個對象轉化成列表
'''
a=[1,2,3]
b = [4,5,6]
c = [7,8,9,10,11]
res1 = zip(a,b)
res2 = zip(a,c)
print('返回一個對象%s,用list轉化成列表:'%res1,list(res1))
print('長短不一,以最短者對應返回:',list(res2))
'''
返回一個對象<zip object at 0x0000019F644A8388>,用list轉化成列表: [(1, 4), (2, 5), (3, 6)]
長短不一,以最短者對應返回: [(1, 7), (2, 8), (3, 9)]
'''
###tf.data.Dataset.zip函數功能與zip()一致
import tensorflow as tf
Dataset = tf.data.Dataset
a = Dataset.from_tensor_slices([1,2,3])
b = Dataset.from_tensor_slices([4,5,6])
c = Dataset.from_tensor_slices([(7,8),(9,10),(11,12)])
#Dataset數據用迭代器一次取值,先定義一個迭代器函數
def getone(dataset):
    iterator = dataset.make_one_shot_iterator()  #生成一個迭代器
    one_element = iterator.get_next()            #迭代器取值
    return one_element
dataset1 = Dataset.zip((a,b))
dataset2 = Dataset.zip((a,b,c))
one_element1 = getone(dataset1)
one_element2 = getone(dataset2)
#定義一個會話內調用的函數
def sess_get_one(one_element):
    for i in range(3):
        datav = sess.run(one_element)
        print(datav)
#開啟會話,調取數據
with tf.Session() as sess:
    sess_get_one(one_element1)
    sess_get_one(one_element2)

'''
(1, 4)
(2, 5)
(3, 6)
(1, 4, array([7, 8]))
(2, 5, array([ 9, 10]))
(3, 6, array([11, 12]))
'''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM