深度学习-网络模型的可视化工具总结

news2024/11/24 5:24:11

强烈感谢公众号:尤而小屋

提供的文章思路

神经网络可视化难点在哪里?

神经网络可视化的难点在于以下几个方面:

  1. 复杂性:神经网络的结构通常非常复杂,包含大量的神经元和连接。对于大规模网络,准确地可视化每个神经元和连接的信息是一项巨大的挑战。

  2. 维度灾难:神经网络的输入和隐藏层通常是高维的,难以直接在二维屏幕上展示。降低维度的同时又要保留关键信息是一个挑战。

  3. 动态性:神经网络是动态的系统,在训练和推理过程中不断更新和调整权重和激活状态。捕捉网络的动态行为并实时更新可视化是一项复杂的任务。

  4. 解释性:神经网络通常被视为黑盒模型,其内部决策和特征表示的解释性有限。可视化需要解释网络学到的特征和决策过程,使其对人类更具可理解性。

  5. 可扩展性:对于大规模的神经网络,如深度卷积神经网络 (CNN) 和循环神经网络 (RNN),可视化需要能够处理大量的层和参数,并具备可扩展性和效率。

  6. 可视化方法选择:存在多种不同的可视化方法和技术,选择合适的方法来呈现神经网络的结构和内部信息是一个挑战。

神经网络可视化方法

        神经网络可视化是一种将神经网络的结构和运行过程以图形化方式呈现的技术。它可以帮助我们更好地理解神经网络的内部工作原理和特征提取过程。以下是几种常见的神经网络可视化方法:

  1. 可视化网络结构:可以使用工具如TensorBoard、Graphviz等将神经网络的结构以图形化方式展示出来。这种可视化方法能够清晰地展示网络的层级关系、连接方式以及参数数量等。

  2. 可视化神经元激活:通过可视化神经元的激活情况,可以观察神经网络在不同层次上对输入数据进行特征提取的过程。一种常见的方法是使用预训练模型,输入一张图像,然后可视化中间层的神经元激活图,从而了解网络对不同特征的敏感性。

  3. 可视化卷积核:对于卷积神经网络(CNN),可视化卷积核可以帮助我们理解网络是如何学习特定的特征和模式的。可以将卷积核可视化为图像,显示出每个卷积核对应的特定特征。

  4. 可视化梯度:可视化神经网络中的梯度可以帮助我们理解网络在反向传播过程中的信息流动情况,以及各层对梯度的贡献程度。通过可视化梯度,可以判断网络是否出现梯度消失或梯度爆炸的情况。

  5. 可视化网络输出:将网络的输出结果可视化可以帮助我们理解网络对不同输入数据的预测或分类结果。例如,在图像分类任务中,可以将网络对输入图像的分类概率可视化为柱状图或热力图,从而了解网络对不同类别的置信度等

本文给大家介绍12个神经网络可视化解释的利器。

注:图片均来自网络

1. draw_convnet

   draw_convnet是一个用于绘制卷积神经网络(Convolutional Neural Network,CNN)结构的Python库。它可以帮助我们以可视化的方式呈现CNN的层级结构、参数数量和数据流动情况,从而更好地理解和分析网络模型。

   draw_convnet库提供了一个简单的API,使我们能够通过指定层级、特征图大小、卷积核大小等参数来创建CNN的可视化图。以下是使用draw_convnet的简单示例:

from draw_convnet import draw_convnet

# 定义CNN结构
convnet_layers = [
    ('conv2d', {'shape': [32, 32, 3], 'kernel': [5, 5], 'pad': 'same', 'activ': 'relu'}),
    ('pool', {'shape': [32, 32, 3], 'kernel': [2, 2], 'stride': 2}),
    ('conv2d', {'shape': [16, 16, 32], 'kernel': [5, 5], 'pad': 'valid', 'activ': 'relu'}),
    ('pool', {'shape': [16, 16, 32], 'kernel': [2, 2], 'stride': 2}),
    ('flatten', {}),
    ('dense', {'units': 256, 'activ': 'relu'}),
    ('dense', {'units': 10, 'activ': 'softmax'})
]

# 绘制CNN结构图
draw_convnet(convnet_layers, 'convnet.png')

        在上面的示例中,我们首先定义了一个CNN的层级结构,其中包含了卷积层、池化层、全连接层等。然后,我们使用draw_convnet函数来创建CNN的可视化图,并将其保存为名为convnet.png的图像文件。

        通过使用draw_convnet库,我们可以直观地了解CNN的结构和参数设置,以及数据在网络中的流动方式。这有助于我们更好地理解和调试CNN模型,并对其进行优化和改进。

  • https://github.com/gwding/draw_convnet

2. NNSVG

        NNSVG(Neural Network SVG)是一个用于生成神经网络结构的可伸缩矢量图(Scalable Vector Graphics)的Python库。它可以将神经网络的结构以可视化的方式呈现,包括层级结构、连接关系和节点信息,从而帮助我们更好地理解和分析神经网络模型。

        NNSVG的主要功能是根据给定的神经网络参数,生成相应的SVG图形文件。这使得生成的图像可以无损放大或缩小,而不会导致图像质量的损失。这对于展示大型复杂的神经网络结构非常有用,因为我们可以根据需要自由调整图像的大小,以便查看细节或全局结构。

        使用NNSVG非常简单。以下是一个使用NNSVG生成神经网络结构的示例:

import nnsvg

# 定义神经网络结构
network = nnsvg.Network()
input_layer = nnsvg.Layer(784, name='Input')
hidden_layer1 = nnsvg.Layer(256, name='Hidden 1', activation='relu')
hidden_layer2 = nnsvg.Layer(128, name='Hidden 2', activation='relu')
output_layer = nnsvg.Layer(10, name='Output', activation='softmax')

# 建立网络层级关系
network.add_layer(input_layer)
network.add_layer(hidden_layer1)
network.add_layer(hidden_layer2)
network.add_layer(output_layer)
network.connect_layers()

# 生成SVG图像文件
network.save('network.svg')

        在上面的示例中,我们首先创建了一个神经网络结构,包括输入层、隐藏层和输出层,并指定了它们的节点数量和激活函数。然后,我们使用add_layer方法将层级添加到网络中,并使用connect_layers方法建立层级之间的连接关系。最后,我们使用save方法将生成的SVG图像保存为名为network.svg的文件。

        通过使用NNSVG,我们可以轻松地生成漂亮且可伸缩的神经网络结构图,以便进行展示、文档编写或学术研究等用途。这使得我们能够更好地传达和理解神经网络模型的结构和架构。

  • http://alexlenail.me/NN-SVG/LeNet.html

3. PlotNeuralNet

          PlotNeuralNet是一个用于可视化神经网络结构的Python库。它提供了简单易用的功能,可以以可视化的方式绘制神经网络的连接关系和节点信息,帮助我们更好地理解和展示神经网络模型。

        使用PlotNeuralNet,我们可以通过简洁的代码生成高质量的神经网络结构图。以下是一个使用PlotNeuralNet生成神经网络结构图的示例:

from plotneuralnet import PlotNeuralNet

# 创建一个PlotNeuralNet实例
nn = PlotNeuralNet()

# 定义神经网络结构
nn.add_input_layer(784)
nn.add_hidden_layer(256, activation='relu')
nn.add_hidden_layer(128, activation='relu')
nn.add_output_layer(10, activation='softmax')

# 生成神经网络结构图
nn.build()

# 绘制神经网络结构图
nn.save_fig("neural_network.png")

        在上面的示例中,我们首先导入PlotNeuralNet库并创建一个PlotNeuralNet实例。然后,我们使用add_input_layeradd_hidden_layeradd_output_layer方法定义了神经网络的各个层级,并指定了激活函数。接下来,我们使用build方法生成神经网络的结构图,并使用save_fig方法将图像保存为名为neural_network.png的文件。

        使用PlotNeuralNet可以轻松地创建神经网络结构图,图形清晰美观。它提供了一些自定义选项,如激活函数的选择和节点样式的修改,以便满足不同的需求。无论是在学术研究中展示模型结构,还是在技术报告中呈现神经网络架构,PlotNeuralNet都是一个方便而实用的工具。

  • https://github.com/HarisIqbal88/PlotNeuralNet

 

4. Tensorboard

        TensorBoard是一个用于可视化和监控深度学习模型训练过程的工具,由TensorFlow提供支持。它提供了一个直观的Web界面,可以帮助我们可视化模型的架构、训练过程中的损失和指标变化、模型参数的分布情况以及训练样本的可视化等。

TensorBoard的主要功能包括:

  1. 可视化模型图: TensorBoard可以绘制和展示神经网络模型的计算图,帮助我们理解模型的结构、层级关系和参数连接情况。这有助于调试和优化模型的架构。

  2. 实时损失和指标曲线: 在训练过程中,TensorBoard可以实时显示损失函数、准确率、验证指标等的变化曲线图。这使得我们可以方便地监控模型的训练进度,并对训练过程进行调整和优化。

  3. 模型参数分布可视化: TensorBoard可以可视化模型参数的分布情况,帮助我们了解模型参数的取值范围和分布情况。这对于调试模型和发现潜在问题非常有帮助。

  4. 特征可视化: TensorBoard提供了一些特征可视化工具,如嵌入空间的投影、图像生成等,可以帮助我们理解模型对输入数据的表示和学习过程。

  5. 训练样本可视化: TensorBoard可以显示训练数据的可视化,包括图像、音频、文本等。这有助于我们检查和验证数据预处理的效果。

        使用TensorBoard,我们只需要将训练过程中的日志数据保存到指定的目录,并在终端运行TensorBoard命令,就可以在浏览器中访问TensorBoard的Web界面,查看和分析训练过程的可视化结果。

        总的来说,TensorBoard是一个非常强大和实用的工具,能够帮助我们更好地理解、调试和优化深度学习模型。无论是在研究中可视化模型,还是在工程中监控训练过程,TensorBoard都是一个非常有用的辅助工具。

  • https://www.tensorflow.org/tensorboard/graphs

 

图片

5. Caffe

Caffe也提供了可视化神经网络的功能,让用户可以更好地理解和分析模型的结构。

Caffe的可视化神经网络主要通过两个工具实现:NetDraw和NetSurgery。

  1. NetDraw: NetDraw是Caffe的一个可视化工具,可以绘制和展示神经网络模型的架构图。通过NetDraw,用户可以直观地查看模型的层级结构、层之间的连接方式以及层的属性。NetDraw生成的网络图形可以帮助用户理解模型的组织方式和数据流动路径。

  2. NetSurgery: NetSurgery是Caffe的另一个工具,可以在训练之前或之后对已有的模型进行修改和调整。通过NetSurgery,用户可以直接编辑和修改网络模型的参数、层的属性和连接关系。这使得用户可以根据自己的需求对模型进行定制和优化。

  • https://github.com/BVLC/caffe/blob/master/python/caffe/draw.py

 

6.Matlab

        Matlab是一种流行的科学计算和数据分析工具,它也提供了用于可视化神经网络的功能。在Matlab中,可以使用Neural Network Toolbox来构建、训练和可视化神经网络模型。

以下是Matlab中可视化神经网络的一些常用功能和工具:

  1. neuralnetworkgui: neuralnetworkgui是Matlab中的一个交互式图形界面工具,可以用于可视化和编辑神经网络。通过neuralnetworkgui,用户可以直观地构建神经网络模型,设置网络的层级结构、连接方式和参数等。该工具还提供了可视化的训练进度和性能指标,方便用户进行模型的调试和优化。

  2. view: 在Matlab中,可以使用view函数来可视化已构建的神经网络模型。通过view函数,用户可以查看网络的层级结构、连接方式和权重等信息。该函数将网络表示为一个图形,方便用户理解和分析模型的组织方式和数据流动路径。

  3. plotperf: plotperf函数可以用于绘制训练过程中的性能指标曲线,如损失函数曲线、准确率曲线等。通过可视化这些曲线,用户可以直观地了解模型在训练过程中的性能变化情况,以便进行模型的评估和调整。

  4. gensim: gensim是Matlab中的一个函数,用于生成神经网络的仿真图。该函数可以根据给定的网络结构和参数生成网络的仿真图像,展示神经元之间的连接和激活情况。这有助于用户更好地理解和分析神经网络的工作原理。

  • http://www.mathworks.com/help/nnet/ref/view.html

 

7.Keras.js

        Keras.js是一个用于在Web浏览器中运行Keras模型的开源JavaScript库。它提供了一个简单易用的界面,用于加载和执行经过训练的Keras模型,并在Web浏览器中进行预测。

        Keras.js还提供了一些可视化神经网络的功能,以帮助用户更好地理解和分析模型的结构。以下是Keras.js中常用的可视化功能:

  1. 模型摘要(Model Summary): 使用Keras.js,可以轻松地生成神经网络模型的摘要。摘要提供了模型的层级结构、层级名称、输出形状和可训练参数数量等信息。这有助于用户快速了解模型的组成和规模。

  2. 层级可视化(Layer Visualization): Keras.js提供了一种方式来可视化神经网络的每个层级。通过该功能,用户可以查看每个层级的名称、类型和输出形状。这有助于用户了解神经网络模型中不同层级的作用和信息流动。

  3. 权重可视化(Weight Visualization): Keras.js允许用户可视化神经网络模型中各层级的权重。权重可视化提供了权重矩阵的热图或其他可视化形式,显示了神经元之间的连接强度和权重分布。这有助于用户理解模型中的重要特征和连接模式。

  4. 激活可视化(Activation Visualization): 使用Keras.js,用户可以可视化神经网络中的激活函数的输出。这可以通过绘制激活函数的热图或可视化每个层级的激活值来实现。激活可视化有助于用户了解模型在不同层级上的信息流动和特征提取过程。

通过以上可视化功能,Keras.js使用户能够直观地了解和分析神经网络模型的结构、权重分布和激活情况。这有助于用户对模型进行调试、优化和解释,并提供了对模型工作原理的更深入理解。

  • https://transcranial.github.io/keras-js/#/inception-v3

 

8. DotNet

在 .NET 中可视化神经网络可以借助各种工具和库来实现。以下是几个常用的方式:

  1. TensorFlow.NET: TensorFlow.NET 是一个 .NET 接口到 TensorFlow 的库。它提供了在 .NET 中构建和训练神经网络的功能,并且支持可视化神经网络结构。TensorFlow.NET 可以通过导出模型的图形定义文件(GraphDef)来生成神经网络结构的可视化图表,然后可以使用其他工具(如 TensorBoard)加载和查看这些图表。

  2. Accord.NET: Accord.NET 是一个功能强大的机器学习框架,提供了各种机器学习和图像处理的算法和工具。它包含了用于构建和训练神经网络的模块,并且支持将神经网络结构可视化为图形。Accord.NET 提供了一个名为 NetworkGraph 的类,可以将神经网络转换为 Graphviz DOT 格式的图形定义,然后使用 Graphviz 工具来生成可视化图表。

  3. Neural Network Designer: Neural Network Designer 是一个专为 .NET 平台开发的神经网络可视化工具。它提供了一个可视化界面,允许用户直观地构建和配置神经网络结构,并提供实时的可视化效果。Neural Network Designer 支持多种常见的神经网络层和激活函数,并且可以生成可嵌入到 .NET 应用程序中的可执行代码。

  • https://github.com/martisak/dotnets

 

9. Graphviz

        Graphviz 是一个开源的图形可视化工具包,可以用于可视化各种图形结构,包括神经网络。它提供了一组用于描述图形的语言和工具,可以将图形结构定义转换为图像或矢量图的形式。

        在可视化神经网络方面,Graphviz 提供了多种布局算法和绘图选项,可以根据用户的需求生成美观且易于理解的图表。使用 Graphviz 可以帮助我们直观地了解神经网络的结构、层次关系以及信息流动。

以下是使用 Graphviz 可视化神经网络的基本步骤:

  1. 安装 Graphviz: 首先,需要在计算机上安装 Graphviz 软件包。可以从 Graphviz 的官方网站(https://graphviz.org/)下载适用于您操作系统的版本,并按照安装指南进行安装。

  2. 定义神经网络结构: 在代码中定义神经网络的结构,包括各个层的连接关系和激活函数。这可以使用各种深度学习框架(如 TensorFlow、PyTorch、Keras 等)来完成。

  3. 生成 Graphviz 图形定义: 将神经网络结构转换为 Graphviz 图形定义,这可以使用各种库或自定义代码来完成。例如,可以使用 Python 中的 pygraphviz 库或 graphviz 库来生成 Graphviz 的 DOT 格式的图形定义。

  4. 绘制神经网络图形: 使用 Graphviz 提供的命令行工具或编程接口,将图形定义文件转换为实际的图像或矢量图形。可以选择不同的布局算法和绘图选项,以获得最合适的图形呈现效果。

  5. 查看和保存图形: 生成的神经网络图形可以在图形工具(如图片查看器)中查看,或者以图像文件(如 PNG、SVG)的形式保存到磁盘上。

  • http://www.graphviz.org/

 

10. ConX

        ConX(Cognitive Architecture for Machine Learning)是一个基于Python的开源深度学习框架,用于构建、训练和评估神经网络模型。它的设计旨在简化深度学习的过程,并提供一种直观的方式来定义、可视化和调试神经网络。

以下是 ConX 的一些特点和功能:

  1. 简单易用: ConX 提供了简洁的 API 和直观的命令行界面,使用户能够快速开始构建神经网络模型。它采用了类似于Keras的高级接口,使得模型的定义和训练过程更加直观和简单。

  2. 多种网络类型: ConX 支持多种类型的神经网络,包括全连接网络、卷积神经网络(CNN)、循环神经网络(RNN)等。用户可以根据应用需求选择合适的网络类型。

  3. 可视化工具: ConX 提供了内置的可视化工具,可以帮助用户直观地了解模型的结构、参数和训练过程。它支持绘制网络拓扑图、绘制训练曲线、可视化权重和激活图等功能。

  4. 模型调试和优化: ConX 具有丰富的调试和优化功能,可以帮助用户分析和解决模型中的问题。它提供了可视化的网络输出和中间层输出,帮助用户理解模型的决策过程。

  5. 集成学习算法: ConX 支持集成学习算法,如 dropout 和集成平均等,可以提高模型的泛化能力和鲁棒性。

  6. 模型保存和加载: ConX 提供了方便的模型保存和加载功能,用户可以将训练好的模型保存到磁盘上,并在需要时重新加载进行预测或继续训练。

  • https://conx.readthedocs.io/en/latest/index.html

 

11. ENNUI

ENNUI 提供了以下主要功能和特点:

  1. 可视化神经网络结构:ENNUI 可以将神经网络的结构以图形化的方式呈现,展示各个层、神经元和连接之间的关系。这有助于用户更好地理解网络的整体架构。

  2. 层内神经元分布:ENNUI 可以展示每个层内神经元的分布情况,包括激活值、权重和偏差等信息。这使用户可以观察不同神经元之间的差异和分布情况。

  3. 特征可视化:ENNUI 提供了特征可视化的功能,可以显示网络中不同特征的激活图像。这对于理解网络学习到的特征和模式非常有帮助。

  4. 神经元响应可视化:用户可以通过 ENNUI 可视化神经元对输入数据的响应情况。这使用户可以观察到不同神经元对不同输入的激活情况,从而了解网络是如何对输入进行处理和提取特征的。

  5. 梯度可视化:ENNUI 可以可视化神经网络中梯度的流动情况。这对于理解梯度在网络中的传播和反向传播过程非常有帮助,有助于调试和优化网络的训练过程。

  • https://math.mit.edu/ennui/

 

12. Neataptic

        Neataptic 是一个用于构建和训练神经网络的 JavaScript 库。它是一个轻量级、灵活且易于使用的库,旨在帮助开发人员实现各种类型的神经网络模型。

以下是 Neataptic 的一些特点和功能:

  1. 神经网络类型:Neataptic 支持多种类型的神经网络,包括前馈神经网络 (Feedforward Neural Networks)、循环神经网络 (Recurrent Neural Networks) 和长短期记忆网络 (Long Short-Term Memory Networks) 等。

  2. 网络拓扑:您可以使用 Neataptic 定义神经网络的拓扑结构,包括神经元的层数、每层的神经元数量、连接方式等。

  3. 神经元模型:Neataptic 提供了一系列常用的神经元模型,例如线性神经元、Sigmoid 神经元、ReLU 神经元等。您可以根据需要选择适合的激活函数。

  4. 网络训练:使用 Neataptic,您可以对神经网络进行训练,以适应特定的任务。您可以定义损失函数、选择优化器,并通过反向传播算法更新网络参数。

  5. 遗传算法:Neataptic 还提供了遗传算法的支持,以帮助进行神经网络的进化和优化。您可以定义适应度函数,并使用遗传算法自动搜索最佳网络结构和参数。

  6. 可视化工具:Neataptic 提供了一些可视化工具,可以帮助您理解和调试神经网络。您可以可视化网络拓扑、训练过程中的损失曲线等。

  • https://wagenaartje.github.io/neataptic/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/667438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)

前言:本文为手把手教学飞控核心知识点之一的姿态解算——MPU6050 姿态解算(飞控专栏第2篇)。项目中飞行器使用 MPU6050 传感器对飞行器的姿态进行解算(四元数方法),搭配设计的卡尔曼滤波器与一阶低通滤波器…

五大自动化测试的Python框架详解

目录 1.Robot Framework 2.Pytest 3.UnitTest/PyUnit 4.Behave 5.Lettuce 结语 在此为大家准备了五种Python类型的自动化测试框架,以供比较和讨论。 1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-…

【序列dp】最长上升子序列(二)

文章目录 最长上升子序列-序列dp1016 最大上升子序列和1010. 拦截导弹187. 导弹防御系统272.最长公共上升子序列n^3 TLE优化 最长上升子序列-序列dp 什么是序列相关的 DP ?序列相关 DP,顾名思义,就是将动态规划算法用于数组或者字符串上&…

前端项目工程化搭建

ESLint 在开发过程中,需要遵循一些规范,可以使用下面的工具来配置不同项目需要遵循的规范,来帮助我们检查错误、约束开发过程。 ESLint 配置 使用 Taro CLI 创建的项目,会自动生成 .eslintrc 文件。只需要在这个文件的 rules 配…

web渗透

首先这道题目与ctf还是有点关系的,首先看一下题目: 通过浏览器访问http://靶机服务器IP/1,对该页面进行渗透测试, 找到flag格式:flag{Xxxx123},括号中的内容作为flag值并提交;&…

关于深度学习训练的工程技巧

前置基础 不同精度数据类型的动态范围 FP16的动态范围(6x10-8 ~ 65504) FP32的动态范围(1.4x10-45 ~ 1.7x1038) 可以看出Fp32的动态范围远大于fp16; 其中BF16的取值范围: BF16(BFloat16)的取值范围也是按照IEEE 754标准定义的,…

破解时间序列:移动平均法的综合指南

目录 前言一、时间序列介绍1-1、时间序列定义1-2、时间序列特性1-3、时间序列作用 二、统计学方法2-1、移动平均法介绍2-1-1、基本原理、计算过程2-1-2、移动平均法分类2-1-3、简单移动平均法2-1-4、加权移动平均法2-1-5、指数移动平均法(Exponential Moving Averag…

C# 反射(Reflection)总结

目录 什么是反射? 为什么使用反射? 反射机制的优缺点 如何使用反射? 一,Type访问元数据 获取/修改类中公有成员(属性PropertyI和字段Field等) 调用类中的公有构造函数Constructor 调用类中的公有方…

【软件工程】软件工程期末考试复习题

填空题(每空1分,共25分) 软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试和运行和维护。基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。可行性研究&…

【UE 从零开始制作坦克】10-炮弹溅射伤害

目录 一、解决炮弹穿过坦克炮塔问题 二、炮弹溅射伤害 效果 一、解决炮弹穿过坦克炮塔问题 打开“PHYS_West_Tank_M1A1Abrams”这个物理资产 造成这种现象的原因是,炮弹只会与如下紫色区域产生碰撞事件 选中坦克炮塔的骨骼 添加盒体外形 缩放盒体外形使其包裹住…

数据库原理之数据库事物

文章目录 一、事物介绍1.1 事物的目的是保证数据的一致性1.2 事物的ACID A、I、D是为了实现 C1.3 什么是本地事物(Local Transactions) 二、数据库系统如何实现ACID2.1 影响深远的ARIES理论2.2 本地事物如何实现原子性和持久性 A、D2.2.1 实现原子性和持久性的Commit Logging方…

基于高精度三维机器视觉的汽车曲轴无序抓取系统应用

Part.1 行业背景 汽车产业的高速发展,对零部件自动化生产提出了更高要求。随着汽车销量的水涨船高,传统的手工生产模式已经难以满足大批量生产的需求,自动化生产是必然趋势。 曲轴是汽车发动机的关键组件之一,生产过程复杂&#…

【MySQL】如何速通MySQL(4)

📌前言:本篇博客介绍如何速通MySQL的第四篇,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接…

Linux(centos )防火墙常见操作

1、查看防火墙当前状态 systemctl status firewalld 2、开启防火墙 systemctl start firewalld 3、关闭防火墙 systemctl stop firewalld.service 4、如果报错:-bash: firewall-cmd: command not found,可能是没有安装 firewall。安装命令&#xff1a…

处理错误 Xcode 编译找不到文件 libarclite_iphonesimulator.a

处理错误 Xcode 编译找不到文件 libarclite_iphonesimulator.a 视频 https://youtu.be/ZBMFs2PwkB4 错误描述 Error (Xcode): File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.aEr…

双非硕士-美国联培-马普所博士后-985系主任的逆袭之路

本科和硕士都是双非学校,博士期间曾有美国联合培养经历,毕业后到德国马普所从事博士后研究。现任985高校特聘教授、博/硕士生导师,系主任。知识人网小编特刊介绍李志明博士的逆袭之路。 随着国内就业压力的增大,高校招聘教师也呈现…

element 设置 table中的按钮权限

子组件 <template><!-- 二次封装表格&#xff0c; 仅支持单选 :style"{ height: height }"--><div class"self_table"><el-table:data"tableData"style"width: 100%"v-loading"loading"stripeselecti…

[游戏开发]Unity随机网格中空位置_二叉树

[目录] 0. 前言1. 简单随机2. 可用位置内随机3. 二叉树权重随机&#xff08;1&#xff09;分区域随机&#xff08;2&#xff09;设置权重均衡概率&#xff08;3&#xff09;二叉树缓存权重&#xff08;4&#xff09;利用二叉树随机&#xff08;5&#xff09;优缺点 4. 测试对比…

简要介绍 | Backbone与Baseline的区别

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对Backbone和Baseline进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 Backbone与Baseline的区别&#xff1a;从神经网络到性能基准 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来…

大厂测试员是如何编写测试用例呢?

一、测试用例是软件测试的核心 软件测试的重要性是毋庸置疑的。但如何以最少的人力、资源投入&#xff0c;在最短的时间内完成测试&#xff0c;发现软件系统的缺陷&#xff0c;保证软件的优良品质&#xff0c;则是软件公司探索和追求的目标。每个软件产品或软件开发项目都需要…