新密建设局网站,微信小程序开发 成都,静态网页毕业设计论文,做旅游网站的写手》》欢迎 点赞#xff0c;留言#xff0c;收藏加关注《《1. 模型构建的步骤#xff1a;在构建AI模型时#xff0c;一般有以下主要步骤#xff1a;准备数据、数据预处理、划分数据集、配置模型、训练模型、评估优化、模型应用#xff0c;如下图所示#xff1a;【注意】由…》》欢迎 点赞留言收藏加关注《《1. 模型构建的步骤在构建AI模型时一般有以下主要步骤准备数据、数据预处理、划分数据集、配置模型、训练模型、评估优化、模型应用如下图所示【注意】由于MNIST数据集太经典了很多深度学习书籍在介绍该入门模型案例时基本上就是直接下载获取数据然后就进行模型训练最后得出一个准确率出来。但这样的入门案例学习后当要拿自己的数据来训练模型却往往不知该如何处理数据、如何训练、如何应用。在本文将分两种情况进行介绍1使用MNIST数据本案例2使用自己的数据。2. 库文件的导入2.1 使用现成的mnist数据import tensorflow as tf# 从tensorflow.examples.tutorials.mnist 导入模块# 这是TensorFlow 为了教学MNIST而提前编制的程序from tensorflow.examples.tutorials.mnist import input_dataimport matplotlib.pyplot as pltmnist input_data.read_data_sets(/home/anaconda2/桌面/mnist_practice/MNIST_data,one_hotTrue) # MNIST_data指的是存放数据的文件夹路径one_hotTrue 为采用one_hot的编码方式编码标签# 从MNIST_data/中读取MNIST数据这条语句在数据不存在时会自动执行下载2.2 使用自己做的数据如果是使用自己的数据集在准备数据时的重要工作是“标注数据”也就是对数据进行打标签主要的标注方式有① 整个文件打标签。例如MNIST数据集每个图像只有1个数字可以从0至9建10个文件夹里面放相应数字的图像也可以定义一个规则对图像进行命名如按标签序号命名还可以在数据库里面创建一张对应表存储文件名与标签之间的关联关系。如下图② 圈定区域打标签。例如ImageNet的物体识别数据集由于每张图片上有各种物体这些物体位于不同位置因此需要圈定某个区域进行标注目前比较流行的是VOC2007、VOC2012数据格式这是使用xml文件保存图片中某个物体的名称name和位置信息xmin,ymin,xmax,ymax。如果图片很多一张一张去计算位置信息然后编写xml文件实在是太耗时耗力了。所幸有一位大神开源了一个数据标注工具labelImghttps://github.com/tzutalin/labelImg只要在界面上画框标注就能自动生成VOC格式的xml文件了非常方便如下图所示③ 数据截段打标签。针对语音识别、文字识别等有些是将数据截成一段一段的语音或句子然后在另外的文件中记录对应的标签信息。3. 数据预处理在准备好基础数据之后需要根据模型需要对基础数据进行相应的预处理。1使用MNIST数据本案例由于MNIST数据集的尺寸统一只有黑白两种像素无须再进行额外的预处理直接拿来建模型就行。2使用自己的数据而如果是要训练自己的数据根据模型需要一般要进行以下预处理a. 统一格式即统一基础数据的格式例如图像数据集则全部统一为jpg格式语音数据集则全部统一为wav格式文字数据集则全部统一为UTF-8的纯文本格式等方便模型的处理b. 调整尺寸根据模型的输入要求将样本数据全部调整为统一尺寸。例如LeNet模型是32x32AlexNet是224x224VGG是224x224等c. 灰度化根据模型需要有些要求输入灰度图像有些要求输入RGB彩色图像d. 去噪平滑为提升输入图像的质量对图像进行去噪平滑处理可使用中值滤波器、高斯滤波器等进行图像的去噪处理。如果训练数据集的图像质量很好了则无须作去噪处理e. 其它处理根据模型需要进行直方图均衡化、二值化、腐蚀、膨胀等相关的处理f. 样本增强有一种观点认为神经网络是靠数据喂出来的如果能够增加训练数据的样本量提供海量数据进行训练则能够有效提升算法的质量。常见的样本增强方式有水平翻转图像、随机裁剪、平移变换颜色、光照变换等。4. 划分数据集在训练模型之前需要将样本数据划分为训练集、测试集有些情况下还会划分为训练集、测试集、验证集。1使用MNIST数据本案例要训练模型的MNIST数据集已经提供了训练集、测试集代码如下#load data提取训练集、测试集train_xdata mnist.train.images #训练集样本validation_xdata mnist.validation.images #验证集样本test_xdata mnist.test.images #测试集样本#labels提取标签数据train_labels mnist.train.labels #训练集标签validation_labels mnist.validation.labels #验证集标签test_labels mnist.test.labels #测试集标签print(train_xdata.shape,train_labels.shape) #输出训练集样本和标签的大小2使用自己的数据如果是要划分自己的数据集可使用scikit-learn工具进行划分代码如下fromsklearn.cross_validationimporttrain_test_split# 随机选取75%的数据作为训练样本其余25%的数据作为测试样本# X_data数据集# y_labels数据集对应的标签X_train,X_test,y_train,y_testtrain_test_split(X_data,y_labels,test_size0.25,random_state33)5. 查看数据与可视化样本#查看数据例如训练集中第一个样本的内容和标签print(train_xdata[0]) #是一个包含784个元素且值在[0,1]之间的向量print(train_labrels[0])#可视化样本下面是输出了训练集中前20个样本fig, ax plt.subplots(nrows4,ncols5,sharexall,shareyall)ax ax.flatten()for i in range(20):。。img train_xdata[i].reshape(28, 28)。。ax[i].imshow(img,cmapGreys)ax[0].set_xticks([])ax[0].set_yticks([])plt.tight_layout()plt.show()6. 输出效果......................省略省略