深度学习

理解和使用深度学习网络

新的深度学习例子

最新版本中有35个新的深度学习相关例子。这是很多覆盖的,释放笔记可以干燥,所以我带来了增援。我询问文档团队的成员分享他们创建的新示例,并回答了一些关于为什么他们对此感兴趣的问题。请随时提出以下意见部分的问题!
新的深度网络设计师示例
深网络设计师(DND)自2018年以来一直是深度学习工具箱的旗舰应用程序。上次版本(20A)在应用程序内引入培训,但您只能为图像分类进行培训。在20B培训中,大规模扩展以涵盖更多的深入学习应用。
新功能允许导入和可视化新数据类型,这使得工作流程如时间序列,图像到图像回归和语义分段。这个例子显示如何使用DND训练语义分段网络。

深度网络设计器可视化输入数据

给我们亮点:应用程序此版本中有更多的灵活性;您可以导入任何数据存储并培训适用的任何网络Trainnetwork.。这为培训培训和图像到图像回归工作流程开辟了。您还可以在培训之前直接在应用程序中可视化输入数据。虽然这是一个简单的例子,但它走过这些步骤,并半快速列车。
创建示例时的任何挑战?不是本身的挑战,但这个例子触及了很多组件:语义分段,图像处理,计算机愿景以及如何在应用程序的上下文中使用和解释它。此外,算法使用不平衡所以我也要读到这一点。
还有什么?
  • 我也创造了一个“概念页面“这是尝试和测试应用程序的结果。我想提供您可以立即使用该应用程序的数据。许多其他示例需要清洁和预处理,所以相反,我想提供您可以运行的箱子的禁止数据。如果您从空白MATLAB开始,您可以运行这些代码片段(时间序列,图像,像素等),这些代码片段(时间序列,图像,像素等)可以用作DND工作流的起点。这是用于快速导入数字数据的代码:
datafolder = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','digitdataset');imds = imageageataStore(datafolder,'insertubfolders',true,...'labelsource','foldernames');Imageaugmenter = ImagedataAugmenter('RandRotation',[1,2]);Augimds = AugmentedimageDataStore([28 28],IMDS,'dataAugmentation',Imageaugmenter);Augimds = Shuffle(Augimds);
使用这些代码片段作为起点,并尝试适应自己的数据集和应用程序!
  • 还有一个图像到图像回归示例,我为那些对语义分段替代品感兴趣的人创建。这个例子使用DND使用Image Deblurring使用DND来使用DND。
除了你的工作,还有其他例子的任何建议试试20B吗?
  • 石灰非常酷:有趣(有用)查看网络实际学习的内容(我们涵盖下面的下一个特色榜样!
  • 有一个新的风格转移例子在GitHub上提供太!
感谢Jess的洞察力和建议!这个例子在这里
用ImageLime可视化预测
毕业凸轮和闭塞灵敏度已被用于深度学习工具箱,用于释放或两个​​,以可视化使网络预测特定类的数据的区域。此版本具有一种名为Lime的新可视化技术。这个新的例子用途ImageLime.用于可视化。
什么是石灰 - 在60秒或更短的时间里?石灰代表局部可解释的模型 - 不可知的解释,它比实现的毕业凸轮算法稍微复杂。您可以向石灰算法提供单个数据点,算法介绍数据以生成一堆样本数据。然后,算法使用这些样本来适合具有与深网络相同的分类行为的简单回归模型。由于扰动,您可以看到数据的哪些部分对类预测最重要。模型 - 不可知意味着您如何获得原始模型并不重要,这只是显示本地化到初始数据变化的分数。
要记住的主要事情是Lime计算要重要性的图表,以向您展示对类分数最大的图像的区域。这些区域对于该特定类预测是必不可少的,因为如果它们在扰动图像中被删除,则得分会下降。

除了旁边,我必须问:什么是狗的形象?我们使用它很多深入学习:它与matlab船只船只,很高兴显示!狗的名字是Sherlock,她属于Mathworks的开发人员。我们决定为该示例使用此图像,因为我们使用具有遮挡灵敏度和渐变凸轮的相同图像。使用相同的图像对于所有可视化可以帮助您比较并突出算法之间的相似性或差异。事实上,在我们的例子中与Grad-Cam比较石灰
您可以在下面并排可视化所有3种算法:
图像石灰 Grad-Cam 闭塞敏感性
链接到 链接到 链接到
显示可视化算法的并排比较可用的可视化算法。所有算法都可以显示热图,但石灰也可以显示出漂亮的超像素区域(如上所示)。 石灰结果也可以通过显示最重要的少数特征来绘制:

创建示例时的任何挑战?此示例是一个很好的延续,从之前的其他可视化工作,因此创建此示例是相当简单的。唯一的挑战是决定函数的名称:我们应该称之为ImageLime,还是只是石灰,甚至是Depeply。我们争论了一段时间。
还有什么?
  • 顾名思义,函数ImageLime.主要用于图像。但是,它适用于任何使用的网络imageInputlayer.,所以它可以使用时间序列,光谱或甚至是文本数据
  • 这是一个非常有趣的例子,我的同事用作这个例子的增强。她向算法显示了许多动物园动物的图片,然后用石灰在特定的动物身上。

此示例使石灰几乎像动物检测的语义分段网络!
net = googlenet;InputSize = Net.Layers(1).InputSize(1:2);img = imread(“动物.jpg”);IMG = IMResize(IMG,INPUTSIZE);imshow(img)classlist = [分类(“老虎”)分类(“狮子”)分类(“豹”)];[map,featmap,featim] = ImageLime(net,img,classlist);FullMask = Zeros(输入);对于j = 1:numel(classlist)[〜,idx] = max(featimp(:,j));mask = ismember(featmap,Idx);FullMask = FullMask +面具; end maskedImg = uint8(fullMask).*img; imshow(maskedImg)
除了这个例子,你喜欢20b的任何其他例子?
  • 小公子是新的。这不是超级顺利,但它非常有用。小公子是一种管理和处理自定义培训工作流程数据的新方法。它只是管理定制训练循环和更清洁的数据的更好方式。
感谢索菲亚的信息和建议,尤其是动物形象!这个例子在这里
新功能输入Trainnetwork.
我们的最终功能榜样突出了一个更高级的榜样。在此版本之前,网络支持仅限于图像或序列数据。金宝app20B引入了新的输入层:featureInputLayer.
此图层解锁了新类型的数据:泛型数据。它不再需要连续数据,例如时间序列数据。在该示例中的数据是换档数据,因此每列对应于来自传感器的一个值:例如温度和其他单个值。每行都是观察。
链接到示例是这里。
此工作流程听起来像传统的机器学习工作流程。关于重叠的任何疑虑?此示例关闭传统机器学习之间的间隙,并允许用户探索ML和DL。在此版本之前,个人特征数据只能在传统的机器学习工作流程中工作。
您是否希望特征输入运行速度比其他深度学习级别更快?当然,我不得不说,“这取决于”,但我发现这个例子训练非常快(几秒钟)。你不处理大型图像,所以它可以跳得更快。此外,如果您的模型更简单,您可能需要更少的时间。
创建示例时的任何挑战?获取数据后,它基本上与培训任何网络的工作流程相同,但在进行此工作流程时会记住两件事:
  1. 您不能进行基于形象的卷积,但使用这样的数据,网络可能不需要像复杂一样复杂。
  2. 另一件需要考虑的是分类数据。传感器数据有时可以是字符串值,例如“开”或“关”而不是数值。深度学习网络不会接受这些值输入,所以你必须使用onehotencode.(也是一个新的函数,使得这种工作流可能会将分类标签转换为二进制文件。
显示简单的实施onehotencode.
  • 此示例的另一个扩展名正在使用两个图像特征数据在同一网络中。这个例子使用手写数字(图像),角度(特征)作为输入。它使用自定义训练循环来处理不同的输入,但它解锁了一个全新的网络类型。
除了这个例子,你喜欢20b的任何其他例子?
  • 如果您正在进行严重的低级别的东西,您将使用Model函数选项来定义和培训您的网络。这个概念页面显示所有内置层,默认初始化,以及如何自行实现。
  • 还有一个新的流程图页面,表明您的特定深入学习问题最适合哪种培训方法。这将有助于您在更简单之间做出决定Trainnetwork.选项,以更高级的自定义训练循环选项。
流程图帮助确定要使用的培训风格。链接到完整流程图示例这里
感谢Ieuan的信息和建议!链接到示例在这里
直接从Doc团队给你!我不得不说我是“概念页面”的粉丝,并希望趋势持续!再次感谢Jess,Sophia和Ieuan。我希望你发现这种信息和乐于助人。如果您对团队有任何疑问,请在以下发表评论!
|
  • 打印
  • 发电子邮件

评论

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。