###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])) '''