深度学习
文章平均质量分 68
这该死迷人的编程
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
待训练参数的比较:深度可分离卷积,多层感知机,普通卷积层
分离卷积的独立计算每个卷积核只关注单个通道的信息。堆积多个可分离卷积运算上图的输入是第一步骤的输出,实现两个步骤开计算,此步骤每个卷积核可以联合多个通道的信息(我的理解是每个卷积核kernel_size=1,可以将第一步骤的输入进行相加,而卷积核的数量(本例为4)则由想得到的输出的通道数所决定(本例为4))。通过上面两个步骤即可将普通卷积进行分开运算,即为深度可分离卷积。原创 2024-12-09 11:21:21 · 463 阅读 · 0 评论 -
反向传播算法中的误差项
在反向传播算法中,我们需要计算每个神经元的误差项,以便更新网络中的权重。其中,wkj是权重,aj 是前一层神经元的输出,bk是偏置项。zk 是输出层神经元的加权输入(即未经过激活函数的输入)。其中,yk 是目标值,yk^ 是神经网络的输出值。E是损失函数(例如均方误差)。计算 ∂yk^/∂zk。原创 2024-12-06 16:20:08 · 331 阅读 · 0 评论 -
深度学习:位置前馈神经网络
是 Transformer 模型中的一个重要组件。位置前馈神经网络在每个位置上独立地对输入进行处理,通常由。每个位置上的输入数据独立地通过位置前馈神经网络进行处理,从而捕捉每个位置的局部特征。通过两个全连接层和中间的 ReLU 激活函数,引入非线性变换,增强模型的表达能力。将输入特征映射到隐藏层特征,再映射到输出特征,实现特征的变换和提取。原创 2024-11-20 16:05:36 · 493 阅读 · 0 评论 -
深度学习:ResNet每一层的输出形状
nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3):将输入的 1 个通道扩展为 64 个通道,特征图的尺寸从 224x224 变为 112x112。特征图尺寸减半的原因是为了在增加网络深度的同时,减小特征图的尺寸,从而减少计算量和参数数量,同时增加感受野,提高网络的性能和效率。解释:resnet_block(64, 128, 2):包含两个残差块,输入通道数为 64,输出通道数为 128,特征图的尺寸减半(56x56 -> 28x28)。原创 2024-11-20 11:35:18 · 1214 阅读 · 0 评论 -
深度学习:循环神经网络的计算复杂度,顺序操作和最大路径长度
当更新循环神经网络的隐状态时,d × d权重矩阵和d维隐状态的乘法计算复杂度为O(d2)。假设 W 的大小为 d×d,h(t−1)的大小为 d,那么乘法的计算复杂度为 O(d2)。对于长度为 n 的序列,隐状态的更新需要进行 n 次。每次更新都需要进行 Wh(t−1)的乘法操作,因此总的计算复杂度为 O(nd2)。每个时间步的隐状态依赖于前一个时间步的隐状态,因此无法并行化。h(t−1)是时间步 t−1的隐状态,大小为 d。W是隐状态到隐状态的权重矩阵,大小为 d×d。h(t) 是时间步 t 的隐状态。原创 2024-11-18 11:29:20 · 616 阅读 · 0 评论 -
深度学习:卷积神经网络的计算复杂度,顺序操作,最大路径长度
在深度学习中,卷积层的计算复杂度主要取决于卷积核的大小、输入和输出的通道数量、以及输入序列的长度。具体来说,卷积层的计算复杂度可以通过以下几个因素来计算:卷积核大小 k:卷积核的大小决定了每次卷积操作需要计算的元素数量。输入通道数量 d:输入通道数量决定了每个位置需要进行的卷积操作的数量。输出通道数量 d:输出通道数量决定了需要进行的卷积操作的总次数。输入序列长度 n:输入序列长度决定了卷积操作的次数。输出通道数量 d 是指卷积层输出的特征图的数量。原创 2024-11-18 10:47:21 · 845 阅读 · 0 评论 -
深度学习:transpose_qkv()与transpose_output()
transpose_qkv 函数通过以下步骤将输入张量重新排列,使其适合多头注意力的计算:将 num_hiddens 维度拆分成 num_heads 个头。交换维度,使得每个头的数据连续排列。合并 batch_size 和 num_heads 维度,使得每个头的数据连续排列。最终,transpose_qkv 函数返回形状为 (batch_size * num_heads, seq_len, num_hiddens // num_heads) 的张量,以便进行多头注意力计算。原创 2024-11-15 11:35:17 · 986 阅读 · 0 评论 -
深度学习:广播机制
广播机制通过自动扩展较小的张量来匹配较大张量的形状,从而使得逐元素操作能够顺利进行。这种机制避免了显式地扩展张量的维度,提高了代码的简洁性和效率。原创 2024-11-13 20:49:11 · 720 阅读 · 0 评论 -
深度学习:nn.Linear
通过 nn.Linear(key_size, num_hiddens),键被映射到一个新的维度空间,即每个键被转换为一个形状为 (num_hiddens,) 的向量。输出:经过线性变换后,K_transformed 的形状为 (2, 5, 128),表示每个键被映射到了 128 维的隐藏层空间。输入:键张量 K 的形状为 (2, 5, 64),表示批量大小为 2,序列长度为 5,每个键的维度为 64。假设键(key)的维度为 key_size,即每个键是一个形状为 (key_size,) 的向量。原创 2024-11-12 11:31:57 · 591 阅读 · 0 评论 -
深度学习:掩蔽softmax
假如valid_lens=tensor([2, 3, 1])shape[1]为3(即第一个样本每一行的有效长度为2,第二个样本每一行有效长度为3,第三个样本每一行有效长度为1),通过代码valid_lens将会变为tensor([2, 2, 2, 3, 3, 3, 1, 1, 1])即有效长度成功扩展到每个位置。valid_lens = valid_lens.reshape(-1): 将 valid_lens 展平为一维张量,形状为 (batch_size * sequence_length,)原创 2024-11-12 11:05:02 · 785 阅读 · 0 评论 -
深度学习:卷积神经网络中的im2col
第二行为 2,3,4,6,7,8,10,11,12,18,19,20,22,23,24,26,27,28,34,35,36,38,39,40,42,43,44 即第二次卷积运算所涉及到的输入数据。第一行为 1,2,3,5,6,7,9,10,11,17,18,19,21,22,23,25,26,27,33,34,35,37,38,39,41,42,43 即第一次卷积运算所涉及到的输入数据。在传统的卷积操作中,卷积核(滤波器)在输入图像上滑动,逐个计算每个位置的卷积结果。若是批大小为10,即保存10倍的数据。原创 2024-10-31 17:05:07 · 1663 阅读 · 0 评论 -
深度学习:抑制过拟合
反向传播时的行为和ReLU相同。正向传播时没有传递信号的神经元,反向传播时信号将停在那里。1.过拟合:当模型在训练数据上表现很好,但在未见过的测试数据上表现较差时,我们称之为过拟合。2.权重过大:在过拟合的情况下,模型可能会过度依赖某些特征,导致某些权重变得非常大。这些大的权重会使模型对训练数据的微小变化非常敏感,从而在测试数据上表现不佳。通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。例如为损失函数加上权重的平方范数(即L2正则化或权重衰减)是一种常见的正则化技术,用于抑制权重的变大。原创 2024-10-28 20:48:51 · 1356 阅读 · 0 评论 -
深度学习:权重参数相关知识(深度学习入门:基于Python的理论与实现 (斋藤康毅)))
与前一层有n个节点连接时,初始值使用标准差为 的分布n 个节点使用标准差为 1/根号n 的高斯分布进行初始化使用Xavier初始值后,前一层的节点数越多,要设定为目标节点的初始值的权重尺度就越小)。第一点,权重初始值不能设置为0,严格说权重初始值不能设为同样的值,是因为在误差反向传播法中,所有权重值都会进行相同的更新(参考我的博客:“深度学习:简单计算图的反向传播传递导数计算”中乘法节点反向传播的规则),所以。第三点,若设定了合适的权重初始值,则各层的激活值分布会有适当的广度,从而可以顺利地进行学习。原创 2024-10-28 18:43:25 · 784 阅读 · 0 评论 -
深度学习:SGD的缺点
在给定的函数 f=120(x2)+y2f=201(x2)+y2 中,梯度向量 ∇f=(x/10,2y)) 在不同点的方向是不同的。在 x轴方向上,梯度分量是 x/10,这意味着梯度在 x轴方向上的变化相对较小,因为 x的系数是 1/10,这是一个较小的数。如果 η 较大,y轴方向上的移动会显著大于x 轴方向上的移动,导致点在 y轴方向上大幅移动,而在 x 轴方向上移动较小。在 y 轴方向上,梯度分量是 2y,这意味着梯度在 y轴方向上的变化相对较大,因为 y的系数是 2,这是一个较大的数。原创 2024-10-25 17:45:42 · 1202 阅读 · 0 评论 -
深度学习:匿名函数lambda函数的使用与numerical_gradient函数
(f(x+h) - f(x-h))/2*h计算梯度,而由于匿名函数有更新参数的作用,所以当x=self.params[‘W1’]时,计算f(x+h)本例即匿名函数loss_W时会自动将模型中的self.params[‘W1’]=self.params[‘W1’]+h,作用就是匿名函数返回的self.loss(x, t)调用的predict函数里的对应参数会相应更新,这样即可获得在更新后的W1条件下对应的predict输出值从而计算loss。下面的numerical_gradient函数是调用上面函数的。原创 2024-10-24 16:28:06 · 965 阅读 · 0 评论 -
深度学习:简单计算图的反向传播传递导数计算
从这个结果中可知,“支付金额关于苹果的价格的导数”的值是2.2。∂支付金额/∂苹果总价 * ∂苹果总价/∂苹果单价+ ∂支付金额/∂消费税 * ∂消费税/∂苹果总价 * ∂苹果总价/∂苹果单价 = 1 * 2 + 1 * 0.1 * 2 = 2.2 这是正常算法。而一开始的问题中求“支付金额关于苹果的价格的导数”“支付金额关于苹果的个数的导数”“支付金额关于消费税的导数”。从这个结果中可知,“支付金额关于苹果的价格的导数”的值是2.2。苹果总价是2个苹果的价格之和,所以苹果总价关于苹果价格的导数是2。原创 2024-10-21 21:39:01 · 534 阅读 · 0 评论 -
深度学习:简单计算图的反向传播传递导数计算
从这个结果中可知,“支付金额关于苹果的价格的导数”的值是2.2。∂支付金额/∂苹果总价 * ∂苹果总价/∂苹果单价 + ∂支付金额/∂消费税 * ∂消费税/∂苹果总价 * ∂苹果总价∂苹果总价 =∂支付金额/∂苹果总价 + ∂支付金额/∂消费税 * ∂消费税/∂苹果总价 = 1 + 0.1 = 1.1。苹果总价是2个苹果的价格之和,所以苹果总价关于苹果价格的导数是2。支付金额是苹果总价加上消费税,所以支付金额关于消费税的导数是1。消费税是苹果总价的10%,所以消费税关于苹果总价的导数是0.1。原创 2024-10-19 11:19:09 · 361 阅读 · 0 评论 -
深度学习:损失函数——交叉熵误差
对于 one-hot 编码的 t,只有真实类别的标签值为1,其他类别的标签值为0,因此只有真实类别的对数概率会被保留。当t标签以[2,7,0,9,4]存储时,y[np.arange(batch_szie), t] 会生成[y[0,2], y[1,7], y[2,0],y[3,9],y[4,4]]由于只有真实类别的对数概率会被保留,因此这个求和实际上是计算真实类别的对数概率的总和。例如,对于第一个样本:t[0] * np.log(y[0] + 1e-7) 会保留第三个类别的对数概率,其他类别的对数概率为0。原创 2024-10-17 11:55:42 · 468 阅读 · 0 评论
分享