自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 每日练习-两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序。输入:nums1 = [1,2,2,1], nums2 = [2,2]

2023-05-06 14:02:22 88

原创 每日练习-两数之和

默认位置是从0开始的,但是如果给enumerate()函数起点位置参数,也可以实现从其他地方开始,例如enumerate(nums,1),则返回的起点是1。解二使用了字典实现哈希表,字典的键为nums中的值,字典的值为位置,因此可以更方便地查询target-j是否存在,且保障了不会出现与自己匹配的情况(因为在查询时,哈希表中并没有当前元素自己)。解一采用了暴力求解,遍历列表时查询其对应的target-i是否在列表中,但直接使用index查询,时间复杂度较大,且需要考虑与自己匹配的问题;

2023-05-06 14:01:12 73

原创 每日练习-有效的字母异位词

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入: s = “anagram”, t = “nagaram”

2023-05-06 14:01:03 76

原创 每日练习-快乐数

解二使用了快慢指针法,当需要检测循环时,就可以使用快慢指针法,快指针速度是慢指针的2倍,因此若发生循环,则两者必定相遇;但是经过观察,三位数字最大999,其sum也只是243,之后产生的值均小于等于243,因此不会出现第三种情况;解一使用哈希集合检测循环,当新获得的sum已出现在集合中,则说明发生了循环;然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。

2023-05-06 14:00:32 61

原创 Transformer

AT 这种decoder的输出是一个一个产生的,在最开始时,decoder会有一个开始符(begin)和encoder的输出一起作为输入,得到第一个输出的向量(得到输出向量的过程是一个概率分布,例如经过decoder后,得到每个字对应分数,“机”字得分占总得分的0.8,“你”占0.1,“end”(结束符,输出此向量后,结束输出)占0.1,那么“机”字就有0.8的概率作为输出),之后此向量代替开始符和encoder的输出一起作为下一次的输入,依次类推,直至输出结束符(end)。

2023-05-05 21:28:38 72

原创 卷积神经网络(CNN)

而feature map又可以看出一个拥有n个channels的图片,作为下一层的输入,而下一层的filter也要是一个n个channels的tensor(如下图)。每个Neuron的图片的部分称为一个receptive field,不同Neuron的receptive field可以重叠,多个Neuron可以负责一个receptive field(因为一些图片的特征可能不只有一个)。将一个比较大图片做一个subsampling(如把偶数的行、奇数列去除),图片变为原来的1/4,但不会影响图片特征的提取。

2023-05-05 21:27:37 63

原创 self-attention

如果按照之前的,只使用全连接层(即每个向量经过各种Neuron得到最终的输出)得到的结果有着巨大的缺陷,因为这样在每个向量计算过程实际只考虑了一个向量,但是实际上,每个向量的输出与输入集合中其他向量都是存在关系的(例如,“I saw a saw”,这个句子中两个“saw”有着不同的词性,但只用全连接层输出可能相同),这种关系是我们需要考虑的。例如:文字处理,每一个单词都是一个向量,输入是一个向量的集合,下面的笔记就是关于这种问题需要如何处理。输入:一个向量的集合(例如:音频、语句、图、分子等)

2023-05-05 21:27:27 59

原创 Classification(分类的简略笔记)

每个分类之间是无关的,但预测的数值之间却存在关系的远近,例如将预测结果0当作分类A,预测结果1当作分类B,预测结果100当作分类C,显然预测数值1和2之间关系要比1和100更接近,但分类A,B,C之间是不存在这种关系的,因此这种做法并不合适。如上图所示,MSE的结果在Loss比较大时grandient比较小,更难update到loss小的地方,而cross-entropy的结果更有利于优化(optimization)。这样得到的结果,全都在0-1,且和为1。在进行分类时对Loss的定义。

2023-05-05 21:27:07 57

原创 local minima and saddle point

前面已经说过了,当模型训练结的Loss过大时,可能是模型本身的原因(model bias)和optimization过程没有做好,那么如何改良optimization过程呢?Local minima 在更高级的维度中或许也是 一个saddle point。saddle point (梯度为0但并不是局部最低点)local minima (梯度为0且是局部最低点)当临界点为saddle point时的做法。当位于临界点时,g(梯度)为0,可以认为。之后可以根据H判断是哪种临界点;我们可以根据H去更新。

2023-05-05 21:26:03 52

原创 Batch and Momentum

答案是small Batch的Optimization做的更好,small Batch的update过程是更noisy的,但恰恰是更noisy更有利于optimization的。(flat minima指周围梯度绝对值较小的点,而sharp minima则与之相反,由于测试的数据集与训练的数据集可能存在差别,flat minima显然更有包容性,而small Batch在遇到sharp minima时,更有可能跳出去,因此测试结果更好)。即每次移动的方向为梯度反方向+原来移动方向。

2023-05-05 21:25:54 35

原创 自动调整学习速率

如果learning rate比较小,问题1得到一定程度的解决,但是当grandient比较大时,移动的还比较快,当grandient比较小时,就会出现移动的很慢的情况。的大小的影响是相同的,这样learning rate对于g变化的反应是比较缓慢的,那么做到让learning rate更快地对g变化做出反应呢?, 这样可以实现learning rate自动调整的目的,但这样存在一个问题,那就是最开始移动的g与最近移动的g对于。的更新过程中,是与方向无关的(取了平方),因此与momentum不会抵消。

2023-05-05 21:25:24 129

原创 批次标准化(batch normalization)

在深度学习中,是有多层layer的,上一个layer的输出也是下一个layer的输入,第一层输入做了feature Normalization,但后面的输出却没有做,这显然是不合理的,因此我们可以对每层的输出都做一个feature Normalization。在实际使用的测试过程中,可能一次输入并没有一个batch,这时batch Normalization可能会出现问题,pytorch给了解决方案,即在训练时每一个batch,都会将其mean和。做一个平均值,之后用来作为测试时的mean和标准差。

2023-05-05 21:24:54 172

原创 每日练习-环形链表

环形链表给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。输入:head = [3,2,0,-4], pos = 1。

2023-04-25 22:24:33 29

原创 模型训练过程中可能出现的问题

先训练些比较简单的model,再训练比较复杂的model,如果较复杂的model结果反而不如较简单的,就说明是optimization出了问题。​ 可以将自己的资料分成多份,分别作为训练资料和预测资料,以选择最好的模型。模型训练结果越来越好,但预测结果在达到一定程度后越来越差。训练资料与测试资料差异较大。

2023-04-22 13:08:15 471

原创 机器学习基本概念

可以用Piecewise Linear 的Curves逼近任何连续曲线(即用折线逼近曲线),而Piecewise Linear的Curves是由多个function(相当于折线图中每一个直线)相加得到的,function又可以利用sigmoid逼近得到(当然也可以用其他函数逼近)事实上,在做Optimization时,并不是一次将全部的资料都拿来训练,而是将其随机分为几份batch(至于到底几个batch自己定义),每次用一份batch进行训练,对。可根据不同的w,b, c调整sigmoid。

2023-04-22 12:40:33 45

原创 每日练习-链表相交

解二使用了双指针法的思想,当两个链表交叉,那么相交节点后的链表是一样的,因此可以让较长链表上的指针移动到与较短链表首端对应的位置,之后依次后移,判断对应链点是否相同,可以有效避免解一中的特殊情况,且时间复杂度较低。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。链表1:[4,1,8,4,5]、链表2:[8,0,1,8,4,5],相交节点为第一个链表的2号和第二个链表的3号;

2023-04-21 11:44:55 44

原创 每日练习-删除链表的倒数第 N 个结点

删除链表的倒数第N个节点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]

2023-04-21 10:40:08 39

原创 每日练习-两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head = [1,2,3,4]输出:[2,1,4,3]

2023-04-21 01:17:44 24

原创 每日练习-反转链表

解三的思路与解二是一样的,但是使用了递归:我们可以看出解二的过程实际上是p,temp两个指针指向链点之间指针的反转,可以用递归来处理,要注意递归时输入形参是什么(即要注意在下一次循环中p,temp对应什么),还要注意递归需要有停止的途径。因为我采用了虚拟节点,因此需要格外注意原链表的第一个链点和原链表为None这两种情况;,请你反转链表,并返回反转后的链表。

2023-04-19 23:11:32 30

原创 每日练习-移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。输入:head = [1,2,6,3,4,5,6], val = 6。输出:[1,2,3,4,5]

2023-04-18 21:33:41 32

原创 每日练习-设计链表

void addAtIndex(int index, int val): 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。void addAtHead(int val): 将一个值为 val 的节点插入到链表中第一个元素之前。void deleteAtIndex(int index): 下标有效,则删除链表中下标为 index 的节点。int get(int index): 获取链表中下标为 index 的节点的值;

2023-04-18 21:32:27 30

原创 每日练习-螺旋矩阵

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。输出:[[1,2,3],[8,9,4],[7,6,5]]

2023-04-17 22:59:31 62

原创 每日练习-长度最小的子数组

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。输入:target = 7, nums = [2,3,1,2,4,3]给定一个含有 n 个正整数的数组和一个正整数 target。解释:子数组 [4,3] 是该条件下的长度最小的子数组。

2023-04-16 22:31:18 35

原创 有序数组的平方

给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]

2023-04-16 17:58:09 22

原创 每日练习-移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。示例输入:nums = [0,1,2,2,3,0,4,2], val = 2。

2023-04-15 21:23:41 26

原创 每日练习-二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1。

2023-04-15 18:18:44 23

原创 解决matplotlib绘图时标签上中文无法正常显示的问题

注意:把这行代码加入在使用matplotlib内置样式代码后,否则设置会被覆盖。FangSong : 中文仿宋。YouYuan : 中文幼圆。在图表代码前加入以下代码行。SimHei : 中文黑体。STSong : 华文宋体。Kaiti :中文楷体。Lisu :中文隶书。

2023-04-09 21:29:58 247

原创 python项目-数据可视化-matplotlib和plotly绘图

15-1 立方:数字的三次方被称为其立方。请绘制一个图形,显示前5 个整数的立方值,再绘制一个图形,显示前5000 个整数的立方值。15-2 彩色立方:给你前面绘制的立方图指定颜色映射。补充:内置样式:matplotlib提供了很多内置样式,可在终端通过命令plt.style.available查看若要使用这些样式,可在生成图表的代码前加入以下代码行若想让程序自动把图表保存在文件中,可将plt.show()替换为plt.savefig()

2023-04-09 21:21:59 305 1

原创 码图代码-

码图上一些C语言练习题目的代码

2023-04-09 10:30:36 45 1

原创 Python思维导图

自学Python时的笔记,希望大佬们多多指教

2023-04-09 10:17:25 61 1

python基础语法思维导图

自学python基础语法时笔记,参考书籍《Python编程 从入门到实践》,编程小白,希望大佬多多指教

2023-04-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除