人工智能应用导论(第三版)6-4技能代码实验手册_第1页
人工智能应用导论(第三版)6-4技能代码实验手册_第2页
人工智能应用导论(第三版)6-4技能代码实验手册_第3页
人工智能应用导论(第三版)6-4技能代码实验手册_第4页
人工智能应用导论(第三版)6-4技能代码实验手册_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目6技能代码实验手册3.4深度学习框架:TensorFlow2.0TensorFlow是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。【任务练习】实现MNIST数据集手写数字的识别,该项目是TensorFlow初学者快速入门的示例任务。具体参考代码如下:#导入TensorFlow包,并命名为tfimporttensorflowastf#载入并准备好MNIST数据集,并将样本从整数转换为浮点数mnist=tf.keras.datasets.mnist(x_train,y_train),(x_test,y_test)=mnist.load_data()x_train,x_test=x_train/255.0,x_test/255.0#将模型的各层堆叠起来,以搭建tf.keras.Sequential模型。model=tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28,28)),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10,activation='softmax')])#为训练选择优化器和损失函数pile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])#训练并验证模型model.fit(x_train,y_train,epochs=5)model.evaluate(x_test,y_test)3.5Keras实现基本图像分类基本图像分类开发主要包括图像采集、图像清洗、图像标注、模型选择、模型训练、模型评估、模型调用(预测)几个基本步骤。【任务练习】本项目将训练一个神经网络模型,对运动鞋和衬衫等服装图像进行分类。这里不理解所有细节也没关系;这只是对完整TensorFlow程序的快速概述,详细内容会在实际操作的同时进行介绍。本任务使用了tf.keras,它是TensorFlow中用来构建和训练模型的高级API。#TensorFlowandtf.kerasimporttensorflowastffromtensorflowimportkeras#Helperlibrariesimportnumpyasnpimportmatplotlib.pyplotasplt#导入FashionMNIST数据集fashion_mnist=keras.datasets.fashion_mnist(train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data()#定义每个图像与标签之间的映射关系class_names=['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankleboot']#图像预处理,将像素归一化缩小至0到1之间train_images=train_images/255.0test_images=test_images/255.0#构建模型#设置层model=keras.Sequential([keras.layers.Flatten(input_shape=(28,28)),keras.layers.Dense(128,activation='relu'),keras.layers.Dense(10)])#编译模型pile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])#训练模型#向模型馈送数据model.fit(train_images,train_labels,epochs=10)#评估准确率test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)print('\nTestaccuracy:',test_acc)#进行预测probability_model=tf.keras.Sequential([model,tf.keras.layers.Softmax()])predictions=probability_model.predict(test_images)#查看第一个预测结果print(predictions[0])#预测结果print(np.argmax(predictions[0]))#标签置信度3.6基于CNN的CIFAR10图像分类卷积神经网络(ConvolutionNeuralNetwork,CNN),又称为深度卷积神经网络,可以将其简单地理解为包含卷积操作且具有深度结构的网络,是通过权值共享和局部连接的方式,对数据进行特征提取,并进行预测的过程。卷积神经网络通过反馈修正卷积核和偏置参数使输出与预测间的偏差减小。构建卷积神经网络进行深度学习开发可以从四个方面展开:输入输出、网络结构、损失函数以及评价指标。卷积神经网络的基本结构由以下几个部分组成:输入层(InputLayer)、卷积层(ConvolutionLayer)、池化层(PoolingLayer)、激活函数层(ActivationFunctionLayer)和全连接层(Full-ConnectionLayer)。图6-9给出了一个三层卷积的CNN网络结构。图6-9三层卷积的CNN网络结构【任务练习】本任务展示如何训练一个简单的卷积神经网络(CNN)对CIFAR图像进行分类。本任务使用KerasSequentialAPI,创建和训练模型只需要几行代码。#导入TensorFlowimporttensorflowastffromtensorflow.kerasimportdatasets,layers,modelsimportmatplotlib.pyplotasplt#下载并准备CIFAR10数据集(train_images,train_labels),(test_images,test_labels)=datasets.cifar10.load_data()#Normalizepixelvaluestobebetween0and1train_images,test_images=train_images/255.0,test_images/255.0#验证数据class_names=['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']plt.figure(figsize=(10,10))foriinrange(25):plt.subplot(5,5,i+1)plt.xticks([])plt.yticks([])plt.grid(False)plt.imshow(train_images[i])#TheCIFARlabelshappentobearrays,#whichiswhyyouneedtheextraindexplt.xlabel(class_names[train_labels[i][0]])plt.show()#构造卷积神经网络模型model=models.Sequential()model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(32,32,3)))model.add(layers.MaxPooling2D((2,2)))model.add(layers.Conv2D(64,(3,3),activation='relu'))model.add(layers.MaxPooling2D((2,2)))model.add(layers.Conv2D(64,(3,3),activation='relu'))model.add(layers.Flatten())model.add(layers.Dense(64,activation='relu'))#增加Dense层model.add(layers.Dense(10))#查看完整的模型架构model.summary()#编译并训练模型pile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])history=model.fit(train_images,train_labels,epochs=10,validation_data=(test_images,test_labels))#评估模型plt.plot(history.history['accuracy'],label='accuracy')plt.plot(history.history['val_accuracy'],label='val_accuracy')plt.xlabel('Epoch')plt.ylabel('Accuracy')plt.ylim([0.5,1])plt.legend(loc='lowerright')plt.show()test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)3.7OpenCV基础OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习库,可以运行在Linux、Windows、Android和MacOS操作系统上。提供了C++、Python、Ruby、MATLAB、C#、Ch、GO等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。其核心代码由一系列C函数和少量C++类构成,轻量且高效。OpenCV实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域研究最有力的工具,侧重于“处理”图像,如图像增强、还原、去噪、分割等等。可以解决的问题:人机交互、机器人视觉、运动跟踪、图像分类、人脸识别、物体识别、特征检测、视频分析、深度图像等。更多详细内容可查阅OpenCV官网。【任务练习】利用OpenCV将一张彩色图像转换为灰度图像,并将灰度图像存储起来。步骤一:图像读取按照灰度图的方式读入图像,cv2.imread函数的第二个参数选择cv2.IMREAD_GRAYSCALE;如果需要按照彩色图像读取,只需要在cv2.imread函数的第二个参数选择cv2.IMREAD_COLOR即可。importcv2img=cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)type(img),img.shape 输出结果如图6-10所示:图6-10图像输出结果从结果中我们可以看到,按照灰度图的方式读到的图像数组,其形状为二维的,如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论