日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记录 之 tf.data进行数据集处理常用的几个函数介绍

發布時間:2024/4/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记录 之 tf.data进行数据集处理常用的几个函数介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.tf.data.Dataset.from_tensor_slices(),前面的文章我們有介紹過。

2.tf.data.Dataset.shuffle(buffer_size = n)

這里的shuffle函數是將數據集進行混洗,已達到次序的優化,這里的buffer_size的作用是先從原數據集中預取n個數據,然后每次從緩沖區中抽取一個元素,來達到輸入數據無序的目的,buffer_size的大小設置也會影響實驗結果,一般將buffer_sizeshe設置為len(your_dataset),即buffer_size的大小等于你數據集的大小(前提是每一個item代表的是一個單獨數據,當然每個item也可代表一個batch的數據,則這時的buffer_size = len(your_dataset)// batch_size)。具體操作如圖:

3.tf.data.Dataset.repeat(n)

這個其實比較好理解,就是為了加快數據處理的速度,在準備數據時,將整個數據集復制多少份,以epoch為界限,一般代碼運行多少個epoch,則參數n的值為epoch的數量,相當于我們為每個epoch都準備了相應的數據。

注意:其實這里大家可以考慮一下shuffle 和 repeat的順序關系對數據及構成有什么影響。
①先shuffle后repeat,在每一個epoch開始時都會進行shuffle的初始化,會影響性能。
②先repeat后shuffle,這樣就不能保證每一個epoch能包含整個數據集的數據,有些數據可能會在一個epoch里出現多次。
因此官方建議:采用方法①的順序。或采用:
tf.contrib.data.shuffle_and_repeat

4.tf.data.Dataset.prefetch(buffer_size)

字面理解,這個函數就是一個預取函數,那么到底預取什么呢,我們來看下面兩張圖:
1.傳統輸入方式(橫軸為時間):

2.采用預取函數后
?

大家對比這兩張圖就可以發現,預取函數講道理就是進一步提高了CPU的利用率,在GPU/NPU進行數據運算的時候,CPU同步為下一次訓練進行數據的準備工作。這里一個batch所花費的時間就是Prepare 和 train 兩者之間的最大值。
本質上這是一個ET(數據準備)和L(消耗過程)的一個解耦過程。

以上幾個函數所涉及到的過程,在這篇博客里有非常詳細的圖解,能加深各位同學的理解,鏈接:https://www.cnblogs.com/yaos/p/12761917.html

?我們先介紹這么多,后續會繼續更新。

總結

以上是生活随笔為你收集整理的记录 之 tf.data进行数据集处理常用的几个函数介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。