携手创造,共同生长!这是我参加「日新方案 8 月更文挑战」的第3天,点击检查活动概况
概述
“假如你拒绝相信你不完全了解的进程的决议方案,那为什么还要雇人作业呢? 没有人知道人类大脑(具有数千亿个神经元)是怎么做出决议的。” –– 卡西科兹尔科夫
这句话被一些人用来批评最近可解说人工智能的推动。 一开端这听起来像是一个有效的观念,对吧? 但它没有考虑到咱们不想仿制人类的思想。 咱们想建立更好的东西。
机器学习模型正在运用 TB 级的数据进行练习,意图是进步效率,一起做出正确的决议方案,而人类在这方面做得很好。
咱们赋予 ML 模型的责任意味着咱们需求能够使它们尽可能通明,否则咱们将无法信赖它们。
为此,咱们需求可视化 ML 模型。 为了了解这一点,让咱们进入模型可视化的 5 个 W:Why, Who, What, When 和 Where。
机器学习中模型可视化的 5 个 W
1. 为什么要可视化模型?(Why)
尽管咱们现已在概述中对此进行了一些评论,下面咱们进入细节。
可解说性
咱们需求了解模型的决议方案进程。 这个问题的严重程度在神经网络的情况下变得尤为显着。
实际国际的神经网络模型具有数百万个参数和极端的内部杂乱性,因为它们在练习期间运用了许多非线性改换。 将如此杂乱的模型可视化将有助于咱们建立对自动驾驶轿车、协助医师确诊的医学成像模型或对救援方案或安全作业至关重要的卫星图画模型的信赖。
深化发掘:ML 中的可解说性和可审计性:界说、技能和东西
调试和改善
构建机器学习模型是一个充满试验的迭代进程。 找到超参数的最佳组合可能十分具有挑战性。 可视化能够加速这个进程。
反过来,即便模型在此进程中遇到一些问题,这也能够加速整个开发进程。
比较与挑选
从一组表现良好的模型中挑选最佳模型的行为能够简略地简化为可视化模型中供给最高精确率或最低丢失的部分,一起确保模型不会过拟合。
能够规划结构来比较单个模型在一段时间内练习时的不同快照,即在 n1 个 epoch 之后比较模型和在 n2 个 epoch 练习时间之后比较相同模型。
概况请阅读:怎么比较机器学习模型和算法
讲授概念
也许教育是可视化最有用的当地,用于教育新手用户了解机器学习的基本概念。
能够规划交互式渠道,用户能够在其间运用多个数据集并切换参数以调查对模型中间状态和输出的影响。 这能够极大地协助建立关于模型怎么作业的直觉。
2. 谁应该运用可视化?(Who)
数据科学家/机器学习工程师
首要专注于开发、试验和布置模型的人将从可视化中受益最多。
许多从业者现已运用的一些闻名东西包含 TensorBoard、DeepEyes 或 Blocks。一切这些东西都让用户能够扩展操控超参数调优、修剪不必要的层等内容,从而使他们的模型能够取得更好的功能。
模型用户
可视化可能对其他利益相关者有好处,可能有一些技能背景,但首要处理经过 API 运用模型的服务。
示例包含 Activis,这是 Facebook 为他们自己的工程师开发的视觉剖析体系,用于探究内部布置的神经网络。
这种可视化东西关于那些只想运用预练习模型来为自己的任务进行猜测的人来说十分有用。
新手用户
在“为什么”部分,我提到了可视化怎么协助新手了解机器学习是什么,这一点在这儿也是建立的。
这一集体还能够进一步扩展,以包含猎奇的顾客,他们因为担心隐私受到侵略而对运用 ML 驱动的应用程序犹豫不决。
一些根据 Web 的 JavaScript 结构,如 ConvNetJS 和 TensorFlow.js,使开发人员能够为模型创立高度交互的可探究解说。
3. 咱们能够可视化什么?(What)
模型架构
您能够可视化的榜首件事也是首要的作业是模型架构。它告知咱们有多少层,它们的位置顺序等等。
这部分还包含核算图,它界说了模型在 epoch 迭代后怎么练习、测验、保存到磁盘和检查点(checkpoint)。
一切这些都能够协助开发人员更好地了解他们的模型内部发生了什么。
学习参数
在练习的反向传播阶段调整的参数归于这一类。
可视化权重和差错可能有助于了解模型学到了什么。相同,在卷积神经网络中,咱们能够看一下学习到的过滤器,看看模型学习了什么样的图画特征。
模型方针
每个时期核算的诸如丢失、精确率和其他差错度量的汇总统计数据能够表明为模型练习进程中的时间序列。
经过一组数字表明模型可能看起来有点抽象,可是,它们有助于在练习时盯梢模型的发展。
这些方针不仅描绘了单个模型的功能,而且关于一起比较多个模型也至关重要。
4. 什么时候可视化最有价值?(When)
在练习中
在练习时运用可视化是监控和盯梢模型功能的好办法。有许多东西能够精确地处理这个问题(neptune.ai、WandB(weights and biases)等),咱们稍后会评论它们。
例如,Deep View 运用自己的监控方针(例如:可辨别性和密度方针)来可视化模型,这有助于经过在练习阶段前期调查神经元密度来检测过度拟合。
另一个东西 Deep Eyes 能够识别安稳和不安稳的层和神经元。因而,用户能够修剪他们的模型以加速练习速度。
练习完毕后
有诸如属性可视化之类的技能,能够从头生成杰出显现重要区域的图画,以及特征可视化,以生成一个代表同一类的全新图画。它们通常在练习模型后在核算机视觉范畴履行。
一些东西,例如:Embedding Projector,专门用于可视化由经过练习的神经网络发生的 2D 和 3D embeddings。
相同,如前所述,ActiVis、RNNVis、LSTMVis 等东西也在练习后用于可视化乃至比较不同的模型。
5. 可视化能够应用在哪里?(Where)
应用范畴
可视化已在自动驾驶、城市规划、医学成像等范畴大量运用,以增加用户对模型的信赖。
正在开发可视化剖析体系以更多地了解更难的网络类型,如 GAN,这些网络仅出现了几年,但在数据生成方面现已发生了明显的成果。
示例包含 DGMTracker 和 GANViz,它们专注于了解 GAN 的练习动态,以协助模型开发人员更好地练习这些杂乱模型。
研讨
将可视化与研讨相结合,催生了用于模型可解说性和民主化的东西和结构。这个快速开展的范畴的另一个成果是,新作业会立即揭露和开源,而无需等待它在某个会议上“正式”发布。
例如,用于完成神经网络的最受欢迎的库是开源的,而且对改善代码库的一切范畴都有继续的贡献。
到现在为止,咱们现已评论了进行可视化的一切理论方面,现在让咱们来看看最重要的一个。
咱们怎么可视化模型?
当咱们议论可视化模型时,咱们真实评论的是制作要害组成部分的图画,这些组成部分答应模型学习和发生推理。
假如咱们可视化,咱们能够很好地了解内部:
1. 模型结构
模型的规划很好地阐明了数据怎么在其内部活动。可视化它有助于盯梢在哪个阶段应用了哪些操作。
一种盛行的办法,特别是在神经网络中,运用节点链接图,其间神经元显现为节点,边权重显现为链接。因为 Tensorboard 越来越受欢迎,这种办法也正在成为规范。
除此之外,假如您想窥视内部,某些机器学习算法具有内置规则。咱们将在下一节中看一下这方面的比方。
2.模型练习
监视和调查一个又一个时期核算的许多方针(如丢失和精确率)有助于在练习阶段盯梢模型发展。
这能够经过将方针视为时间序列并将它们制作在折线图中来完成,这一步不需求外部协助。
另一种办法是运用专门为此意图规划的杂乱东西,例如:Tensorboard。运用结构的好处是它们十分灵敏、交互式,而且能够节约大量时间。
3.模型推理
推理是从经过练习的模型中得出结论的进程。将成果可视化有助于解说和追溯模型怎么生成其估计值。有几种办法能够做到这一点:
- 可视化实例级调查,在整个网络中对单个数据实例的转换进程进行深化剖析和审查,并最终对其进行最终输出。
- 这能够进一步扩展到在混杂矩阵或热力求的协助下识别和剖析错误分类的实例。这将使咱们能够了解特定实例何时会失利以及它是怎么失利的。
- 这个阶段的可视化是进行交互式试验的好办法——用输入数据或超参数进行试验,看看它怎么影响成果。 Tensorflow playground便是一个很好的比方。
到现在为止,咱们现已了解了进入可视化国际所需的一切先决条件。现在,咱们来检查一些合适这项作业(怎么可视化模型)的东西。
模型可视化的东西和结构
模型结构可视化
1.sklearn/dTreeViz
因为是树状结构,决议方案树是易于解说的模型。 您能够简略地检查分支上的条件并盯梢模型中的猜测成果。
有几种办法能够可视化决议方案树。 咱们从 sklearn 本身供给的那个开端。
进行所需的模块的导入。
import matplotlib.pyplot as plt
from sklearn import tree
from sklearn.datasets import load_iris
如您所见,咱们将在此示例中运用闻名的 iris 数据集。
下一步是界说树并将其拟合到数据中。
iris = load_iris()
X, y = iris.data, iris.target
clf = tree.DecisionTreeClassifier(max_depth=4)
clf = clf.fit(x, y)
现在让咱们制作拟合树。
plt.figure(figsize=(12,8))
tree.plot_tree(clf, filled=True, fontsize=10)
plt.show()
- 咱们的数据集中有 4 个特征,萼片长度、萼片宽度、花瓣长度、花瓣宽度,顺序相同。 根节点根据花瓣长度切割整个种群。
- 这导致叶节点具有分类样本,而其他的在花瓣宽度上再次割裂,因为相关的基尼系数(Gini impurity index)依然很高。
- 这个循环一直继续到咱们取得具有低基尼系数(Gini impurity index)的同质节点,或者抵达 MAX_DEPTH。
- 总而言之,咱们对分类决议方案树模型的架构有了一个相当不错的了解。
另一种可视化决议方案树的办法是运用 dTreeViz 库。 它不仅适用于 scikit-learn 树,而且还支撑 XGBoost、Spark MLlib 和 LightGBM 树。
让咱们看看它与 sklearn 的功能有何不同。
首要,该库需求经过 pip 或 conda 装置,您能够在此处找到阐明。
装置完成后,进行所需的模块的导入了。
from sklearn import tree
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from dtreeviz.trees import *
然后界说、拟合和制作树。
classifier = tree.DecisionTreeClassifier(max_depth=4)
iris = load_iris()
classifier.fit(iris.data, iris.target)
viz = dtreeviz(classifier, iris.data, iris.target,
target_name='variety',
feature_names= iris.feature_names,
class_names=["setosa", "versicolor", "virginica"])
viz.view()
这便是咱们得到的成果。
- 取得的图传达了与 sklearn 十分相似的意义,但它对每个决议方案节点的直方图更具描绘性。
- 您能够经过设置参数 fancy=False 来封闭这些绘图。
- 相同,您还能够凭借该库可视化回归树、特征方针空间热力求和决议方案鸿沟。
2.ANN Visualizer
假如您正在研讨需求可视化的神经网络模型,这可能是一种办法。 让咱们来看看怎么利用它来发挥咱们的优势。
与 dVizTree 相似,这个库也依赖于需求装置的 graphviz。 您能够在此处找到装置阐明。
进行所需的结构的导入。
import keras
from keras.models import Sequential
from keras.layers import Dense
from ann.visualizer.visualize import ann_viz
现在让咱们界说咱们的神经网络。
network = Sequential()
network.add(Dense(units=6, activation='relu',
kernel_initializer='uniform', input_dim=7))
network.add(Dense(units=4, activation='relu',
kernel_initializer='uniform'))
network.add(Dense(units=1, activation='sigmoid',
kernel_initializer='uniform'))
制作网络。
ann_viz(network, view=True, title=’Example ANN’)
输出成果。
- 这很好地概述了咱们界说的神经网络模型的架构。
- 咱们能够用代码核算每一层的神经元数量,看看它是否契合咱们的要求。
- 这个库的唯一缺陷是它只适用于 Keras。
咱们刚刚看到了一个怎么可视化人工神经网络架构的示例,但这并不是这个库所能做的悉数。 咱们还能够运用这个库来可视化卷积神经网络。 让咱们看看怎么。
首要,像平常相同,咱们界说 CNN。
def build_cnn_model():
model=keras.models.Sequential()
model.add(Conv2D(32, (3, 3), padding="same",
input_shape=(32, 32, 3), activation="relu"))
model.add(Conv2D(64, (3, 3), padding="same",
input_shape=(32, 32, 3),activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(10, activation="softmax"))
return model
出于可视化意图,咱们将网络保持在较小的尺寸。 现在让咱们制作它,看看咱们得到了什么。
- 这确实为咱们的 CNN 规划描绘了一幅十分好的画面,一切层都描绘得很好。
- 您只需求修正网络代码即可取得新的可视化作用。
3.Netron
正如其创立者所描绘的,Netron 是一种用于深度学习和机器学习模型的可视化东西,它能够为模型的结构生成具有描绘性的可视化。
它是一个跨渠道的东西,能够在 Mac、Linux 和 Windows 上运转,而且支撑多种结构和格局,如 Keras、TensorFlow、Pytorch、Caffe 等。那咱们怎么运用这个东西呢?
作为一个独立于操作体系的东西,您能够按照这些阐明将其装置在您的机器上,也能够简略地运用咱们将在此处运用的他们的网络应用程序。
让咱们可视化咱们为上一个东西界说的 CNN。 咱们需求做的便是保存模型并以 .h5
格局或任何其他支撑的格局上传保存的文件。 这是咱们得到的:
- 起初,它可能看起来与咱们运用 ANN 可视化器得到的相似,但两者之间有一个很大的区别——Netron 更具交互性。
- 咱们能够根据自己的需求将图表的方向更改为水平或垂直。
- 不仅如此,一切的彩色节点都是可打开的,能够点击检查各个节点的属性,更好地了解。 例如,当咱们单击 max_pooling2d 时,咱们会得到:
- 咱们能够看到,能够从中推断出点击节点的许多属性,如数据类型、步幅巨细、可练习的等,使其比咱们之前的东西好一点。
4.NN-SVG
该东西首要用于以参数办法阐明神经网络 (NN) 并将这些绘图导出为可缩放矢量图形 (SVG),因而得名 NN-SVG。
该东西能够生成三种类型的图形:
- 经典的全衔接神经网络 (FCNN) 图
- 卷积神经网络 (CNN) 图
- 深度神经网络图形,遵循 AlexNet 论文中介绍的风格。
该东西是保管的,因而无需任何装置。 以下是凭借此东西创立的简略神经网络架构示例:
-
咱们在这儿有许多挑选,例如:
- 边际宽度与边际权重成正比,
- 边际不通明度与边际权重成正比,
- 边际色彩与边际权重成正比,
- 层距离,
- 操控结构和权重。
-
一切这些选项都能够让您快速创立直观的插图。
如上所述,咱们还能够运用此东西创立卷积神经网络的规划,如下例所示:
- 咱们在 CNN 中也有各种挑选,就像咱们对神经网络所做的那样。
- 您能够在此处简略地操作架构以取得新的输出,该东西十分具有交互性而且是一个十分好的挑选。
- 该东西在为研讨和出版物创立网络图表方面十分盛行。
5.TensorBoard
没有 TensorFlow 的开源可视化东西包 TensorBoard,任何模型可视化教程都是不完整的。 我把它留到最终,因为它很大。 咱们在这儿只评论它在模型架构中的用处,咱们将在下一节中再次评论它。
因而,首要,TensorBoard 装置能够经过这些指令中的任何一个来完成。
pip install tensorboard
# or
conda install -c conda-forge tensorboard
现在让咱们经过在单元格中运转此指令将 TensorBoard 加载到咱们的notebook中。
%load_ext tensorboard
加载后,咱们有必要创立一个日志目录,TensorBoard 将在其间存储一切日志并从中读取以显现各种可视化作用,之后有必要从头加载 TensorBoard 进行更改。
log_folder=’logs’
%reload_ext tensorboard
现在让咱们进行所需的导入并界说咱们的模型。 在本练习中,咱们将模型拟合到 MNIST 数据集。
import tensorflow as tf
from tensorflow.keras.callbacks import TensorBoard
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
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')])
model.compile(optimizer='sgd',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
现在咱们需求创立一个 TensorBoard 回调,它负责记载一切工作,然后指定咱们创立的日志目录。
callbacks = [TensorBoard(log_dir=log_folder, histogram_freq=1,
write_graph=True, write_images=True,
update_freq='epoch', profile_batch=2)]
最终,咱们将模型拟合到咱们的数据并传入回调,以便今后能够可视化一切内容。
model.fit(X_train, y_train, epochs=5,
validation_split=0.15, callbacks=callbacks)
现在让咱们经过运转以下指令将 TensorBoard 窗口直接加载到咱们的 jupyter notebook 中:
%tensorboard --logdir={log_folder}
接下来,假如咱们导航到图表选项卡,咱们将看到以下输出:
因而,这便是咱们怎么运用 TensorBoard 检查模型结构的办法。
咱们现已探究了可视化模型结构的东西和结构,现在让咱们继续下一部分——练习可视化。
模型练习可视化
1.TensorBoard
在上一节中,咱们将神经网络装置到 MNIST 数据集并检查了“Graphs”选项卡。 可是,事实证明,在 TensorBoard 中还有许多其他选项卡可供探究。
让咱们从“Scalars”开端。
如下图所示,此选项卡处理经过 epoch 核算的丢失和精确率图。
下一个选项卡是“Images”。
此选项卡可视化权重和差错。 每个图画都有一个滑块,咱们能够调整它以显现不一起期的参数。
接下来,“Distributions”选项卡。
它显现了每个时期某个密集层的权重和差错散布。
“Histograms”选项卡与“Distributions”选项卡的功能相似,仅仅凭借直方图。
最风趣的标签是“Projector”。 它能够可视化任何类型的向量表明,无论是词 embeddings 还是图画的 numpy 数组表明。
默认情况下,它运用主成分剖析 (PCA) 将此可视化制作到 3D 空间中,但也能够挑选其他降维办法,如 UMAP 或 T-SNE。 实际上,您能够界说自己的自界说办法。
运用 PCA,它看起来像这样。
咱们现已介绍了一切选项卡,但咱们依然能够运用 TensorBoard 做许多作业,比方可视化练习数据、制作混杂矩阵或超参数调优,但它们超出了本文的范围。
让咱们看看另一个东西。
2.Neptune
Neptune 是一个元数据存储渠道,可免费用于个人项目,并可用作 API 服务。
尽管编码部分能够在任何当地完成,但只需代码衔接到 Neptune,就会在 Neptune 的 UI 中继续进行继续盯梢和日志记载,从而简化项目管理。
让咱们从装置所需的东西开端:
!pip install -q neptune-client
!pip install -q neptune-contrib
咱们将运用与上述示例相似的模型和 MNIST 数据集,因而咱们将不再评论该部分。
要在每个 batch 和 epoch 之后记载方针,让咱们创立一个 NeptuneLogger 回调。 这部分相似于咱们在上一个示例中创立的 TensorBoard 回调。
from tensorflow.keras.callbacks import Callback
class NeptuneLogger(Callback):
def on_batch_end(self, batch, logs={}):
for log_name, log_value in logs. items():
run["batch/{}".format(log_name)].log(log_value)
def on_epoch_end(self, epoch, logs={}):
for log_name, log_value in logs.items():
run["epoch/{}".format(log_name)].log(log_value)
要将咱们的代码衔接到 Neptune 应用程序,咱们需求一个 API 令牌。 要取得该 API 令牌,您需求注册 Neptune 并创立一个项目。 该项意图称号将与参数项目和针对 api_token 的相应 API 令牌相对应。
现在让咱们初始化 API。
run = neptune.init(project=YOUR_PROJECT_NAME, api_token=YOUR_API_TOKEN)
现在让咱们处理咱们想要记载的任何内容。
EPOCHS = 5
BATCH_SIZE = 32
# log params
run["parameters/epochs"] = EPOCHS
run["parameters/batch_size"] = BATCH_SIZE
# log name and append tag
run[ "sys/name"] = "metrics"
run[ "sys/tags"].add("demo")
现在剩下要做的便是将咱们的 NeptuneLogger 作为 keras 回调传递。
history = model.fit(x=x_train, y=y_train,
epochs=EPOCHS, batch_size=BATCH_SIZE,
validation_data=(x_test, y_test),
callbacks=[NeptuneLogger()])
履行完最终一个代码单元后,咱们能够前往 Neptune 应用程序的 UI 以可视化咱们记载的任何内容。
针对 batches 制作的练习 accuracy/loss。
针对 epochs 制作的练习 accuracy/loss。
针对 epochs 制作的验证 accuracy/loss。
除了丢失和精确率等简略方针外,您还能够轻松制作其他内容,例如混杂矩阵或 AUC-ROC 曲线(拜见此处的示例)。
尽管这仅仅一个有限日志记载的演示,但您能够想象在处理触及继续从头练习和更新的项目时,该东西使模型的不同方面可视化是多么容易。
东西比较
假如您自己进行一些试验而且正在寻觅可视化东西,那么 TensorBoard 是一个不错的挑选。 Neptune 更合适那些正在寻觅一种杂乱东西的研讨人员,这些东西能够让他们更深化地研讨试验进程。 它还供给团队协作功能。概况请检查:Neptune 和 TensorBoard 的具体比较。
3.Weights & Biases
与 Neptune 相同,该东西还有助于盯梢、监控和可视化 ML 模型和项目。
首要,在他们的网站上注册,然后经过以下指令装置和登录:
pip install wandb
wandb login
输入 API 密钥后,您应该已准备就绪。 现在让咱们为咱们的 Keras 模型进行所需的导入。
import wandb
from wandb.keras import WandbCallback
让咱们初始化 wandb 并开端咱们的项目。
wandb.init(project=’blog-demo’)
现在咱们需求做的便是练习咱们现在运用的模型,并将 WandbCallback 传递给日志方针。
model.fit(X_train, y_train, validation_data=(X_test, y_test),
callbacks=[WandbCallback()], epochs=5)
现在咱们能够前往 UI 并检查已记载的内容。
这仅仅看看它可能是什么样子。 可是,就像 Neptune 相同,它能够扩展到制作许多不同的事物,以及根据这些记载的方针比较不同的模型。
4.TensorWatch
TensorWatch 是 Microsoft Research 供给的数据科学调试和可视化东西。 大多数当时可用的东西都遵循“所见即所得”(WYSIWYL)办法,该办法运用许多预界说的可视化来表明成果。
这可能会导致不断改变的模型出现问题。 TensorWatch 经过将一切内容视为流来处理这个问题。 对其作业原理的简略描绘是:
- 当在 TensorWatch 流中写入内容时,这些值会被序列化并发送到 TCP/IP 套接字,包含您指定的文件。
- 在 Jupyter Notebook 中,之前记载的值将从文件中加载,然后 TCP-IP 套接字将监听任何其他未来值。
- 然后可视化器监听流并在值抵达时出现它们。
运用 TensorWatch 的唯一缺陷是现在它只支撑 PyTorch 结构。
让咱们开端装置它。
pip install tensorwatch
接下来,咱们需求装置一个名为 regim 的 Python 包,它答应咱们运用 PyTorch 模型文件并运用少数代码在指定的数据集上运转练习和测验 epoch。
git clone https://github.com/sytelus/regim.git
cd regim
pip install -e .
然后,从装置 regim 的文件夹中运转您的练习脚本。
python mnist_main.py
运用 regim 包,咱们能够运用 train 数据集在 epoch 上练习模型,保护少数方针,并对工作进行回调。 在每个 epoch 之后,它能够在测验数据集上运转到现在为止练习过的模型,并在其上保护方针。
它为练习和测验周期保护独自的调查者,因而咱们能够别离检查每个调查者的方针。 port 参数指定其套接字的基线端口的偏移量。
train = tw.WatcherClient(port=0)
test = tw.WatcherClient(port=1)
现在让咱们制作几个方针,例如:练习丢失、练习精确率、测验丢失和测验精确率。
loss_stream = train.create_stream(expr='lambda d:
(d.metrics.epochf,
d.metrics.batch_loss)', event_name='batch')
loss_plot = tw.Visualizer(loss_stream, vis_type='line',
xtitle='Epoch', ytitle='Train Loss')
acc_stream = train.create_stream(expr='lambda d:
(d.metrics.epochf, d.metrics.batch_accuracy)', event_name='batch')
acc_plot = tw.Visualizer(acc_stream, vis_type='line',
host=loss_plot, xtitle='Epoch', ytitle='Train Accuracy', yrange=(0,))
test loss_stream = test.create_stream(expr='lambda d:
(d.metrics.epochf, d.metrics.batch_loss)', event_name='batch')
test_loss_plot = tw.Visualizer(test_loss_stream, vis_type='line',
host=loss_plot, xtitle= 'Epoch', ytitle='Test Loss', yrange=(0,))
test_acc_stream = test.create_stream(expr='lambda d:
(d.metrics.epochf,
d.metrics.batch_accuracy)', event_name='batch')
test_acc_plot = tw.Visualizer(test_acc_stream, vis type='line',
host=loss_plot, xtitle='Epoch', ytitle='Test Accuracy',yrange=(0,))
test_acc_plot.show()
这是咱们得到的:
相同,咱们也能够经过以下办法制作每一层的权重梯度平均值:
grads_stream = train.create_stream(expr='lambda
d:grads_abs_mean(d.model)',
event_name='batch', throttle=1)
grads_plot = tw.Visualizer(grads_stream, vis_type='line',
title="Weight Gradients",
clear_after_each=True,
xtitle="Layer",
ytitle="Abs Mean Gradient', history_len=20)
grads_plot.show()
下面是突变的样子。 当然这些仅仅咱们能够用这个东西做的一小部分作业,还有更多需求探究。 因为该东西仍在开发中,一旦它开端支撑更广泛的结构,咱们肯定会看到更多。
5.Neural Network Playground
这个东西是一个荣誉奖,因为它更多地用于学习和教育非专家用户关于神经网络的内部机制。
它是 Google 供给的根据 Tensorflow 的开源东西。 您能够直接在浏览器中模仿小型神经网络,并在运用它们时调查成果。
它看起来像这样。
- 您能够在分类和回归之间切换问题类型,并修正网络和问题的每个可能方面,从激活函数到许多隐藏层,从运用纯数据集到嘈杂的数据集。
- 设置完一切内容后,只需点击播放按钮即可开端练习,之后您能够调查构成的决议方案鸿沟(模型怎么别离不同的类)。
- 模型练习看起来很风趣,并在这个黑盒背面给你直观。
咱们现已介绍了相当多的可视化练习东西,让咱们继续进行可视化的最终一部分。
模型推理可视化
这首要触及解说模型生成的猜测,并首要搜集关于怎么以及为什么抵达这些猜测的想法。
我在此博客的另一篇文章中对此进行了广泛评论。 它涵盖了相当多的东西,能够成为 MLOps 东西库的一个十分好的弥补。
总结
咱们在本文中涵盖了许多内容,从为什么咱们需求可视化模型开端,到运用许多能够协助咱们创立可视化的东西取得实践经验。
我期望这篇文章能协助您更好地了解可视化,下次当你陷入了一个问题(可视化是正确答案)时,您将利用这儿评论的东西和知识。
未来开展方向
这儿评论的东西和结构仅仅当时最盛行的。 研讨的开展速度如此之快,您应该时间关注新东西。
除此之外,请一直活跃寻觅新的可视化用户场景,其间展示模型的图片或插图可能会处理手头的问题。
原文链接:Visualizing Machine Learning Models: Guide and Tools