在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用tf.data進行數據集處理

FPGA創新中心 ? 來源:FPGA創新中心 ? 作者:陳遠斌 ? 2022-11-29 15:34 ? 次閱讀

在進行AI模型訓練過程前,需要對數據集進行處理, Tensorflow提供了tf.data數據集處理模塊,通過該接口能夠輕松實現數據集預處理。tf.data支持對數據集進行大量處理,如圖片裁剪、圖片打亂、圖片分批次處理等操作。

數據集加載介紹

通過tf.data能夠實現數據集加載,加載的數據格式包括:

●使用NumPy數組數據
●使用python生成器數據
●使用TFRecords格式數據
●使用文本格式數據
●使用CSV文件格式數據

1tf.data常見數據格式加載示例

●使用Numpy數組數據

通過numpy構建數據,將構建的數據傳遞到tf.data的Dataset中。

import tensorflow as tf
import numpy as np
# 通過numpy構建數據個數
input_data = np.arange(4)
# 將數據傳遞到Dataset
dataset = tf.data.Dataset.from_tensor_slices(input_data)
for data in dataset:
    # 打印數據集,轉換數據集tensor格式
    print(data)
輸出為tensor數據集:
tf.Tensor(0, shape=(), dtype=int64)
tf.Tensor(1, shape=(), dtype=int64)
tf.Tensor(2, shape=(), dtype=int64)
tf.Tensor(3, shape=(), dtype=int64)

●讀取文本中數據

通過準備的文本文件file.txt,將文本文件中的內容讀取到tf.data,文件內容為:

Tf dataset load numpy data
Tf dataset load txt file data
Tf dateset load CSV file data

加載文本文件代碼:

import tensorflow as tf
# 通過TextLineDataset進行加載文本文件內容
dataset = tf.data.TextLineDataset("file.txt")
for line in dataset:
    print(line)

文本加載數據輸出(輸出的Tensor中已包含了文件文件中的數據):

tf.Tensor(b'Tf dataset load numpy data', shape=(), dtype=string)
tf.Tensor(b'Tf dataset load txt file data', shape=(), dtype=string)
tf.Tensor(b'Tf dateset load CSV file data', shape=(), dtype=string)

●讀取csv文本中數據

準備csv文件file.csv,文件內容為:

c03bab18-6cb2-11ed-8abf-dac502259ad0.png ?

加載文本文件代碼:

  import tensorflow as tf
import pandas as pd
# 使用pandas讀取csv文本中數據
data = pd.read_csv('date.csv')
# 將讀取的data數據傳遞到dataset中
f_slices = tf.data.Dataset.from_tensor_slices(dict(data))
for d in f_slices:
    print (d)

csv文本加載數據輸出(輸出的Tensor中已包含了文件文件中的數據):

{'Year': , 'Month': , 'Day': , 'Hour': }
{'Year': , 'Month': , 'Day': , 'Hour': }
{'Year': , 'Month': , 'Day': , 'Hour': }

●利用python迭代構建數據

通過python構建迭代器方式,將數據傳遞到tf.data, 示例代碼如下:

# 迭代函數,通過傳遞的stop數據進行迭代
def build_data(stop):
  i = 0
  while i
示例代碼輸出(迭代5次的Tensor):
tf.Tensor(0, shape=(), dtype=int32)
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)
tf.Tensor(4, shape=(), dtype=int32)

2tf.data常見數據處理

tf.data常用以下操作對數據完成預處理過程,操作包括: repeat、batch、shuffle、map等。

●tf.data數據repeat操作

通過調用repeat操作,將原數據進行重復構建,重復構建根據傳遞的repeat(x)次數決定。

●tf.data數據batch操作

通過調用batch操作將數據進行分批次執行,每批次數量根據batch(x)的值決定。

●tf.data 數據shuffle操作,打亂數據順序

shuffle操作常用于預處理數據集時,將數據集中的順序打亂,shuffle支持配置(buffer_size=x)將數據放置在緩沖區,通過緩沖區方式將數據打亂。

●tf.data 數據map操作

map操作能夠將數組中的元素重構,同時能夠實現讀取圖片,對圖片進行旋轉操作。

示例:

import tensorflow as tf
import numpy as np
# 使用numpy構建12個數據
input_data = np.arange(12)
# 將構建數據傳遞到dataset,傳遞中添加shuffle(10個緩沖區數據), batch分批次執行(每次4個數據), repeat重復構建數據2次
dataset = tf.data.Dataset.from_tensor_slices(input_data).shuffle(buffer_size=10).batch(4).repeat(2)
for data in dataset:
    print(data)
示例代碼輸出(輸出中可以看到Tensor每次4個數據,每個數據重復出現2次,每次數據亂序輸出):
tf.Tensor([8 3 9 1], shape=(4,), dtype=int64)
tf.Tensor([2 0 4 5], shape=(4,), dtype=int64)
tf.Tensor([ 7 11 10  6], shape=(4,), dtype=int64)
tf.Tensor([6 8 5 4], shape=(4,), dtype=int64)
tf.Tensor([ 7 10  2 11], shape=(4,), dtype=int64)
tf.Tensor([3 1 0 9], shape=(4,), dtype=int64)

圖片旋轉示例,示例代碼如下:

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np


(train_data, train_label), (_, _) = tf.keras.datasets.mnist.load_data()
train_data = np.expand_dims(train_data.astype(np.float32) / 255.0, axis=-1)
mnist_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_label))
# 構建旋轉函數,通過tensorflow的image.rot90完成90度旋轉
def rot90(image, label):
    image = tf.image.rot90(image)
    return image, label
# 通過map方式調用構建的旋轉函數
mnist_dataset = mnist_dataset.map(rot90)
for image, label in mnist_dataset.take(1):
    #添加圖片抬頭標簽
    plt.title(label.numpy())
    plt.imshow(image.numpy()[:, :])
    plt.show()

正常加載圖片輸出:

c069223c-6cb2-11ed-8abf-dac502259ad0.png

示例代碼運行后,圖片旋轉輸出:

c07df388-6cb2-11ed-8abf-dac502259ad0.png

mnist數據集預處理

利用TensorFlow Datasets 提供了一系列可以和 TensorFlow 配合使用的數據集。下載和準備數據,以及構建tf.data.Dataset。

示例代碼需要:

python3.6版本環境
安裝tensorflow==1.14.0版本(pip3 install tensorflow==2.1.0)
安裝tensorflow_datasets==4.4.0(pip3 install tensorflow-datasets==4.4.0)
示例代碼:
import tensorflow as tf
import tensorflow_datasets as tfds


#數據集通過Tensorflow Eager模式執行
tf.compat.v1.enable_eager_execution()


# 加載 MNIST 訓練數據。這個步驟會下載并準備好該數據,除非你顯式指定 `download=False` ,值得注意的是,一旦該數據準備好了,后續的  `load`  命令便不會重新下載,可以重復使用準備好的數據。你可以通過指定  `data_dir=`  (默認是  `~/tensorflow_datasets/` ) 來自定義數據保存/加載的路徑。
mnist_train = tfds.load(name="mnist", split="train")
assert isinstance(mnist_train, tf.data.Dataset)


mnist_builder = tfds.builder("mnist")
mnist_builder.download_and_prepare()
mnist_train = mnist_builder.as_dataset(split="train")
# 對數據集進行重復使用,并對數據進行打亂,分批次處理
mnist_train = mnist_train.repeat().shuffle(1024).batch(32)
# prefetch 將使輸入流水線可以在模型訓練時異步獲取批處理
mnist_train = mnist_train.prefetch(tf.data.experimental.AUTOTUNE)
info = mnist_builder.info
print(info.features["label"].names)
mnist_test, info = tfds.load("mnist", split="test", with_info=True)
print(info)
# 通過tfds.show_examples可視化數據樣本
fig = tfds.show_examples(info, mnist_test)

代碼示例輸出:

# 數據集label名稱
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# 數據集信息
tfds.core.DatasetInfo(
    name='mnist',
    full_name='mnist/3.0.1',
    description="""
    The MNIST database of handwritten digits.
    """,
    homepage='http://yann.lecun.com/exdb/mnist/',
    data_path='/home/fabian/tensorflow_datasets/mnist/3.0.1',
    download_size=11.06 MiB,
    dataset_size=21.00 MiB,
    features=FeaturesDict({
        'image': Image(shape=(28, 28, 1), dtype=tf.uint8),
        'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),
    }),
    supervised_keys=('image', 'label'),
    disable_shuffling=False,
    splits={
        'test': ,
        'train': ,
    },
    citation="""@article{lecun2010mnist,
      title={MNIST handwritten digit database},
      author={LeCun, Yann and Cortes, Corinna and Burges, CJ},
      journal={ATT Labs [Online]. Available: http://yann.lecun.com/exdb/mnist},
      volume={2},
      year={2010}
    }""",
)
可視化樣本數據圖片:

c0ad20ae-6cb2-11ed-8abf-dac502259ad0.png

作者介紹:陳遠斌,本科畢業于南開大學,海云捷迅研發工程師,熟悉OpenStack,Kubernetes技術,曾參與社區代碼貢獻,在OpenStack云計算技術上有一定的開發經驗。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    87

    文章

    31691

    瀏覽量

    270487
  • Data
    +關注

    關注

    0

    文章

    63

    瀏覽量

    38347
  • python
    +關注

    關注

    56

    文章

    4810

    瀏覽量

    85074
  • 數據集
    +關注

    關注

    4

    文章

    1209

    瀏覽量

    24848

原文標題:【技術基礎】使用tf.data進行數據集處理

文章出處:【微信號:FPGA創新中心,微信公眾號:FPGA創新中心】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DSP怎么在進行數據處理的同時進行串口通信

    DM642的學習版中,怎么在進行數據處理的同時進行串口通信?求大神指導啊糾結了好長時間了
    發表于 02-24 15:42

    HX711如何進行數據處理

    HX711如何進行數據處理
    發表于 11-21 22:03

    TF之CNN:CNN實現mnist數據預測

    TF之CNN:CNN實現mnist數據預測 96%采用placeholder用法+2層C及其max_pool法+隱藏層dropout法+輸出層softmax法+目標函數cross_entropy法+
    發表于 12-19 17:02

    pandas對babynames數據的簡單處理

    利用Python進行數據分析——第二章 引言(2):利用pandas對babynames數據進行簡單處理
    發表于 08-09 12:58

    STM32 USART串口是如何進行數據處理的呢

    STM32 USART串口接收數據的具體步驟有哪些?STM32 USART串口是如何進行數據處理的呢?
    發表于 11-25 08:56

    keras制作mnist數據的流程

    , ... }step3:load數據以及數據的預處理 import os, glob, json, random importtensorflow as tf importnump
    發表于 08-18 06:38

    使用LabVIEW軟件進行數據采集和信號處理的10大理由

    使用LabVIEW軟件進行數據采集和信號處理的10大理由,很直得一看哦。
    發表于 09-03 17:27 ?5041次閱讀

    Python在音頻(Audio)領域中,如何進行數據擴充呢?

    經典的深度學習網絡AlexNet使用數據擴充(Data Augmentation)的方式擴大數據,取得較好的分類效果。在深度學習的圖像領域中,通過平移、 翻轉、加噪等方法
    的頭像 發表于 04-15 10:35 ?1w次閱讀

    構建簡單數據管道,為什么tf.data要比feed_dict更好?

    如果想減少GPU閑置時間,我們可以在管道末尾添加tf.data.Dataset.prefetch(buffer_size),其中buffer_size這個參數表示預抓取的batch數,我們一般設buffer_size=1,但在某些情況下,尤其是處理每個batch耗時不同時
    的頭像 發表于 12-03 09:08 ?4591次閱讀

    tf.data API的功能和最佳實踐操作

    tf.data API 通過 tf.data.Dataset.prefetch 轉換提供了一個軟件 pipelining 操作機制,該轉換可用于將數據生成的時間與所消耗時間分離。特別是,轉換使用后
    的頭像 發表于 01-11 13:51 ?1.3w次閱讀

    TensorFlow 2.0將專注于簡單性和易用性

    使用 tf.data 加載數據。使用輸入管道讀取訓練數據,用 tf.data 創建的輸入線程讀取訓練數據。使用
    的頭像 發表于 01-18 10:44 ?2634次閱讀
    TensorFlow 2.0將專注于簡單性和易用性

    如何使用TCGAbiolinks進行數據處理

    :GDCquery()篩選我們需要的數據,TCGAbiolinks包下載TCGA數據進行表達差異分析-肝癌案例 library("TCGAbiolinks") query <- GDCquery
    的頭像 發表于 02-15 10:16 ?6029次閱讀

    成功進行數據整合的案例

    預置數十個開箱即用連接器,基于SDK和熱插拔的連接器擴展技術,快速啟動數據集成,然后利用低代碼、自動化數據處理管道方式進行數據建模。
    的頭像 發表于 08-19 14:14 ?949次閱讀

    如何利用Dataloder來處理加載數據

    在Pytorch中,torch.utils.data中的Dataset與DataLoader是處理數據的兩個函數,用來處理加載
    的頭像 發表于 02-24 10:42 ?634次閱讀
    如何利用Dataloder來<b class='flag-5'>處理</b>加載<b class='flag-5'>數據</b><b class='flag-5'>集</b>

    如何使用SQL進行數據分析

    使用SQL進行數據分析是一個強大且靈活的過程,它涉及從數據庫中提取、清洗、轉換和聚合數據,以便進行進一步的分析和洞察。 1. 數據提取(
    的頭像 發表于 11-19 10:26 ?456次閱讀
    主站蜘蛛池模板: 色成年激情久久综合 | аⅴ资源中文在线天堂 | 成人夜夜 | 精品免费 | 丁香综合五月 | 看久久| 在线看视频你懂的 | 欧美极品另类xxx | 亚洲一卡二卡三卡 | 久久亚洲国产成人精品性色 | 666精品国产精品亚洲 | 国产亚洲片| 亚洲香蕉影院 | 国产精品久久久久久久成人午夜 | 乱高h亲女| 美女艹逼视频 | 亚洲成人高清在线 | www日本免费 | 久青草久青草高清在线播放 | 四虎tv在线观看884aa | 日本福利片午夜免费观着 | 狠狠叉| 黄色毛片免费网站 | 久久国产精品永久免费网站 | 国产伦精品一区二区三区女 | 三级网站视频 | 亚洲色图20p| 亚洲福利视频一区二区 | 视频在线免费 | 国产在线观看色 | 一级毛片美国一级j毛片不卡 | 欧美一级片免费在线观看 | 亚洲欧美网 | 天天干天天草天天射 | 久久久久免费观看 | 亚洲一区二区影视 | 三级视频在线播放线观看 | 午夜视频福利 | 免费午夜在线视频 | 男人日女人视频免费看 | 人人搞人人爽 |