本文地址:https://www.cnblogs.com/tujia/p/13862351.html
系列文章:
【1】TensorFlow光速入門-tensorflow開發基本流程
【2】TensorFlow光速入門-數據預處理(得到數據集)
【4】TensorFlow光速入門-保存模型及加載模型並使用
【6】TensorFlow光速入門-python模型轉換為tfjs模型並使用
一、數據來源
數據來源可以是自己業務原有數據或下載的開源數據或爬蟲捉取的第三方數據,需要訓練怎樣的模型的准備什么樣的數據。
例如:圖片分類就需要自己准備不同分類的圖片,按分類命名文件夾(這樣方便讀取)
二、導入數據(省時間可以直接跳過,看第三步就好)
1)准備數據
已經下載好,分類保存好圖片,我們先要導入到開發環境里,如果你圖片已經准備好,那就可以跳過這一步了
這是我要做的一個表非表的二分類模型的數據:
我把它打包為 wnw.zip,然后放在本地的web環境根目錄下
2)導入數據
打開 jupyter 的終端
注:也可以用 jupyter 里的界面來操作創建目錄或上傳文件,不過解壓還是得用終端。使用其他方法上傳圖片也行,條條道路通羅馬,只要把數據上傳到可讀取目錄里就行
三、數據預處理
下面以圖片分類為例子,看一下怎么預處理數據
注:需要說明的是,不同模型需要的輸入數據是不一樣的,這里主要學習數據的讀取和處理方法,其他模型自己舉一反三就好
1)首先先導入需要用到的包
import pathlib import random import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt
2)讀取文件夾圖片數據
data_path = '/tf/datasets/wnw' all_image_paths = [] all_image_labels = [] label_names = [] data_root = pathlib.Path(data_path) i = 0 for item in data_root.iterdir(): label_names.append(item.name) for image in item.iterdir(): all_image_paths.append(str(image)) all_image_labels.append(i) i = i + 1 print(label_names) print(len(all_image_paths)) print(len(all_image_labels))
運行結果:
3)圖片數據集
處理圖片數據成tensor(張量)數據
def load_and_preprocess_image(path): # 文件 轉 tensor image = tf.io.read_file(path) # 普通 tensor 轉 圖片tensor,channels 為顏色通道,1表示灰圖 image = tf.image.decode_jpeg(image, channels=1) # 縮放圖片尺寸為 100*100 image = tf.image.resize(image, [100, 100]) # 顏色的數值范圍是0-255,所以 image/255,進一步將圖片tensor數據數值范圍縮到 0-1 image /= 255 return image
# 圖片路徑列表直接轉數據集 path_ds = tf.data.Dataset.from_tensor_slices(all_image_paths) # 把路徑數據轉成圖片tensor數據 image_ds = path_ds.map(load_and_preprocess_image, num_parallel_calls=tf.data.experimental.AUTOTUNE)
4)label 數據集
label_ds = tf.data.Dataset.from_tensor_slices(tf.cast(all_image_labels, tf.int64))
5)將圖片數據集和標簽數據集壓縮打包一下
image_label_ds = tf.data.Dataset.zip((image_ds, label_ds))
6)打亂數據
image_count = len(all_image_paths) ds = image_label_ds.shuffle(buffer_size=image_count) ds = ds.repeat() ds = ds.batch(32) ds = ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE) print(ds)
注:為了文章更易讀,我省略了一些查看圖片、數據驗證的操作,詳細教程可以看這里:https://tensorflow.google.cn/tutorials/load_data/images
重點 Api :
tf.io.read_file https://tensorflow.google.cn/api_docs/python/tf/io/read_file
tf.image.decode_image https://tensorflow.google.cn/api_docs/python/tf/io/decode_jpeg
tf.image.resize https://tensorflow.google.cn/api_docs/python/tf/image/resize
tf.data.Dataset.from_tensor_slices https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#from_tensor_slices
tf.data.Dataset.map https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#map
tf.data.Dataset.zip https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#zip
下一節,我們來說說,如果用這個准備好的數據集來訓練及評估其准確性
本文鏈接:https://www.cnblogs.com/tujia/p/13862351.html
完。