深度学习代码手撕
文章平均质量分 95
丁希希哇
这个作者很懒,什么都没留下…
展开
-
TensorFlow代码逻辑 vs PyTorch代码逻辑
return x在TensorFlow中,通常使用tf.keras模块来定义模型。可以使用Sequential API或Functional API。])PyTorch中,定义模型时需要继承nn.Module类并实现forward方法return x。原创 2024-07-02 21:16:26 · 819 阅读 · 3 评论 -
PyTorch|保存及加载模型、nn.Sequential、ModuleList和ModuleDict
在保存一般检查点时,不仅仅是保存模型的state_dict,还包括保存优化器的state_dict、停止使用的时间,最近记录的训练损失,外部的torch.nn.Embedding层等等。如果输入的是一个字典,init函数会采用遍历字典的方式,如果是一个一个的模块,init函数也会针对性的采取其他遍历方法。nn.Sequential是有序的,当实例化nn.Sequential时,传入的模块顺序就是神经网络前向传播的顺序。对于一个模型的输入,nn.Sequential会依次的过其中的子模块。原创 2024-04-19 10:33:16 · 1222 阅读 · 1 评论 -
pytorch|autograd使用、训练模型
epoch的次数——在数据上迭代的次数;batch Size——在参数更新之前通过网络传播的数据样本的数量;learning Rate——在每个batch/epoch更新模型参数的次数。epochs = 5优化器一般至少有两个参数:需要更新的模型的参数、学习率需要先调用optimizer.zero_grad(),对模型参数的梯度进行重置在pytorch中,参数的梯度会默认进行累计,了防止重复计数,每次迭代时需要显式地将它们归零。调用loss.backward()反向传播预测损失。原创 2024-04-15 08:53:29 · 1027 阅读 · 0 评论 -
PyTorch|搭建分类网络实例、nn.Module源码学习
定义一组参数,该组参数在模型训练时不会更新(即调用 optimizer.step() 后该组参数不会变化,只可人为地改变它们的值),但是保存模型时,该组参数又作为模型参数不可或缺的一部分被保存。将一个不可训练的类型Tensor转换成可以训练的类型parameter,并将这个parameter绑定到这个module里面,相当于变成了模型的一部分,成为了模型中可以根据训练进行变化的参数。_save_to_state_dict函数:把当前module的所有参数及buffers放入一个字典中。原创 2024-04-10 08:08:30 · 821 阅读 · 0 评论 -
PyTorch|Dataset与DataLoader使用、构建自定义数据集
构建自定义的Dataset类,需要继承TensorFlow的官方dataset类自定义Dataset类必须实现三个函数:__init__,__len__和__getitem__pytorch中的dataset类是在pytorch的torch下的utils之下的data文件夹里有一个dataset.py。原创 2024-04-06 11:08:02 · 3995 阅读 · 0 评论 -
深度学习代码|MSE损失的代码实现
一般在反向传播时,都是先求loss,再使用loss.backward()求loss对每个参数 w_ij和b的偏导数(也可以理解为梯度)。但是只有标量才能执行backward()函数,因此在反向传播中reduction不能设为"none"。NumPy 是 Python 语言的一个第三方库,支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算,NumPy 就成了必不可少的工具之一。具体地,在深度学习中,可以使用该函数用来计算两个特征图的相似性。原创 2024-03-31 14:27:36 · 1499 阅读 · 0 评论 -
深度学习代码|Torch 模型搭建整体流程 code
模型构建Pytorch构建网络模型时super(class, self).init()的作用return x定义超参数和训练参数batch_size:一批的数据的量lr:初始学习率(初始),每次参数更新的步长max_epochs:训练次数(轮数)定义模型、损失函数和优化器。原创 2024-02-20 12:24:59 · 1648 阅读 · 0 评论 -
深度学习代码|Batch Normalization批归一化的代码实现
综合来说,拉伸和偏移参数允许网络自适应地调整标准化后的特征,使得网络能够更好地适应不同的数据分布和任务需求,从而提高模型的性能和泛化能力。动量参数控制着对当前批次计算得到的均值和方差与之前计算的指数移动平均的均值和方差之间的权衡。B:批次大小,C:通道数/特征数,H:高度,W:宽度,L:顺序。原创 2024-02-17 13:44:58 · 1395 阅读 · 0 评论 -
深度学习代码|feed_forward前馈层的代码实现
Transformer结构主要分为两大部分,一是Encoder层结构,另一个则是Decoder层结构,Encoder 的输入由 Input Embedding 和 Positional Embedding 求和输入Multi-Head-Attention,然后经一个ADD&Norm,再通过Feed Forward进行输出。FeedForward 是一个神经网络模块,由全连接层FC与激活ReLu组成,通常用于处理序列数据或者在深度学习模型的前馈过程中。原创 2024-02-16 22:15:53 · 1552 阅读 · 0 评论 -
深度学习代码|Multi-Headed Attention (MHA)多头注意力机制的代码实现
定义多头自注意力机制中的线性变换操作(在自注意力机制中,需要将输入的特征向量通过线性变换映射到不同的空间中,以便进行多头注意力的计算。将向量拆分为给定数量的头部,以获得多头注意。'''d_model:模型输入的特征维度;heads:注意力机制中的头数;d_k:每个头部中以向量表示的维度数;bias:是否使用偏置项'''#线性变换的线性层,输入为d_model,输出为heads*d_k'''原创 2024-02-09 00:32:34 · 3409 阅读 · 1 评论