TensorFlow(或者说深度学习领域)中常见的且自带的数据集有:
MNIST:手写数字识别,手写数字数据集。被称为深度学习的“hello world”。
CIFAR10/100:小型图片数据集。
IMDB:电影评论数据集。
BOSTON HONSING:波士顿房价预测。(这个不介绍,因为我没玩过
但是也很常见)
import tensorflow as tf
MNIST:
加载MNIST数据集:
(train_x,train_y),(test_x,test_y)=tf.keras.datasets.mnist.load_data()
返回的数据集分为两类,前面的是训练集,后面的是验证集.
训练集的数量有60K,验证集的数量有10K.训练集和验证集中x的形状都是(28,28),y的值为0~9(分别代表手写数字是什幺)
一般的处理方式:
#将x的值的范围缩小在0~1之间,为了便于深度学习的计算 #将y的值的类型转为int def preprocess(x,y): x=tf.cast(x,dtype=tf.float32)/255. y=tf.cast(y,dtype=tf.int32) return x,y #下载MNIST数据集 (train_x,train_y),(text_x,text_y)=datasets.fashion_mnist.load_data() #获取以train_x和train_y为元素的训练集迭代器 db=tf.data.Dataset.from_tensor_slices((x,y)) #将训练集打乱顺序并且分为每批次100个数量 db=db.map(preprocess).shuffle(6000).batch(100) #获取以test_x和test_y为元素的验证集迭代器 test_db=tf.data.Dataset.from_tensor_slices((text_x,text_y)) test_db=test_db.map(preprocess).batch(100)
CIFAR10/100:
加载CIFAR10/100数据集:
#加载CIFAR10数据集 (train_x,train_y),(test_x,test_y)=tf.keras.datasets.cifar10.load_data() #加载CIFAR100数据集 (train_x,train_y),(test_x,test_y)=tf.keras.datasets.cifar10.load_data()
CIFAR10和CIFAR100的内容是一样的,是各种物品的图片,但CIFAR10将图片大体分为了10类,而CIFAR100细分成了100类.
训练集的数量为50K,验证集的数量为10K.x的形状为(32,32,3),y的形状为(1,)(所以y得降维成一维才能正常使用)
一般的处理方式:(以CIFAR100为例)
#将x的值的范围变成0~1,以便深度学习的计算 #将y的值的类型变成int def prepare(x,y): x=tf.cast(x,dtype=tf.float32)/255. y=tf.cast(y,dtype=tf.int32) return x,y #下载CIFAR100数据集 (x,y),(test_x,test_y)=datasets.cifar100.load_data() #将y的形状由(1,)变成(1) y=tf.squeeze(y,axis=1) test_y=tf.squeeze(test_y,axis=1) #生成训练集和验证集的迭代器 db=tf.data.Dataset.from_tensor_slices((x,y)) test_db=tf.data.Dataset.from_tensor_slices((test_x,test_y)) #数据预处理,打乱数据集的顺序并且分好批次. db=db.map(prepare).shuffle(50000).batch(64) test_db=test_db.map(prepare).batch(64)
IMDB:
加载IMDB数据集:
(train_x,train_y),(test_x,test_y)=tf.keras.datasets.imdb,load_data(num_words=10000)
返回的验证集为25K,验证集为25K.下载的参数”num_words”为所加载的数据集含的单词数,一般来说10000就足够了(我一大学生连1000的词汇量都还没有
)
x为电影评论.y为0或1,1表示好评,0表示差评.
一般的处理方式:
#加载IMDB数据集 (train_x,train_y),(test_x,test_y)=datasets.imdb.load_data(num_words=total_words) #将x进行长度的限制 train_x=keras.preprocessing.sequence.pad_sequences(x,maxlen=max_review_len) test_x=keras.preprocessing.sequence.pad_sequences(test_x,maxlen=max_review_len) #生成训练集迭代器 db=tf.data.Dataset.from_tensor_slices((train_x,train_y)) #打乱数据集并且分批次 #drop_remainder:是否删除余数 db=db.shuffle(1000).batch(batches,drop_remainder=True) test_db=tf.data.Dataset.from_tensor_slices((test_x,test_y)) test_db=test_db.batch(batches,drop_remainder=True)
自定义数据集:
大多情况下我们深度学习要用自己的数据集,而有时候数据集过少而容易导致训练效果不佳,则可以进行数据增强.
x=tf.image.random_flip_up_down(x)
将图片随机进行上下翻转.
x=tf.image.random_flip_left_right(x)
将图片随机进行左右翻转.
x=tf.image.random_crap(x,shape)
将图片进行随机裁剪.
x=tf.image.random_brightness(x,max_delta=最大改变量)
将图片的亮度随机的改变,最大改变量为max_delta,且必须为非负数.
Be First to Comment