Keras為方便用戶使用數據集,提供了一個函數keras.dateset.調用這個函數方便的使用數據集。
但不幸的是,數據源的網址被牆了,但我找到了MNIST數據集。
詳細網址見:
常用的數據集有MNIST,CIFAR10/100
MNIST
共有10個數字,每個圖片像素是28*28,由於是灰度的圖片,通道是1。
第一個元組代表一共有60k的圖片,每個圖片像素28*28
第二個元組代表這些圖片分別編了9個碼。
每個圖片由numpy數組存儲,每個像素點在0-255分布
把原本范圍為1-9的y轉成one_hot編碼。
CIFAR10/100
參考代碼:
https://blog.csdn.net/zxpcz/article/details/102690823?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160510724919724836734903%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160510724919724836734903&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-102690823.pc_first_rank_v2_rank_v28&utm_term=%E5%8A%A0%E8%BD%BDcifar&spm=1018.2118.3001.4449
這個數據集中,有10種圖片,比如,貓,狗,每種圖片有又有10個圖片,所以叫CIFAR100
tf.data.DataSet
from_tensor_slices()
db=tf.data.Dataset.from_tensor_slices(x_test)
next(iter(db)).shape
from_tensor_slices()可以方便的將numpy類型轉成tensor類型
shuffle
打散功能,為了防止機器學到一些奇奇怪怪的規律。
batch
讀取數據一般是分批讀取。
例子:
def prepare_mnist_features_and_labels(x,y): x=tf.cast(x,tf.float32)/255.0#將tensor x 轉成0~1 y=tf.cast(y,int64) return x,y def mnist_dataset(): (x,y),(x_val,y_val) = datasets.fashion_mnist.load_data() y = tf.one_hot(y,depth=10) #將結果轉成0~9 y_val=tf.one_hot(y,val,depth=10) ds = tf.data.Dataset.from_tensor_slices((x,y)) ds=ds.map(prepare_mnist_features_and_labels) ds=ds.shuffle(60000).batch(100) ds_val = tf.data.Dataset.from_tensor_slices((x_val,y_val)) ds_val=ds_val.map(prepare_mnist_features_and_labels) ds_val=ds_val.shuffle(60000).batch(100) return ds,ds_val