Keras为方便用户使用数据集,提供了一个函数keras.dateset.调用这个函数方便的使用数据集。

但不幸的是,数据源的网址被墙了,但我找到了MNIST数据集。

详细网址见:

https://blog.csdn.net/Houchaoqun_XMU/article/details/78492718?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

常用的数据集有MNIST,CIFAR10/100

MNIST

共有10个数字,每个图片像素是28*28,由于是灰度的图片,通道是1。

TensorFlow导入数据集

第一个元组代表一共有60k的图片,每个图片像素28*28

第二个元组代表这些图片分别编了9个码。

每个图片由numpy数组存储,每个像素点在0-255分布

 

TensorFlow导入数据集

把原本范围为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