Press "Enter" to skip to content

如何可视化深度学习模型

深度学习模型通常非常复杂。而许多传统机器学习模型只使用了几百个参数,深度学习模型则拥有数百万甚至数十亿个参数。据传言,OpenAI在2023年春季发布的大型语言模型GPT-4拥有近2万亿个参数。可以说,所有这些参数之间的相互作用对于人类来说过于复杂,无法理解。

这就是机器学习中的可视化的用武之地。深度学习模型内部结构和数据流的图形表示可以让其复杂性更易于理解,并能够洞察其决策过程。通过正确的可视化方法和系统化的方法,许多看似神秘的训练问题和深度学习模型的表现不佳可以追溯到根本原因。在本文中,我们将探索各种深度学习可视化方法,并讨论它们的适用性。同时,我将分享许多实际示例,并指向各种方法的库和深入教程。

深度学习模型可视化帮助我们理解模型的行为和模型之间的差异,诊断训练过程和性能问题,以及优化和改进模型
深度学习模型可视化帮助我们理解模型的行为和模型之间的差异,诊断训练过程和性能问题,以及优化和改进模型| 来源

我们为什么要可视化深度学习模型?

可视化深度学习模型可以帮助我们实现多个不同的目标:

  • 可解释性和解释性:即使对于经验丰富的数据科学家和机器学习工程师来说,深度学习模型的性能有时也是令人震惊的。可视化提供了深入了解模型结构并揭示其成功学习训练数据中编码的关系的方法。
  • 调试模型训练:可以说,每个训练深度学习模型的人都遇到过模型无法学习或在特定样本集上存在困难的情况。造成这种情况的原因从错误连接的模型组件到错误配置的优化器都有。可视化对于监控训练过程和诊断问题非常有帮助。
  • 模型优化:参数较少的模型通常计算速度更快,资源利用更高效,同时更健壮,并能更好地推广到未见样本。可视化可以揭示模型中哪些部分是关键的,以及可以省略哪些层而不影响模型的性能。
  • 理解和教学概念:深度学习主要基于相当简单的激活函数和数学运算,如矩阵乘法。许多高中学生稍加培训就能够理解深度学习模型的内部计算步骤所需的所有数学知识。但是,这如何产生能够“理解”图像或在多种语言之间流利翻译的模型并不明显。优秀的可视化对于学生掌握深度学习等复杂抽象概念至关重要。特别是交互式可视化对于那些对该领域不熟悉的人非常有帮助。
深度学习可视化示例:小型卷积神经网络CNN
深度学习可视化的例子︰小型卷积神经网络CNN,注意彩色线条的粗细表示神经通路的权重|来源

深度学习可视化与传统机器学习可视化有何不同?

此时,您可能想知道深度学习模型可视化与传统机器学习模型的可视化有何不同。毕竟,深度学习模型难道不与其前辈密切相关吗?

深度学习模型以大量参数和分层结构为特点。许多相同的神经元按层叠加在一起。每个神经元通过少量的权重和激活函数来描述。虽然激活函数通常由模型的创建者选择(因此是所谓的超参数),但权重是在训练过程中学习的。这种相当简单的结构使得深度学习模型在几乎所有已知的机器学习任务中都有前所未有的性能。从我们人类的角度来看,我们付出的代价是深度学习模型比传统机器学习模型要大得多。

了解复杂的神经网络如何处理输入数据的过程比理解决策树要困难得多。因此,深度学习可视化的主要重点是揭示模型内的数据流动,并提供关于模型在训练过程中学习的每个结构相同层次上关注的内容的洞察。

尽管如此,我在上一篇博客文章中介绍的许多机器学习可视化技术也适用于深度学习模型。例如,混淆矩阵和ROC曲线在处理深度学习分类器时很有帮助,就像在传统分类模型中一样。

谁应该使用深度学习可视化?

简短答案是:任何与深度学习模型相关的人都应该使用可视化技术!特别是以下几类人:

  • 深度学习研究人员:许多可视化技术是由学术研究人员首先开发的,他们希望改进现有的深度学习算法或理解特定模型表现出某种特征的原因。
  • 数据科学家和机器学习工程师:创建和训练深度学习模型并不容易。无论是模型表现不佳、学习困难,还是产生可疑的好结果,可视化都可以帮助我们找到根本原因。因此,掌握不同的可视化方法对于任何深度学习从业者来说都是非常宝贵的。
  • 深度学习模型的终端用户:可视化对于具有技术背景的人通过API或将基于深度学习的组件集成到软件应用中使用深度学习模型的个人非常有价值。例如,Facebook的ActiVis是一个专为内部工程师量身定制的视觉分析系统,可促进对已部署神经网络的探索。
  • 教育工作者和学生:第一次接触深度神经网络的人以及教授他们的人常常难以理解他们编写的模型代码是如何转化为能够处理复杂输入数据(如图像或语音)的计算图的。可视化使得更容易理解一切是如何组合在一起,以及模型在训练过程中学到了什么。

深度学习可视化的类型

深度学习模型可视化有许多不同的方法。哪一种方法适合您取决于您的目标。例如,深度学习研究人员经常深入研究复杂的架构蓝图,以揭示不同模型部分对其性能的贡献。机器学习工程师通常更关注训练过程中的评估指标图表,因为他们的目标是尽快交付最佳性能的模型。

在本文中,我们将讨论以下几种方法:

  • 深度学习模型体系结构可视化:用节点表示层,用边表示神经元之间的连接的神经网络的类似图形表示。
  • 激活热图:深度神经网络中以层为单位的激活可视化,可提供模型对哪些输入元素敏感的洞察。
  • 特征可视化:可视化展示深度学习模型在输入中能够检测到的特征或模式的热图。
  • 深度特征分解:一种先进的方法,用于揭示深度学习模型在训练过程中学到的高级概念。
  • 训练动态图表:展示模型在训练迭代中的性能指标的可视化。
  • 梯度图:表示深度学习模型中不同层次的损失函数梯度。数据科学家常常使用这些图表来检测模型训练过程中的梯度爆炸或梯度消失。
  • 损失地形图:损失函数在深度学习模型输入空间上的三维表示。
  • 注意力可视化:热图和类似于图形的变换器模型注意力的可视化表示,可用于验证模型是否专注于输入数据的正确部分。
  • 嵌入可视化:在低维空间中以图形方式表示嵌入,这是许多自然语言处理和计算机视觉应用的重要构建模块,以揭示它们之间的关系和语义相似性。

深度学习模型体系结构可视化

可视化深度学习模型的架构-神经元、层和它们之间的连接-可以有许多用途:

  1. 它展示了数据从输入到输出的流动,包括在层之间传递时它的形状。
  2. 它清楚地显示了模型中的参数数量。
  3. 您可以看到模型中哪些组件重复出现,并了解它们如何相互关联。

有不同的方法来可视化深度学习模型的架构:

  1. 模型图显示模型的构建模块及其相互连接。
  2. 流程图旨在提供数据流和模型动态的见解。
  3. 逐层表示深度学习模型往往更复杂,并且显示激活和层内结构。

所有这些可视化不仅满足好奇心,还赋予深度学习从业者微调模型、诊断问题并在此基础上构建更强大算法的能力。

您可以在所有大型深度学习框架中找到模型架构可视化工具。有时,它们作为主包的一部分提供,而在其他情况下,框架的维护者或社区成员提供单独的库。

如何可视化PyTorch模型的架构?

如果您使用PyTorch,可以使用PyTorchViz来创建模型架构可视化。该库可视化模型的各个组件并突出显示它们之间的数据流。

以下是基本代码:

import torch
from torchviz import make_dot

# 创建一些样本输入数据
x = torch.randn(1, 3, 256, 256)

# 为样本数据产生预测
y = MyPyTorchModel()(x)

# 生成模型架构可视化
make_dot(y.mean(),
         params=dict(MyPyTorchModel().named_parameters()),
         show_attrs=True,
         show_saved=True).render("MyPyTorchModel_torchviz", format="png")

附带本文的Colab笔记本中包含一个完整的PyTorch模型架构可视化示例

使用PyTorchViz创建的基于PyTorch的CNN的架构可视化
使用PyTorchViz创建的基于PyTorch的CNN的架构可视化 | 来源:作者

PyTorchViz在模型架构图中使用了四种颜色:

  1. 蓝色节点表示计算图中的张量或变量。它们是通过操作流动的数据元素。
  2. 灰色节点表示在张量上执行的PyTorch函数或操作。
  3. 绿色节点表示张量的梯度或导数。它们展示了梯度通过计算图反向传播的流动。
  4. 橙色节点表示训练过程中优化的最终损失或目标函数。

如何可视化Keras模型的架构?

要可视化Keras深度学习模型的架构,可以使用作为库一部分提供的plot_model实用函数:

from tensorflow.keras.utils import plot_model

plot_model(my_keras_model,

           to_file='keras_model_plot.png',

           show_shapes=True,

           show_layer_names=True)

我在本文的Colab笔记本中准备了一个完整的Keras架构可视化示例

基于Keras的神经网络的模型架构图
基于Keras的神经网络的模型架构图 | 来源:作者

plot_model函数生成的输出非常简单易懂:每个方框表示一个模型层,显示其名称、类型以及输入和输出形状。箭头表示层间数据的流动。

顺便提一下,Keras还提供了一个model_to_dot函数,可以创建类似于PyTorchViz上面生成的图形。

激活热图

激活热图是深度神经网络内部工作的可视化表示。它们展示了逐层被激活的神经元,让我们可以看到激活如何在模型中流动。

一个激活热图可以为单个输入样本或整个集合生成。在后一种情况下,我们通常会选择显示平均、中位数、最小或最大激活。这样做可以帮助我们识别网络中很少贡献模型输出的区域,并且在剪枝时不会影响性能。

让我们以计算机视觉模型为例。要生成一个激活热图,我们将样本图像输入模型,并记录深度神经网络中每个激活函数的输出值。然后,我们可以通过根据激活函数的输出对其神经元进行着色来创建模型中的一个层的热图可视化。或者,我们可以根据它们在内部层中引起的激活来着色输入样本的像素。这告诉我们输入的哪些部分达到了特定层。

对于具有许多层和数百万神经元的典型深度学习模型,这种简单方法会产生非常复杂和嘈杂的可视化结果。因此,深度学习研究人员和数据科学家提出了许多不同的方法来简化激活热图。

但目标仍然相同:我们希望揭示模型的哪些部分对输出有贡献,以及以何种方式。

对MRI数据进行分析的卷积神经网络生成激活热图
对MRI数据进行分析的卷积神经网络生成激活热图 | 来源

例如,在上面的示例中,激活热图突出显示了对CNN输出贡献最多的MRI扫描区域。

将这样的可视化结果与模型输出一起提供,可以帮助医疗专业人员做出有根据的决策。具体如下:

  1. 损伤检测和异常识别:热图突出显示了图像中的关键区域,有助于识别损伤和异常。
  2. 异常的严重程度评估:热图的强度与损伤或异常的严重程度直接相关。热图上较大且较亮的区域表示更严重的情况,可以迅速评估问题。
  3. 识别模型错误:如果模型在MRI扫描的医学上不重要的区域(例如颅盖骨或甚至脑部之外的部分)激活较高,这是一个明显的错误迹象。即使没有深度学习专业知识,医学专业人员也会立即看出该特定模型输出不可信。

如何为PyTorch模型创建可视化热图?

TorchCam库提供了几种方法来为PyTorch模型生成激活热图。

要为PyTorch模型生成激活热图,我们需要执行以下步骤:

  1. 使用TorchCam提供的方法之一初始化我们的模型。
  2. 将样本输入传递到模型并记录输出。
  3. 应用初始化的TorchCam方法。
from torchcam.methods import SmoothGradCAMpp

# 初始化Smooth Grad.CAM++提取器
cam_extractor = SmoothGradCAMpp(my_pytorch_model)

# 计算样本的模型输出
out = model(sample_input_tensor.unsqueeze(0))

# 生成类别激活图
cams = cam_extractor(out.squeeze(0).argmax().item(), out)

附带的Colab笔记本包含使用ResNet图像分类模型进行完整的TorchCam激活热图示例。

完成计算后,我们可以绘制模型中每个层的激活热图。

for name, cam in zip(cam_extractor.target_names, cams):
plt.imshow(cam.squeeze(0).numpy())
plt.axis('off')
plt.title(name)
plt.show()

在我例子模型的情况下,输出并不是非常有帮助:

为PyTorch模型创建可视化热图
为PyTorch模型创建可视化热图(图层)|来源:作者

通过叠加原始输入图像,我们可以极大地增强绘图的价值。幸运的是,TorchCam为此目的提供了overlay_mask实用函数:

from torchcam.utils import overlay_mask

for name, cam in zip(cam_extractor.target_names, cams):
result = overlay_mask(to_pil_image(img),
                to_pil_image(cam.squeeze(0), mode='F'),
                alpha=0.7)
plt.imshow(result)
plt.axis('off')
plt.title(name)
plt.show()

原始输入图像与ResNet18的第四层激活热图叠加
原始输入图像与ResNet18的第四层激活热图叠加 |来源:作者

如上所示的示例图中,激活热图显示了深度学习模型内部神经元激活最大的输入图像区域。这有助于工程师和普通观众理解模型内部发生的情况。

特征可视化

特征可视化揭示了深度神经网络学到的特征。在计算机视觉中特别有帮助,它揭示了神经网络对输入图像中的哪些抽象特征有响应。例如,卷积神经网络(CNN)架构中的神经元对对角线边缘或毛皮等纹理非常敏感。

这有助于我们理解模型在图像中寻找什么。与前一节讨论的激活热图的主要区别是,激活热图显示了对图像区域的总体响应,而特征可视化更深入地试图揭示模型对抽象概念的响应。

通过特征可视化,我们可以深入了解深度神经网络在不同层次上处理的具体特征。一般来说,靠近模型输入的层会对边缘等较简单的特征有响应,而靠近模型输出的层会检测更抽象的概念。

这样的见解不仅有助于理解内部工作原理,还可以作为调整和增强模型性能的工具。通过检查不正确或不一致激活的特征,我们可以改进训练过程或识别数据质量问题。

在本文的Colab笔记本中,您可以找到为PyTorch CNN生成特征可视化的完整示例代码。在这里,我们将重点讨论结果以及我们可以从中学到的东西。

对ResNet18处理一幅狗图像的特征可视化图
对ResNet18处理一幅狗图像的特征可视化图 |来源:作者

从上面的图中可以看出,CNN在每一层检测到不同的模式或特征。如果您仔细观察第一行对应模型的前四层,您会发现这些层检测到图像中的边缘。例如,在第一行的第二和第四个面板中,您可以看到模型识别出了狗的鼻子和耳朵。

随着模型的激活在模型中流动,越来越难以分辨出模型正在检测什么。但是,如果我们仔细分析,很可能会发现单个神经元被激活,例如,被狗的耳朵或眼睛。

深度特征分解

深度特征分解(DFF)是一种分析卷积神经网络学习到的特征的方法。DFF识别属于同一语义概念的网络特征空间中的区域。通过为这些区域分配不同的颜色,我们可以创建一个可视化,以便查看模型识别出的特征是否有意义。

计算机视觉模型的深度特征可视化
计算机视觉模型的深度特征可视化 | 来源

例如,在上面的示例中,我们发现模型基于小狗而不是周围的草地作出决策(即图像显示拉布拉多犬)。鼻子区域可能指向一只松狮犬,但头部和耳朵的形状将模型推向“拉布拉多犬”。这种决策逻辑模仿了人类处理任务的方式。

PyTorch-gradcam中提供了DFF的功能,其中包括一份全面的DFF教程,还讨论了如何解释结果。上面的图片基于这个教程。我简化了代码并添加了一些附加注释。你可以在Colab笔记本中找到我推荐的使用PyTorch-gradcam进行深度特征分解的方法。

训练动态图

训练动态图显示了模型的学习过程。通常通过损失和准确率等性能指标来衡量训练进展。通过可视化这些指标,数据科学家和深度学习从业者可以获得关键的见解:

  • 学习进展:训练动态图显示模型收敛的速度。快速收敛可能指向过拟合,而波动不定可能表明问题,例如不良初始化或不正确的学习率调整。
  • 提前停止:绘制损失帮助确定模型开始过拟合训练数据的时间点。训练损失下降而验证损失上升是过拟合的明确标志。过拟合发生的时间点是停止训练的最佳时机。
各种深度学习模型在训练周期中的损失图
各种深度学习模型在训练周期中的损失图 | 来源

在应用中查看

训练损失、验证Dice系数(也称为F1分数)和验证损失的模型训练运行结果 | 来源
相关文章

如何提高机器学习模型性能 [来自前亚马逊AI研究员的最佳实践]

了解更多

渐变图

如果性能指标的图表无法充分理解模型的训练进展(或缺乏进展),绘制损失函数的梯度可以帮助。

为了在训练过程中调整神经网络的权重,我们使用一种叫做反向传播的技术,计算损失函数对网络的权重和偏差的梯度。梯度是一个高维向量,指向损失函数增加最快的方向。因此,我们可以利用这个信息将权重和偏差向相反的方向移动。学习率控制我们改变权重和偏差的程度。

梯度消失或梯度爆炸可能会阻止深度神经网络的学习。绘制不同层的梯度平均值可以揭示梯度是消失(接近零)还是爆炸(变得非常大)。如果梯度消失,我们就不知道应该将权重和偏差移动到哪个方向,所以训练就停滞了。梯度爆炸会导致权重和偏差发生巨大变化,常常超过目标值,导致损失迅速波动。

机器学习实验追踪工具(如neptune.ai)可以让数据科学家和机器学习工程师在训练过程中跟踪和绘制梯度。

在应用中查看

neptune.ai中深度神经网络的两个不同层的梯度图

要了解更多关于梯度消失和梯度爆炸以及如何使用梯度图进行检测的信息,我推荐阅读Katherine Li在调试、监控和修复梯度相关问题方面的深入博客。

相关文章

了解梯度裁剪(以及如何解决梯度爆炸问题)

阅读更多

损失景观

我们不仅可以绘制梯度大小,还可以直接可视化损失函数及其梯度。这些可视化通常被称为“损失景观”。

检查损失景观可以帮助数据科学家和机器学习实践者理解优化算法如何将模型的权重和偏差移向损失函数的最小值。

以损失函数局部最小值为中心的区域的绘图,内含梯度向量 | 来源

在上面的示例中,理想情况下的损失景观非常平滑。梯度在表面上只发生微小变化。深度神经网络通常呈现更复杂的损失景观,包含尖峰和低谷。在这些情况下,要可靠地收敛到损失函数的最小值,需要使用像Adam这样强大的优化器。

要为一个PyTorch模型绘制损失景观,可以使用作者提供的代码,这是关于该主题的一篇开创性论文的作者提供的。为了获得初步印象,可以查看基于这个库的交互式损失景观可视化器。这个同样的代码还有TensorFlow版本

Loss landscapes不仅可以揭示深度学习模型的学习过程,而且还可以美观动人。Javier Ideami创建了Loss Landscape 项目,包含了许多有关各种损失景观的艺术视频和交互式动画。

可视化注意力

著名的transformer模型是基于注意力机制而革命性改变了深度学习领域的一些年份。可视化模型关注的输入部分可以为我们提供重要的见解:

  • 解释自我注意力:Transformers利用自我注意机制来衡量输入序列的不同部分的重要性。可视化注意力图可以帮助我们了解模型关注的哪些部分。
  • 诊断错误:当模型关注与输入序列无关的部分时,可能导致预测错误。通过可视化可以检测此类问题。
  • 探索背景信息:Transformer模型擅长从输入序列中捕捉上下文信息。注意力图显示模型如何在输入的元素上分配注意力,揭示了上下文是如何在层间建立和传播的。
  • 理解transformers的工作原理:通过在不同阶段可视化注意力及其在模型中的流动,可以帮助我们理解transformers如何处理其输入。Jacob Gildenblat的Exploring Explainability for Vision Transformers带您从头到尾了解Facebook的Data-efficient Image Transformer (deit-tiny)。
示例注意力图
左侧为原始图像,右侧为加上注意力图的图像。您可以看到模型对狗给予了最多的关注 | 来源:作者

可视化嵌入

嵌入是捕捉语义信息的高维向量。现如今,它们通常由深度学习模型生成。通过可视化嵌入可以帮助我们理解这种复杂的高维数据。

通常情况下,嵌入被投影到二维或三维空间,并以点的形式表示。常用的技术包括主成分分析、t-SNE和UMAP。我在有关机器学习可视化的文章中详细介绍了后两种技术。

因此,嵌入可视化可以通过将嵌入分组成簇来揭示数据的模式、相似性和异常。例如,如果您使用上述方法之一对单词嵌入进行可视化,您会发现语义相关的单词将在投影空间中靠近彼此。

TensorFlow嵌入投影仪可以让每个人都可以交互式地查看像标准Word2vec语料库这样的知名嵌入的可视化。

MNIST的嵌入
MNIST的嵌入在三维空间中表示| 来源:Source

何时使用哪种深度学习可视化

我们可以将深度学习模型的生命周期分为四个不同的阶段:

  • 1 预训练
  • 2 训练过程中
  • 3 后训练
  • 4 推理

每个阶段需要不同的可视化。

预训练深度学习模型可视化

在早期的模型开发过程中,找到适合的模型架构是最重要的任务。

架构可视化可以深入了解模型如何处理信息。为了理解您的深度学习模型的架构,您可以可视化层、连接和它们之间的数据流。

模型训练期间的深度学习模型可视化

在训练阶段,了解训练进展非常重要。为此,训练动态和梯度图是最有帮助的可视化方法。

如果训练没有产生预期的结果,特征可视化或详细检查模型的损失情景可以提供有价值的见解。如果您正在训练基于Transformer的模型,可视化注意力或嵌入可以指引您走上正确的道路。

训练后的深度学习模型可视化

一旦模型完全训练,可视化的主要目标是提供关于模型如何处理数据以产生输出的见解。

激活热图揭示了模型认为输入的哪些部分最重要。特征可视化揭示了模型在训练过程中学到的特征,并帮助我们理解模型在不同层次对输入数据寻找哪些模式。深度特征分解进一步可视化与相同概念相关联的输入空间的区域。

如果您正在使用Transformer,注意力和嵌入的可视化可以帮助您验证模型关注最重要的输入元素,并捕捉语义上有意义的概念。

推理

在推理时,可视化可以帮助监控和调试模型发生错误的情况。

所使用的方法与训练后阶段的方法相同,但目标不同:我们现在关注模型如何处理个别输入实例。

结论

我们介绍了许多可视化深度学习模型的方式。我们首先询问为什么我们希望首先进行可视化,然后通过实例展示了几种技术。最后,我们讨论了不同的深度学习可视化方法在模型生命周期的哪个阶段能提供最有价值的见解。

希望您喜欢本文,并对您当前的深度学习项目中将要探索的可视化有一些想法。我的Colab笔记本中的可视化示例可以作为起点。请随意复制和适应它们。

常见问题

  • 深度学习模型可视化是通过图形表示将复杂神经网络更易理解的方法和技术。深度学习模型由数百万个参数描述的许多层组成。模型可视化将这种复杂性转化为人类可以理解的视觉语言。

    深度学习模型可视化可以简单到绘制曲线以理解模型的性能如何随时间变化,也可以复杂到生成三维热图以理解模型的不同层如何Contrib to its output。

  • 一种常见的可视化深度学习模型架构的方法是绘制图形,说明其组件之间的连接和数据流。

    您可以使用PyTorchViz库为PyTorch模型生成架构可视化。如果您使用的是TensorFlow或Keras,请查看集成的模型绘图工具。

  • 有多种方法可以可视化深度学习模型:

      1. 深度学习模型架构可视化揭示了模型的内部结构以及数据如何在其中流动。
      1. 激活热图特征可视化提供了对深度学习模型“观察”什么以及这些信息在模型内部如何处理的洞察。
      1. 训练动态图梯度图显示深度学习模型学习的过程,并帮助识别导致训练进展停滞的原因。

    许多其他可视化方法也适用于深度学习模型。

  • 要成功地将深度学习模型可视化整合到数据科学工作流中,请遵循以下指南:

      1. 确立明确的目的。通过可视化想要实现什么目标?
      1. 选择合适的可视化技术。通常从抽象的高层可视化开始,然后逐渐深入。
      1. 选择适当的库和工具。某些可视化方法与框架无关,而其他实现则特定于深度学习框架或特定类型的模型。
      1. 迭代和改进。您的第一个可视化可能无法完全满足您或利益相关者的需求。

    更详细的讨论,请查看我的机器学习模型可视化文章中的相关部分。

  • 有几种方法可以可视化TensorFlow模型。要生成架构可视化,可以使用TensorFlow的绘制模块和模型转换模块。

    如果您希望交互地探索TensorFlow模型中的结构和数据流动,可以使用TensorBoard。了解官方教程来学习更多。

  • 您可以使用PyTorchViz来创建PyTorch深度学习模型的架构可视化。这些可视化提供了关于数据流、激活函数以及不同模型组件之间如何相互连接

Leave a Reply

Your email address will not be published. Required fields are marked *