常州网站建设方案外包,五莲县网站建设,网络营销的优化和推广方式,做一手房的网站深度学习是机器学习的一个子领域#xff0c;灵感来源于人脑的神经网络。深度学习通过多层神经网络自动提取数据中的高级特征#xff0c;能够处理复杂和大量的数据#xff0c;尤其在图像、语音、自然语言处理等任务中表现出色。常见的深度学习模型#xff1a;
卷积神经网络… 深度学习是机器学习的一个子领域灵感来源于人脑的神经网络。深度学习通过多层神经网络自动提取数据中的高级特征能够处理复杂和大量的数据尤其在图像、语音、自然语言处理等任务中表现出色。常见的深度学习模型
卷积神经网络CNN专注于处理图像数据的深度学习模型广泛应用于计算机视觉任务如图像分类、目标检测等。 卷积神经网络模型
循环神经网络RNN和长短期记忆网络LSTM用于处理序列数据如文本、语音擅长学习时间序列中的依赖关系。 RNN 循环神经网络模型
Transformer通过自注意力机制和并行计算在自然语言处理等任务中取得了显著突破如 BERT、GPT 等模型。 transformer 模型框架
学习人工智能技术依然是当下的热点无论是谁都需要学习人工智能技术就像当年的电脑时代一样每个人都需要学习了解人工智能技术。但是学习技术的门槛比较高特别是大模型的代码让人看起来简直就是天书一样本来代码就长还堆叠了 N 个模型框架且每个输入输出的数据形状简直让人头疼。 好在Netron把大模型的框架都使用可视化的方式呈现了出来从输入到输出数据的每个步骤的流动以及每个节点的数据维度与当前时间节点的计算名称都详细的罗列了出来类似卷积的操作从输入到输出都是一条直线下来光看代码也比较容易清晰。 但是碰到类似的大模型其输入输出节点如此之多若只看代码的话估计整个人都懵了。若下图展现出来再配合着代码与模型框架再去理解模型是不是就容易轻松了。 Netron的官网也很简洁只需要把自己的模型训练完成的模型上传到Netron的网站模型框架就会自动展现出来。目前支持ONNX, TensorFlow Lite, Core ML, Keras, Caffe, Darknet, MXNet, PaddlePaddle, ncnn, MNN, TensorFlow.js, Safetensors and NumPy. 这里我们编写一段 CNN 的代码试试Netron可视化模型的魅力运行以下代码然后把模型保存成 onnx格式得到模型文件后就可以上传到Netron网站。
import torch
import torch.nn as nn
import torch.onnx
import torch.nn.functional as F
# 假设我们有一个简单的卷积神经网络
class SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()self.conv1 nn.Conv2d(1, 6, 5)self.pool nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(6, 16, 5)self.fc1 nn.Linear(16 * 5 * 5, 120) # 调整全连接层的输入维度self.fc2 nn.Linear(120, 84)self.fc3 nn.Linear(84, 10)def forward(self, x):x self.pool(F.relu(self.conv1(x)))x self.pool(F.relu(self.conv2(x)))x x.view(-1, 16 * 5 * 5) # 调整 view 的参数x F.relu(self.fc1(x))x F.relu(self.fc2(x))x self.fc3(x)return x
# 创建模型实例
model SimpleCNN()
# 设置模型为评估模式
model.eval()
# 创建一个示例输入张量
dummy_input torch.randn(1, 1, 32, 32) # 示例输入尺寸 (batch_size, channels, height, width)
# 导出模型
torch.onnx.export(model, # 要导出的模型dummy_input, # 模型的示例输入simple_cnn.onnx, # 输出文件名export_paramsTrue, # 是否导出参数opset_version11, # ONNX 的版本do_constant_foldingTrue, # 是否执行常量折叠优化input_names[input], # 输入节点名称output_names[output], # 输出节点名称dynamic_axes{input: {0: batch_size}, # 动态轴output: {0: batch_size}})print(模型已成功导出为 ONNX 格式)SimpleCNN 类继承自 nn.Module这是所有 PyTorch 网络模型的基础类。
__init__ 方法中定义了网络的结构
self.conv1第一个卷积层输入通道数为 1输出通道数为 6卷积核大小为 5x5。
self.pool最大池化层池化窗口大小为 2x2步长为 2。
self.conv2第二个卷积层输入通道数为 6输出通道数为 16卷积核大小为 5x5。
self.fc1第一个全连接层输入维度为 16 * 5 * 5输出维度为 120。
self.fc2第二个全连接层输入维度为 120输出维度为 84。
self.fc3输出层输入维度为 84输出维度为 10假设是 10 类分类任务。forward 方法定义了数据在模型中的流动方式
x self.pool(F.relu(self.conv1(x)))对输入 x 进行第一层卷积操作然后应用 ReLU 激活函数再进行最大池化。
x self.pool(F.relu(self.conv2(x)))对上一步的结果进行第二层卷积操作同样应用 ReLU 激活函数再进行最大池化。
x x.view(-1, 16 * 5 * 5)将多维张量展平成一维张量以便可以输入到全连接层。这里 -1 表示自动计算批量大小16 * 5 * 5 是展平后的特征数量。
x F.relu(self.fc1(x))通过第一个全连接层并应用 ReLU 激活函数。
x F.relu(self.fc2(x))通过第二个全连接层并应用 ReLU 激活函数。
x self.fc3(x)通过输出层得到最终的输出。Netron展示了每个节点的计算过程以及名称当然模型的每个步骤的数据维度也清晰的展示了出来这样我们学习大模型时可以根据模型框架以及可视化过程来解析代码的执行过程也可以通过可视化的模型框架来学习数据的流向以及 debug 模型。 https://github.com/lutzroeder/netron
https://netron.app/更多transformerVITswin tranformer
参考头条号人工智能研究所
V启示AI科技 动画详解transformer 在线教程