首页 理论教育 深度学习与深度合成的数据预处理及独热编码

深度学习与深度合成的数据预处理及独热编码

时间:2023-11-18 理论教育 版权反馈
【摘要】:考虑到神经网络使用加权和进行运算,为保证训练过程稳定、有效,需要在模型训练前进行图像预处理。独热编码又称为一位有效位编码,这个编码方式在多分类问题中比较常见,尤其是损失函数为交叉熵函数时。对于本例而言,假如y_train_label[0]的标签是整数5,独热编码就会把它修改为一个含有10个元素的数组,除第五个元素的设置为1以外,其余元素均设置为0。

深度学习与深度合成的数据预处理及独热编码

为方便利用神经网络进行训练,需要将每个图片展成一维向量,这里采用re-shape函数实现转换,将每个图片转化为784个0~255的float类型数据表示。考虑到神经网络使用加权和进行运算,为保证训练过程稳定、有效,需要在模型训练前进行图像预处理。常见的图像预处理有归一化、中心化和标准化三种方法。其中归一化是将图像所有像素值缩放到0~1范围;中心化是将像素值减去平均像素值,使得图像新像素值的平均值为0;标准化可将像素值处理为标准高斯分布,表现为图像新像素值的平均值为0,标准差为1。

在MNIST数据集上,图像归一化和标准化对模型训练的准确度几乎没有差异。但是在实践中,推荐选择归一化,因为其实现比标准化更加简单。而图像中心化在该数据集上的效果比其他两种都存在差距。下面代码采用归一化对转换为浮点数的像素值进行处理。

x_Train=x_train_image.reshape(60000,784).astype('float32')#转化数据格式

x_Test=x_test_image.reshape(10000,784).astype('float32')

x_Train_normalize=x_Train/255#数据归一化

x_Test_normalize=x_Test/255(www.xing528.com)

由于样本数据的原始标签采用0~9的数字表示不同类别,如果将数字0和1,以及数字0和9之间的差异性采用标签直接采用的数字来进行距离间的比较,比如,以x_1、x_2、x_3代表三个数字图像分类为例,样本标签分别对应1、2、3三个取值,两个图像之间的距离是:d(x_1,x_2)=1,d(x_2,x_3)=1,d(x_1,x_3)=2。显然这样的表示,计算出来的样本标签的距离无疑是不合理。常规的解决办法是对样本标签进行one-hot转换,即使用独热编码标注样本标签,则得到x_1=(1,0,0),x_2=(0,1,0),x_3=(0,0,1),那么两个图像之间的距离就都是sqrt(2),即每两个图像样本标签之间的距离是一样的,这相比之前不采用独热编码显得更合理。

独热编码又称为一位有效位编码,这个编码方式在多分类问题中比较常见,尤其是损失函数为交叉熵函数时。对于本例而言,假如y_train_label[0]的标签是整数5,独热编码就会把它修改为一个含有10个元素的数组,除第五个元素的设置为1以外,其余元素均设置为0。这样,转换后的y_train_label[0]由5变成了[0,0,0,0,1,0,0,0,0,0]。将训练集和测试集样本标签进行独热编码转换的相应代码如下:

y_Train_OneHot=np_utils.to_categorical(y_train_label)

y_Test_OneHot=np_utils.to_categorical(y_test_label)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈