版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6AI云容器的部署目录01
学习TensorFlow人工智能平台02部署TensorFlow云容器03使用TensorFlow开发“HelloWorld”程序01学习TensorFlow人工智能平台部署TensorFlow1.TensorFlowTensorFlow是谷歌公司开发的一个开源的机器学习框架。这个框架基于Python语言开发,在图形分类、音频处理、自然语言处理等场景下应用丰富,也是当下非常热门的机器学习框架之一。部署TensorFlow在安装TensorFlow之前,需确保正在使用的系统是TensorFlow支持的。TensorFlow支持的系统如下。Ubuntu16.04及以上版本。Windows7及以上版本。macOS10.12.6及以上版本。Raspbian9.0及以上版本。确认支持的系统之后,开始安装TensorFlow。我们首先需要确保pip是最新版本,旧版本的pip在安装的时候可能会遇到问题,所以我们需要先升级pip到最新版本。#pip3install--upgradepip部署TensorFlow确保pip是最新版本之后,使用如下命令安装稳定版的TensorFlow,其执行结果如图所示。#pip3installtensorflow通过下列命令测试TensorFlow是否安装成功,如果有返回张量信息,则表明安装成功。#python3-c"importtensorflowastf;print(tf.reduce_sum(tf.random.normal([1000,1000])))"02部署TensorFlow云容器部署TensorFlow云容器部署TensorFlow容器需要用到Docker,安装Docker之前先升级apt包并且允许apt从仓库下载Docker。升级apt的命令如下,其执行结果如图所示。#sudoapt-getupdate部署TensorFlow云容器安装包的命令如下,其执行结果如图所示。#sudoapt-getinstall\apt-transport-https\ca-certificates\curl\gnupg\lsb-release部署TensorFlow云容器添加Docker官方的GPG密钥命令如下,其执行结果如图所示。#curl-fsSL/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg部署TensorFlow云容器建立稳定版的仓库,命令如下。#echo\"deb[arch=amd64signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]/linux/ubuntu\$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null仓库更改之后,需要再次更新apt。然后开始安装Docker引擎,命令如下,其执行结果如图所示。#sudoapt-getupdate#sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io部署TensorFlow云容器安装好Docker引擎后,开始安装TensorFlow。官方TensorFlowDocker映像位于tensorflow/tensorflow,即DockerHub代码库中。下载镜像的命令如下,其执行结果如图所示。#dockerpulltensorflow/tensorflow部署TensorFlow云容器镜像下载好之后启动运行,测试是否安装成功。测试结果的命令如下,其执行结果如图所示。#dockerrun-it--rmtensorflow/tensorflow\python-c"importtensorflowastf;print(tf.reduce_sum(tf.random.normal([1000,1000])))"03使用TensorFlow开发“HelloWorld”程序使用TensorFlow开发程序1.手写数字识别首先,创建一个helloworld.py文件,用来存储“HelloWorld”的源代码。在TensorFlow中,“HelloWorld”并不是真正输出“HelloWorld”,而是指在机器学习和人工智能中,相当于其他语言的“HelloWorld”地位的入门程序,是训练手写数字的识别。用“touch”命令创建一个helloworld.py文件,存储手写数字识别程序,命令如下。#touchhelloworld.py文件创建完成后,用“ls”命令查看是否成功创建,若创建失败,则需重新创建一个,命令如下,结果如图所示。#ls使用TensorFlow开发程序编辑helloworld.py文件的命令如下,其执行结果如图所示。#gedithelloworld.py使用TensorFlow开发程序导入下载好的TensorFlow,代码如下。importtensorflowastf在编写程序之前,需要准备好MNIST数据集:下载训练集和测试集,以及两个数据集的标签。如果不下载数据集,Keras在检测不到数据集的情况下会自动下载数据集。下载MNIST数据集,如图所示。使用TensorFlow开发程序样本准备好之后,将样本的整数型数据转化成浮点型数据,代码如下。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')])使用TensorFlow开发程序为模型选择一个损失函数,代码如下。pile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])最后对模型进行训练和测试,训练的方法是fit(),测试的方法是evaluate()。训练和测试、运行程序、训练和验证结果。训练、测试的代码如下。model.fit(x_train,y_train,epochs=5)model.evaluate(x_test,y_test,verbose=2)使用TensorFlow开发程序使用TensorFlow开发程序2.服装图像分类服装产品的分类对于购物App来说是不可绕开的一环,没有产品分类,消费者寻找商品的时候会没有头绪,无法准确找到自己想要的产品(如鞋子、帽子等)。因此服饰产品的分类在销售过程中显得尤为重要:能够帮助客户更快定位想要的产品类型,进而推送相关产品给客户,达到销售的目的。服装图像分类会用到Keras。Keras是Python的深度学习API,以TensorFlow作为后端支持Keras的运行。这里不是直接使用Keras或直接导入Keras,而是通过TensorFlow导入经过打磨后的API“keras”,其代码如下。fromtensorflowimportkeras进行程序开发的第一步,创建一个Python文件,用于保存程序。用“touch”命令创建一个名为cloth.py的文件,并且用“ls”命令查看文件是否创建成功,命令如下,结果如图所示。touchcloth.pyls使用TensorFlow开发程序文件创建成功之后,进入cloth.py文件,编写程序,命令如下。geditcloth.py本程序将会使用TensorFlow以及Keras,所以需要在文件开头导入这两个库。进入cloth.py文件,添加如下内容导入TensorFlow以及Keras,以满足之后程序开发所需要的功能需求。importtensorflowastffromtensorflowimportkeras在进行图像分类时,还需要额外用到NumPy库和Matplotlib库。NumPy库是Python的科学计算基础软件库,是众多Python库中的一个。Matplotlib库是Python的2D绘图库,它可以生成图表、直方图、功率谱、条形图、误差图、散点图等。服装图像分类需要用NumPy库进行科学计算,用Matplotlib库输出分类结果的图表,让使用者能够更加直观地看到最终的分类结果。使用TensorFlow开发程序在使用这两个库之前,需要确保计算机上安装了NumPy和Matplotlib,用以下命令安装NumPy和matplotlib。pipinstallnumpypipinstallmatplotlib如果计算机上已经安装了某库,就会提示该库已存在。如本任务在安装NumPy时,计算机已经安装过这个库,因此在执行命令的时候会提示NumPy库已经安装。NumPy库已存在的提醒如图所示。使用TensorFlow开发程序安装Matplotlib,如图所示。若计算机未安装该库,将显示安装过程和进度,直至最后安装成功的提示。如果Matplotlib安装失败,用户可以查看错误信息并根据其内容进行调整。使用TensorFlow开发程序NumPy库和Matplotlib库安装完成之后,返回cloth.py程序文件,在程序文件的头部导入这两个库,并将NumPy库的使用名改为np,用“as”命令就可以更改NumPy在调用时使用的名字,Matplotlib库中只需导入pyplot即可,同样也更改使用名,将名字更改为plt。在cloth.py头部添加如下内容导入NumPy和Matplotlib。importnumpyasnpimportmatplotlib.pyplotasplt本任务用的数据集是FashionMNIST数据集,如图所示,其中包含60000个训练集和10000个测试集。训练集的意思是这一部分的数据集合是用来训练图像分类模型的,测试集则是用于检验训练完的模型。使用TensorFlow开发程序FashionMNIST数据集中,每张图片都是28×28像素大小,每张图片的像素值为0~255,总共被分为10类,训练集和测试集中的每张图片都有对应的标签。标签的数字对应着程序分类之后的结果,将结果和数字对应,结合Matplotlib库输出一个图表,提供更加直观的可视化结果。FashionMNIST数据集分类,如表所示。标签名称0T-shirt/top1Trouser2Pullover3Dress4Coat5Sandal6Shirt7Sneaker8Bag9Ankleboot使用TensorFlow开发程序找到了需要的数据集之后,接下来就是在cloth.py文件中下载数据集,并且对数据集进行分类放置。TensorFlow已经为用户准备好了下载数据集的方法,读者只需要调用load_data()这个方法就可以下载和分类数据集了。下载数据集,如图所示。下载数据集的代码如下。fashion_mnist=keras.datasets.fashion_mnistfashion_mnist.load_data()=(train_images,train_labels),(test_images,test_labels)代码所表达的意思是:将数据分成训练集和测试集两个部分,每个部分分成图片和标签,下载完成后,load_data()方法会返回4个NumPy数组,对应着“(train_images,train_labels),(test_images,test_labels)”。下载方法写好后保存程序,回到终端执行cloth.py文件,执行下载方法。使用TensorFlow开发程序为了使输出的结果更加直观,这里加上了标签的名称,作为Matplotlib绘制图标时的坐标名称,代码如下。class_names=['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankleboot']之后是数据的处理部分,先查看之前下载的数据集。需要用到Matplotlib库查看经过处理后的图片。plt.figure()plt.imshow(train_images[9])plt.colorbar()plt.grid(False)plt.show()plt.figure()plt.imshow(train_images[19])plt.colorbar()plt.grid(False)plt.show()使用TensorFlow开发程序使用TensorFlow开发程序查看完数据集之后,为了训练神经网络模型,需要对这些数据集进行预处理,将每张图片0~255的像素数值,转化为0~1的像素数值,因此需要将每一个训练集和测试集的图片像素数值都除以255.0,让每一张图片的最终像素数值都在0~1之间,代码如下。train_images=train_images/255.0test_images=test_images/255.0预处理完数据集中训练集和测试集的图片,用Matplotlib库检查图像的像素数值、格式等是否正确,代码如下。检查图像,如图6-30所示。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],cmap=plt.cm.binary)plt.xlabel(class_names[train_labels[i]])plt.show()使用TensorFlow开发程序使用TensorFlow开发程序训练神经网络模型需要先构建模型,配置模型的层(Layer),然后编译和训练模型。层是构成神经网络的基本组成部分,层会从输入数据(经过运算后的一些数据)中提取特征,利用这些数据解决问题。本任务利用Keras的Sequential()方法,配置了3层模型,分别是扁平层和两个密集连接或全连接神经层。第一层扁平层的作用是将二维数组转化为一维数组,因为图片是一个二维的数据,因此用二维数组保存。为了训练神经网络模型,需要将这个二维的数据转换成一维的数据。将二维数组转化为一维数组的操作叫作扁平化。第二层和第三层是密集连接层或全连接层,如果神经网络层数多的话,它们都可以计入隐藏层。第一个Dense层有128个神经元,使用的激活函数是relu函数;第二个Dense层会返回一个长度为10的logits数组,每个元素有一个得分,用来表示当前预测的图像属于10个标签中的哪一类。代码如下。model=keras.Sequential([keras.layers.Flatten(input_shape=(28,28)),keras.layers.Dense(128,activation='relu'),keras.layers.Dense(10)])使用TensorFlow开发程序在编译模型这个步骤中,需要确定一些关键的信息,比如损失函数、优化器、指标等,这些信息对最终模型的训练有着很大的影响。损失函数的作用是测量模型在训练期间的准确率,优化器的作用是决定模型如何根据数据和损失函数进行更新,指标的作用是监控训练和测试步骤。代码如下。pile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])所有准备步骤完成之后,开始训练模型。首先拟合数据,调用model.fit()方法就可以拟合模型与训练数据。拟合就是对模型的训练,代码里进行了10个轮次的拟合。拟合模型如图所示。拟合后可以看到模型的准确率有0.9100。使用TensorFlow开发程序查看模型在测试集上的准确度代码如下,其结果如图所示。test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)print('\n测试集准确度:',test_acc)模型在测试集上的准确度并没有在训练集上的高,测试集的准确度大概为0.8851,这里有一个比较重要的概念——过拟合。过拟合指的是机器学习模型对新的输入、一些不属于训练集的输入进行预测、分类等操作时的表现并没有在训练数据上表现得好。过拟合会记住训练集上的一些噪声和细节,这些内容会对模型在新数据上的表现有负面影响。使用TensorFlow开发程序模型训练好之后,接下来就是对图像进行实际的预测。本任务的模型中增加了一层softmax层,用于将logits的线性输出转化成概率,代码如下。probability_model=tf.keras.Sequential([model,tf.keras.layers.Softmax()])predictions=probability_model.predict(test_images)添加完成之后,对测试集的数据进行预测,并且输出预测图像的标签,对比预测的结果是否准确,代码如下。预测结果如图所示。np.argmax(predictions[10])test_labels[10]在JupyterNotebook中,可以看到分段执行的两部分代码:预测结果和图像标签。这就是说,可以更加直观地看出预测的结果是否跟标签标记的相同。模型显示第一张图预测的结果,这张图片的内容属于分类里的第十类,也就是Ankleboot(短靴)。从预测图片的标签中可以知道,这张图片确实属于短靴,因此模型的预测结果是正确的。使用TensorFlow开发程序接下来就是利用Maplotlib库将预测的结果绘制成图表,更加直观地显示预测结果。为了能够绘制图表,需要创建两个方法,分别是plot_image()和plot_value_array()。plot_image()方法用于绘制预测的图片以及所属类别和预测准确率,plot_value_array()方法用于绘制预测结果的直方图,代码如下。defplot_image(i,predictions_array,true_label,img):predictions_array,true_label,img=predictions_array,true_label[i],img[i]plt.grid(False)plt.xticks([])plt.yticks([])plt.imshow(img,cmap=plt.cm.binary)predicted_label=np.argmax(predictions_array)ifpredicted_label==true_label:color='blue'else:color='red'plt.xlabel("{}{:2.0f}%({})".format(class_names[predicted_label],100*np.max(predictions_array),class_names[true_label]),color=color)defplot_value_array(i,predictions_array,true_label):predictions_array,true_label=predictions_array,true_label[i]plt.grid(False)plt.xticks(range(10))plt.yticks([])thisplot=plt.bar(range(10),predictions_array,color="#777777")plt.ylim([0,1])predicted_label=np.argmax(predictions_array)thisplot[predicted_label].set_color('red')thisplot[true_label].set_color('blue')使用TensorFlow开发程序写完绘制图表的方法后,接下来就是通过图表的方式显示预测结果的时刻。比如,测试集中的第22张图的预测结果,第55张图的预测结果。代码如下。i=21plt.figure(figsize=(6,3))plt.subplot(1,2,1)plot_image(i,predictions[i],test_labels,test_images)plt.subplot(1,2,2)plot_value_array(i,predictions[i],test_labels)plt.show()i=54plt.figure(figsize=(6,3))plt.subplot(1,2,1)plot_image(i,predictions[i],test_labels,test_images)plt.subplot(1,2,2)plot_value_array(i,predictions[i],test_labels)plt.show()使用TensorFlow开发程序3.电影评论分类评论在日常生活中是很常见的,比如在各种相应的App中会有对餐饮店、景点、住宿、商家等的评论,评论的内容各式各样,有积极的评论、中肯的评论、恶意的评论等。本任务将关注对电影的评论,并将评论的内容分为积极和消极两类,这也是一个机器学习中重要且应用广泛的二分类问题。本任务采用了网络电影数据库中的IMDB数据集,这个数据集包含50000条电影评论。任务中将这50000条评论按照好评和差评切割成训练集和测试集,两个数据集都有25000条评论数据。任务的开始需要创建comment.py文件,用于存储程序。命令如下。touchcomment.py本任务将在JupyterNotebook上进行,因此运行过程中的代码需要读者自行保存到创建好的comment.py文件中。首先导入TensorFlow库、Keras库和NumPy库,代码如下。importtensorflowastffromtensorflowimportkerasimportnumpyasnp使用TensorFlow开发程序接下来用TensorFlow提供的下载数据集的方法,将IMDB数据集下载并保存到NumPy数组里,代码如下。num_words参数保留了1万个常见单词,低频的词汇会被丢弃。下载数据集,如图所示。imdb=keras.datasets.imdb(train_data,train_labels),(test_data,test_labels)=imdb.load_data(num_words=10000)使用TensorFlow开发程序IMDB影评数据集是经过处理后的数据集,每个单词都被转化成对应的整数数字,标签有两个数值,分别是0和1,0代表差评,1代表好评。随机输出一条处理后的评论及其标签。评论数据、评论数据的标签。使用TensorFlow开发程序在输出的评论数据中可以看到每个单词都被转化成数字,最终以数组的形式呈现。由于影评的长度各不相同,但神经网络的输入必须长度一致,因此本任务使用填充数组的方式让数组长度标准化,可以调用Keras库中的pad_sequences()方法。把处理数据这一步作为神经网络的第一层,代码如下。train_data=keras.preprocessing.sequence.pad_sequences(train_data,value=0,padding='post',maxlen=256)test_data=keras.preprocessing.sequence.pad_sequences(test_data,value=0,padding='post',maxlen=256)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耐酸胶鞋市场需求与消费特点分析
- 电镀参数测试仪市场需求与消费特点分析
- 2024年度安居客大连二手房地产广告发布合同
- 2024年度信息技术产品购买与维护合同
- 2024年度影视作品制作与发行权转让合同
- 2024年度汽车制造设备采购与安装合同
- 2024年度房产买卖合同模板
- 2024年度教育信息化建设与维护合同
- 椎间盘修复用医疗设备市场发展现状调查及供需格局分析预测报告
- 2024年度版权购买合同版权购买合同
- 赔偿树苗协议书范本
- 国家开放大学本科《纳税筹划》在线形考(形考任务三)试题及答案
- 财政投资工程项目评审面临的问题及其对策
- 周围神经病变(课件)
- CR300BF型动车组网络设备及列车控制讲解
- 2024年全国中小学教师职业道德知识竞赛试题库及答案
- 知识付费合同协议范本
- 【110kv水电站电气一次部分设计17000字(论文)】
- 2024医疗机构重大事故隐患判定清单(试行)学习课件
- MOOC 细胞生物学-北京师范大学 中国大学慕课答案
- 高压电缆高频局部放电带电检测技术导则
评论
0/150
提交评论