- 博客(113)
- 收藏
- 关注
原创 transformer
无法直接利用序列中元素的位置信息。RNN的核心思想是利用循环结构处理序列数据,即网络中存在一个“记忆单元”,能够保存之前时间步的信息,并将其与当前时间步的输入结合,共同影响当前时间步的输出。BI-LSTM的核心思想是使用两个独立的LSTM网络,分别从前向和后向两个方向处理序列数据,然后将两个方向的隐藏状态进行拼接或融合,作为最终的输出。RNN的网络结构可以看作是一个随时间展开的循环链,每个时间步都接收当前输入和上一个时间步的隐藏状态,输出当前时间步的预测结果和更新后的隐藏状态。
2025-02-12 21:43:43
1132
原创 空洞卷积(dilation)
具体来说,空洞卷积是在标准的卷积核里注入空洞,以此来增加感受野/接受域。相比原来的正常卷积运算,空洞卷积多了一个超参数,称之为扩张率(Dilation Rate),它指的是卷积核的间隔数量。空洞卷积可以在不用pooling层(pooling层会导致信息损失)且计算量相当的情况下,提供更大的感受野,并有内部数据结构的保留和避免使用down-sampling这样的特性。至于空洞卷积最开始具体是用在哪个网络之中,可能因不同的研究和应用而有所不同,但它在图像语义分割任务中的提出和应用是具有里程碑意义的。
2025-02-11 14:34:34
372
原创 空间可分离卷积
空间可分离卷积(Spatial Separable Convolution)是一种将标准二维卷积核分解为两个一维卷积操作的技术。它通过首先用一个1x3的卷积核在水平方向上进行卷积,再用一个3x1的卷积核在垂直方向上进行卷积,从而减少了计算量。相比标准的二维卷积,空间可分离卷积能够有效提高计算效率,尤其适用于计算资源有限的场景,但在现代网络中,它不如深度可分离卷积广泛使用。图1 将二维卷积拆分为两个一维的卷积。图2 具体的一个拆分例子。图3 可有效减少计算量。
2025-02-11 12:59:45
152
原创 卷积改变特征图个数(通道数),池化改变图像尺寸(以LetNet5为例)
中只是对得到的6个feature进行尺寸变化,不改变通道数,同时卷积层也不改变尺寸数。中只是对得到的6个feature进行尺寸变化,不改变通道数,同时卷积层也不改变尺寸数。中:有6个feature map,6个feature map分别经过16个卷积核(中:有6个卷积核,一个feature map分别经过6个卷积核(在这里有两个卷积层,有两个池化层,有一个全连接层。)可得到16个feature map。)可得到六个feature map。一个卷积核的深度为1。一个卷积核的深度为6。
2025-02-10 18:30:46
237
原创 通道计算深层理解
每个卷积核会在输入的 64 个通道上执行卷积操作,逐元素相乘并求和,最终输出一个单一的值。这个过程会在输入的每个位置上进行,产生一个输出特征图。总共有 128 个这样的卷积核,因此最终会生成 128 个输出特征图。
2025-02-10 17:11:46
337
原创 MMLAB的实例分割算法mmsegmentation
当然如果以上无法满足,这里面提供了详细的教程与方便的接口,以供制作自己的数据集和设计自己的算法、主干网络、损失函数等。
2024-02-04 20:20:45
1459
1
原创 利用sklearn工具中的train_test_split快速划分实例分割数据集
5.将进一步上面得到的训练集划分为训练集和验证集,保存训练集和验证集。4. 划分数据集为训练集和测试集最终保存测试集。3.获取所有文件的路径列表。6.将以上的结果保存。
2024-02-04 09:55:16
863
原创 使用Pycharm在本地调用chatgpt的接口
使用的路由端口情况,需要使得使用的小魔法的端口,以及上述代码中的端口,以及刚才下载的openai包中 _base_client.py 文件的端口一致,才可以正常访问,我以端口号为7890做个例子,当然你设为其他也是可以的。将我本地安装的opnai包中的_base_client.py中的352行的self._proxies = proxies替换为。这个是在opnai的官方申请的秘钥,详见。使用 openai 1.6.1 版本。
2024-02-01 11:32:05
5852
3
原创 在win10下,使用torchviz对深度学习网络模型进行可视化
变量值为:graphviz所在的路径+bin;那么我的变量值就为:C:\Program Files\Graphviz 2.44.1\bin。我们按照依次顺序进入到编辑环境变量中:win左下角搜索 -> 查看高级系统设置 -> 点击环境变量 ->点击用户的path。prompt 进入自己的 pytorch 环境(图中 pt 是我自己的 pytorch 环境),运行如下代码安装依赖包。只需要安装到一个自己记得住的地方,我安装的地方是 C:\Program Files\Graphviz 2.44.1。
2023-10-30 23:02:13
930
2
原创 两数和的目标 python (初学者vs程序员)
1)给定一个整数列表,在列表中,从前向后查找两个元素使其相加之和等于目标数,并返回两个整数在列表中的下标。如果没有符合条件的数字,输出False,本题假设题目的解唯一。2)注意:分两次input()分别读入整数列表和目标数;输出采用列表形式。例如,依次输入整数列表 [2,7,11,15] 和9,输出[0, 1]。3)输入代码并提交解答。注意:提交代码时请删除input()函数中的参数,否则会出现错误。
2023-10-29 15:06:43
614
原创 小样本学习——匹配网络
Matching networks(匹配网络)的架构主要受到注意力模型(attention model)和基于记忆的网络(memory-based networks)的启发。在所有这些模型中,都定义了神经注意机制来访问存储有解决当前任务所需信息的记忆矩阵。首先,我们需要了解一些与匹配网络相关的术语。Attention Model(注意力模型):是一种模拟人类注意力机制的计算模型,用于确定模型在处理输入时应该关注哪些部分。它可以根据输入的重要性权重来动态地选择性地聚焦于不同的输入部分。
2023-10-05 22:53:32
2305
3
原创 小样本学习
小样本学习(few shot learning)旨在使用先验知识(prior knowledge)基于有限数量的样本推广(generaling)到新任务(new task)。这些先验(prior knowledge)通常指的是很大规模的训练集,有很多的类和样本,然而在新任务(new task)中的样本(the samples)在这些大规模的训练集上面从来都没有出现过。例如在小样本图像分类中(in few shot image classification),预训练模型只能看到 五个鸟类图像,(一。
2023-09-27 14:06:35
1025
原创 LCR 101. 分割等和子集——力扣——背包问题、动态规矩
这段代码实现了一个判断给定数组是否可以被划分成两个和相等的子集的功能。首先,如果数组长度小于等于1,则无法划分,直接返回False。然后,计算数组中所有元素的总和,如果总和为奇数,则无法划分成两个相等的子集,直接返回False。接下来,计算目标和,即总和的一半。创建一个二维的布尔型动态规划数组dp,其中dp[i][j]表示前i个元素是否可以组成和为j的子集。然后,初始化动态规划数组的第一列,将其设为True。这是因为当目标和为0时,任何元素都可以不选,所以前i个元素都可以组成和为0的子集。
2023-09-27 13:55:41
293
原创 python的re正则表达式
re是Python中用于处理正则表达式的内置库,提供了许多有用的方法。None这只是re库中一些常用方法的示例,还有其他方法和参数可以根据具体需求进行使用。详细的使用文档可以在Python官方文档中查找。
2023-09-05 13:04:20
257
原创 Problem: 205. 同构字符串;力扣;python
不能只考虑一种(t到s的映射),如果这样,就像下面这种情况不能通过有些实例。(1)选用字典作为映射存储,每个key仅存一次;(2)先考虑t到s的映射,然后考虑s到t的映射;
2023-09-05 12:07:36
363
原创 判断聚类 n_clusters
这些方法(肘部法则、轮廓系数、Gap Statistic、Calinski-Harabasz Index)都是用于确定聚类算法中的。(簇的数量)参数,但它们之间存在一些区别。
2023-08-28 11:12:14
1080
原创 逻辑回归分析实战(根据鸢尾花的性质预测鸢尾花类别)
1. 目标变量类型:一元线性回归模型适用于连续型目标变量,即预测一个数量;而逻辑回归模型适用于二分类目标变量,即预测一个属于两个类别的概率。2. 输出类型:一元线性回归模型的输出是一个连续的数值,表示目标变量的预测值;而逻辑回归模型的输出是一个概率值,表示目标变量属于某个类别的概率。3. 假设函数形式:一元线性回归模型假设自变量与因变量之间存在线性关系,通过拟合一条直线来描述它们之间的关系;逻辑回归模型则假设自变量与因变量之间存在一种S形曲线的关系,通过拟合一个Sigmoid函数来描述它们之间的关系。
2023-07-28 22:01:49
447
1
原创 一元线性回归方法预测鸢尾花
这个项目可以帮助理解线性回归模型的使用和预测过程,并通过可视化展示模型的拟合效果。4. 预测及结果可视化:使用训练好的模型对自变量x进行预测,将真实值与预测值分别以散点图和线条的形式绘制在图形窗口中,并使用黄色线条连接真实值与对应的预测值。3. 载入模型:使用`LinearRegression()`函数创建一个线性回归模型,并使用`fit()`函数对模型进行训练,拟合出最佳的回归线。5. 输出系数和截距:输出线性回归模型的系数和截距,即回归线的斜率和截距。
2023-07-28 20:05:23
723
1
原创 有效的括号,python,力扣,栈数据结构
``pythonstack = Stack() # 创建一个空栈stack.push(1) # 入栈操作top_element = stack.pop() # 出栈操作,返回被弹出的元素print(top_element) # 输出: 3```使用列表实现栈更为简单和高效,因此在Python中通常更常用。但是,当需要更多灵活性和控制时,可以选择实现自己的链表结构作为栈。希望这个回答对你有所帮助。如果有任何进一步的问题,请随时提问。
2023-07-24 23:02:02
407
原创 【无标题】
这道题可以使用双指针来解决。我们用两个指针 `left` 和 `right` 来表示当前区间的左右端点。初始时,它们都指向数组的第一个元素。然后我们不断地将右指针向右移动,直到区间中的所有元素都被覆盖。此时,我们就找到了以左指针为起点的最短区间。我们将这个区间加入答案数组,并将左指针移到右指针的下一个位置,继续寻找下一个区间。具体来说,我们每次将右指针向右移动一位。如果当前区间中的所有元素都被覆盖,那么我们就将这个区间加入答案数组,并将左指针移到右指针的下一个位置。我们需要注意处理数组末尾的边界情况。
2023-06-16 15:10:20
781
原创 【LeetCode】python 主要元素 摩根投票法
if nums.count(candidate) > len(nums) // 2: # 如果候选人的票数超过数组长度的一半,则返回候选人。count += 1 if num == candidate else -1 # 如果当前元素等于候选人,则票数加1,否则减1。if count == 0: # 如果候选人票数为0,则将当前元素设为候选人。3. 如果候选人的票数超过数组长度的一半,则返回候选人,否则返回-1。- 如果当前元素等于候选人,则票数加1,否则减1。输入:[2,2,1,1,1,2,2]
2023-06-16 13:59:37
931
1
原创 【LeetCode】 一行代码求解两个数组的交集 python
print("交集:",set(nums1).intersection(set(nums2)))print("差集:",set(nums1).difference(set(nums2)))print("并集:",set(nums1).union(set(nums2)))print("对称差集:",set(nums1).symmetric_difference(set(nums2)))
2023-06-14 09:55:33
150
原创 【LeetCode】python 多数元素(字典)
举个例子,假设数组为 [2, 2, 1, 1, 1, 2, 2]。遍历到第一个元素 2 时,候选元素变为 2,计数器变为 1。遍历到第四个元素 1 时,计数器变为 0,候选元素变为 1。遍历到第六个元素 2 时,计数器变为 0,候选元素变为 2。最终的候选元素为 2,即为多数元素。由于多数元素出现的次数比其他元素出现的次数之和还要多,所以最终的候选元素一定是多数元素。摩尔投票算法的时间复杂度为 O(n),空间复杂度为 O(1),是一种非常高效的解决多数元素问题的方法。,返回其中的多数元素。
2023-06-13 18:31:01
1155
原创 贪心算法求解买股票的最佳时机
贪心算法是一种常用的算法思想,它通常具体来说,贪心算法通常包含以下几个步骤:1. 将问题分解为若干个子问题,每个子问题都可以独立求解。2. 对于每个子问题,确定一个最优解的选择标准。3. 使用贪心策略,依次做出最优选择,直到得到全局最优解。需要注意的是,贪心算法并不是适用于所有问题的,它只适用于满足贪心选择性质和最优子结构性质的问题。贪心选择性质指的是,每一步都选择当前状态下最优的解,不考虑未来的后果;最优子结构性质指的是,问题的最优解可以通过子问题的最优解推导得到。
2023-06-11 19:24:11
273
原创 【LeetCode】136. 只出现一次的数 python
异或运算是指对两个二进制数的每一位进行比较,如果相同则该位的结果为0,如果不同则该位的结果为1。因此,对于任意的正整数n,1 ^ n的结果可以按照上述规律进行循环,即每隔4个数就会重复一次。最终,res 中的值就是那个只出现一次的数字。因为只需要一个变量来保存异或的结果,不需要额外的空间。根据这两个性质,我们可以对整个数组进行一次异或运算,最终的结果就是那个只出现一次的数字。总之,这道题所用的思想是非常巧妙的,可以帮助我们更好地理解位运算的性质和应用。输入:nums = [4,1,2,1,2]
2023-06-11 15:36:59
1364
2
原创 【LeetCode】杨辉三角II Python
给定一个非负索引rowIndex,返回「杨辉三角」的第rowIndex行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: rowIndex = 3输出: [1,3,3,1]示例 2:输入: rowIndex = 0输出: [1]示例 3:输入: rowIndex = 1输出: [1,1]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/pascals-triangle-ii著作权归领扣网络所有。
2023-06-11 14:41:08
163
原创 ***杨辉三角_yyds_LeetCode_python***
这段代码是用来生成杨辉三角的,杨辉三角是一个很有趣的数学图形,它的每一行都是由数字 1 开始和结束,中间的数字是上一行相邻两个数字之和。下面是一个 5 行的杨辉三角:```11 11 2 11 3 3 11 4 6 4 1```现在我们来解释一下这段代码:首先定义了一个函数 `generate`,它接收一个参数 `numRows`,表示要生成杨辉三角的行数。然后定义了一个空列表 `result`,用来存储生成的杨辉三角。
2023-06-10 15:43:20
1065
原创 LeetCode 按摩师 python
时间复杂度:O(n),其中n为数组的长度。空间复杂度:O(1),只需要常数级别的空间来存储当前最大值和前一个最大值。算法思路1.定义状态:dp[i]表示前i个数中选择不相邻的数所能得到的最大和。2.状态转移方程:对于第i个数,有两种情况,选择或不选择。如果选择第i个数,则不能选择第i-1个数,所以dp[i] = dp[i-2] + nums[i]。如果不选择第i个数,则dp[i] = dp[i-1]。
2023-06-09 17:10:15
1020
原创 递归——先递后归——平衡二叉树
chatgpt的回答:先递后归:先举个例子, 输出结果: 插入图来理解一个圈子就相当于一次完整的递归(有递也有归)举个例子:将有序的数组转化为平衡二叉树输出结果: 0-3-1095上面的输出结果(按照 根、左、右的顺序进行)就是上面的这个平衡二叉树,
2023-06-09 16:30:35
898
原创 力扣 108 将有序数组转化为二叉搜索树
否则,我们找到数组的中间位置 `mid`,将其作为根节点,然后递归地构建左右子树。二叉搜索树是一种常见的数据结构,它的特点是左子树的所有节点都小于根节点,右子树的所有节点都大于根节点。二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点的值都小于根节点的值,右子树中的所有节点的值都大于根节点的值。空间复杂度分析:每次递归都会创建一个新的节点,因此空间复杂度为 $O(n)$,其中 $n$ 是数组的长度。时间复杂度分析:每次递归都要对数组进行切片操作,时间复杂度为 $O(n)$,其中 $n$ 是数组的长度。
2023-06-08 20:33:42
641
原创 搜索插入位置 力扣 Python
假设算法的执行时间为T(n),n为输入规模,执行时间与输入规模的对数成正比,即T(n) = k * log n,其中k为常数。假设算法的执行时间为T(n),n为输入规模,执行时间与输入规模的平方成正比,即T(n) = k * n^2,其中k为常数。假设算法的执行时间为T(n),n为输入规模,执行时间与输入规模的指数成正比,即T(n) = k * 2^n,其中k为常数。假设算法的执行时间为T(n),n为输入规模,执行时间与输入规模成正比,即T(n) = k * n,其中k为常数。
2023-06-06 19:37:43
529
原创 移除元素(双指针) Python 力扣
例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。除了常数个额外变量之外,算法还可以使用额外的数据结构来存储数据,例如使用一个新的数组来存储移除指定元素后的结果。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。这是一个移除数组中指定元素的算法,时间复杂度为O(n),空间复杂度为O(1)。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。
2023-06-05 16:11:44
548
原创 加一 Python 力扣
示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]提示:来源:力扣(LeetCode)链接:https://leetcode.cn/problems/plus-one著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2023-06-05 15:52:53
580
原创 不同平均值—集合—力扣—Python
15. symmetric_difference_update(set):将集合更新为集合与另一个集合的对称差集。14. symmetric_difference(set):返回集合与另一个集合的对称差集。8. intersection_update(set):保留集合中与另一个集合相同的元素。5. difference_update(set):移除集合中与另一个集合相同的元素。17. update(set):将集合更新为集合与另一个集合的并集。16. union(set):返回集合与另一个集合的并集。
2023-06-04 10:46:07
343
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人