前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习实战篇之 ( 十一) -- TensorFlow学习之路(八)

深度学习实战篇之 ( 十一) -- TensorFlow学习之路(八)

作者头像
用户5410712
发布2022-06-01 20:12:09
3060
发布2022-06-01 20:12:09
举报
文章被收录于专栏:居士说AI居士说AI

科普知识

MindSpore 是一个全场景 AI 计算框架,它的特性是可以显著减少训练时间和成本(开发态)、以较少的资源和最高能效比运行(运行态),同时适应包括端、边缘与云的全场景(部署态)。

针对不同的运行环境,MindSpore 框架架构上支持可大可小,适应全场景独立部署。MindSpore 框架通过协同经过处理后的、不带有隐私信息的梯度、模型信息,而不是数据本身,以此实现在保证用户隐私数据保护的前提下跨场景协同。除了隐私保护,MindSpore 还将模型保护内建于框架中,实现模型的安全可信。

MindSpore 通过实现 AI 算法即代码,使开发态变得更加友好,可以显著减少模型开发时间。以一个 NLP(自然语言处理)典型网络为例,相比其它框架,用 MindSpore 可降低核心代码量 20%,开发门槛大大降低,效率整体提升 50% 以上。

通过 MindSpore 框架自身的技术创新及其与昇腾处理器协同优化,有效克服 AI 计算的复杂性和算力的多样性挑战,实现了运行态的高效,大大提高了计算性能。除了昇腾处理器,MindSpore 同时也支持 GPU 与 CPU 等其它处理器。

回顾

经过前面几篇文章的学习,相信大家已经学会了如何构建一个常见的图像识别(分类)的深度学习项目,然而,项目代码中的细节部分,可能大家不太熟悉,今天,我们就来对之前的一些未能详细讲解的地方进行总结,希望对大家有所帮助。

一、总结

总结主要分为以下几个环节展开:

1.数据处理

2.模型搭建

3.模型训练及保存

4.模型测试

数据处理

数据处理部分存在理由是,需要将原始的图片数据(jpg,png,灰度图或者多通道彩色图)解码为原始的矩阵数据,然后将矩阵转化为深度学习框架支持的张量(tensor)类型(浮点型数据),同时按照神经网络的训练方式,将训练集中的所有图像按照一定的批次(16,32,64等)为一批放进网络进行训练。

代码片段一:将训练集中的所有图像读取出来保存到两个列表中,分别存放图像的存储路径和对应的标签(事先预定)

代码片段二:调用tf自带的批数据处理函数,将上一步读取到的列表进行批次划分,返回批数据,然后直接传递给网络进行训练。

模型搭建

模型搭建主要负责数据传进来后处理,网络的每一层需要严格对应输入的维度变化,从而可以完成前向传播计算。

初始数据维度[B,H,W,C],这就是输入网络的数据的维度信息(shape),第一纬度B代表批数据维,也就是有多少个数据,后面三维表示每一个数据的真正维度,例如,[32,224,224,3]代表有32个3通道,且长宽为224的图像,神经网络中,图像的长宽必须是固定的,如果是不断变化的,那么网络的维度就会因为最开始是固定的而不能随机变化,导致出现维度报错,因此,通常在数据处理部分,训练集中的图像将会被设置为固定长长宽,通常会出现这行代码:

网络中卷积层自定义函数:

如上如所示,

tf.nn.con2d()函数中,weights和stride维度需要注意,weights的维度为[kernel_size,kernel_size,in_channel,out_channel],

kernel_size表示卷积核的尺寸(一般为3x3,1x1,5x5),可以根据效果进行挑选,in_channel为输入数据的维度,即上一层网络的输出的维度,如果上一次层是原始图像,按照之前的图像维度就是3,如果上一层是卷积层,那么上一层卷积层的输出维度即为现在卷积的输入维度,out_channel为当前卷积想要输出的维度,也是卷积核的数量,输出后的特征图的数量即为out_channel,因此网络卷积核维度需要格外对应设置,不然报错连连。

模型训练及保存

这一环节最为重要的就是如何将数据输入到网络,以及网络的输出结果如何进行损失函数计算,通常tf的数据是通过feed函数喂进网络的,在实际run的时候才会导入数据,模型的输出除了需要参与loss计算外,还需计算出当前的准确率,以便我们能够观察网络的学习效果,(通常在进行一个轮次的训练之后会对测试集进行测试)网络的输出通常是一个类别数目的概率分布(分布之和为1),如果是两个类别,那么网络的最终输出对每个样本的输出是[0.8,0.2],随后取最大值(0.8)的索引[0]为预测值,然后与真实标签最比较,相同则为1,否则为0,由此得出一个批数据的正确个数,所有批次计算完后,即可得出整个测试集的准确率。

模型保存为将最好的模型保存下来,以便进行后期的使用和实验。

模型测试

模型测试部分较为简单,主要是将之前保存的模型结构以及相应的权重参数进行读取,进行实际的预测,这时候只是运行的前向传播部分,即只需要得到网络的预测值,数据处理部分与训练的时候保持一致即可。

结语

本期内容为对之前的图像分类项目进行总结,完整的跑通一个深度学习项目需要大家对细节部分进行解读和调试,特别是网络搭建部分,网络参数不可以随意设置,需要考虑输入数据的实际维度进行设置。

同时对于代码的细节部分,有些地方小编没有讲解到,希望大家能去发现并去得到结果,比如说,卷积的维度输出是四维,即[B,H,W,C],最后网络的输出是[B,N],N为类别数目,即一个样本有N个输出,最大值的索引为预测标签,那么四个维度是如何转化为两个维度的呢?希望大家去发现并从中学习。

周末快乐,下期再见!

编辑:玥怡居士|审核:小圈圈居士

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档