- 博客(77)
- 收藏
- 关注
原创 【SpringBoot——Error记录】
java: 无法访问org.springframework.boot.SpringApplication错误的类文件: /C:/Users/11848/.m2/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar!类文件具有错误的版本 61.0, 应为 52.0请删除该文件或确保该文件位于正确的类路径子目录中。
2023-07-09 20:12:23 496
原创 【LSTM长短期记忆网络】
0. 从RNN说起循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。1. 普通RNN先简单介绍一下一般的RNN。其主要形式如下图所示(图片均来自台大李宏毅教授的PPT):这里:xxx 为当前状态下数据的输入,yyy 为当前节点状态下的输出。 hhh 表示接收到的上一个节点的输入, 而 h′h'h′ 为
2022-04-05 22:10:45 347
原创 【剑指 Offer 40. 最小的k个数】
快速排序题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]解题思路本题使用排序算法解决最直观,对数组 arr 执行排序,再返回前 k 个元素即可。使用任意排序算法皆可,可以直接调用排序方法sort(但是建议不要采取这种投机..
2022-04-05 19:30:43 109
原创 【剑指 Offer 39. 数组中出现次数超过一半的数字】
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2解题思路思路一:哈希表代码class Solution { public int majorityElement(int[] nums) { Map<Integer, Integer> hashMap = new HashMap<Integ
2022-04-04 11:25:41 89
原创 【剑指 Offer 37. 序列化二叉树】
层序遍历BFS题目描述请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。输入:root = [1,2,3,null,null,4,5]输出:..
2022-04-03 11:21:07 106
原创 【剑指 Offer 38. 字符串的排列】
排列 剪枝 字符串题目描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]解题思路:对于一个长度为 nn 的字符串(假设字符互不重复),其排列方案数共有:n×(n−1)×(n−2)…×2×1n \times (n-1) \times (n-2) … \times 2 \times 1n×(n−1)×(n−2)…..
2022-04-03 11:11:08 105
转载 【无监督学习和有监督学习的区别】
1、有监督学习:通过已有的训练样本去训练得到一个最优模型,再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现预测和分类的目的,也就具有了对未知数据进行预测和分类的能力。就如有标准答案的练习题,然后再去考试,相比没有答案的练习题然后去考试准确率更高。又如我们小的时候不知道牛和鸟是否属于一类,但当我们随着长大各种知识不断输入,我们脑中的模型越来越准确,判断动物也越来越准确。有监督学习可分为回归和分类。回归:即给出一堆自变量X和因变量Y,拟合出一个函数,这些自变量X就是特征向量,因变量Y
2022-03-31 21:51:54 11980
原创 【剑指 Offer 36. 二叉搜索树与双向链表】
中序遍历 有序循环双向链表题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作..
2022-03-31 10:30:27 123
原创 【相似性度量中用到的一些距离函数】
1.欧氏距离(欧几里得距离 Euclidean Distance)最常见的距离度量,即欧几里得距离。它是一种距离度量,直观解释为连接两点的线段的长度。公式:优点低维数据并且向量的大小对于测量很重要时,欧几里德距离效果很好。缺点虽然它是一种常见的距离度量,但欧几里德距离不是尺度不变的,这意味着计算的距离可能会根据要素的单位而发生偏斜。通常,在使用此距离度量之前需要对数据进行归一化。此外,随着数据维度的增加,欧几里得距离变得越来越没有用,另外高维下距离非常不直观。2.余弦相似度 Cosine
2022-03-30 21:25:51 1953 1
原创 【KL散度原理与实现】
1. 定义KL散度( Kullback–Leibler divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。2. 特点它是非对称的,这意味着D(P||Q) ≠ D(Q||P)。3. 意义特别的,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。KL散度在信息论中有自己明确的物理意义,它是用来度量使用基于Q分布的编码来编码来自P分布的样本平均所需的额外的Bit个数。而其
2022-03-30 15:51:43 1719
原创 【常见的损失函数总结】
损失函数的定义损失函数,又叫目标函数,是编译一个神经网络模型必须的两个要素之一。另一个必不可少的要素是优化器。损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。损失Loss必须是标量,因为向量无法比较大小(向量本身需要通过范数等标量来比较)。损失函数一般分为4种,平方损失函数,对数损失函数
2022-03-30 15:28:18 27910
原创 【剑指 Offer 35. 复杂链表的复制】
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = []输出:[]解释:给定的链表为空(空指针),因此返回 null。解题思路复制
2022-03-30 10:59:38 129
原创 【剑指 Offer 34. 二叉树中和为某一值的路径】
二叉树搜索 递归、回溯题目描述给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示例 3..
2022-03-29 10:45:45 101
原创 【学习工具与技巧】
1. 清华源下载包$ pip install gensim -i https://pypi.tuna.tsinghua.edu.cn/simple注:在pip的基础上加上*-i https://pypi.tuna.tsinghua.edu.cn/simple*2. Neo4j图数据库Neo4j是图数据库,即数据不是保存在表或集合中,而是保存为节点以及节点之间的关系。Neo4j数据主要由节点、边、属性构成。具体见【Neo4j的简单搭建与使用】和【python操作Neo4j】3.Graphviz
2022-03-28 16:37:20 796
原创 【邻接矩阵生成有向图(带权重)】
效果图代码import networkx as nximport matplotlib.pyplot as plt#二维数组生成有向图/无向图class Graph_Matrix: """ Adjacency Matrix """ def __init__(self, vertices=[], matrix=[]): """ :param vertices:a dict with vertex id and index of mat
2022-03-28 16:20:56 3233 1
原创 【SparkSQL小文件的处理方式】
SparkSQL小文件的处理方式(选第三种方式即可解决)自适应执行社区在Spark2.3版本之后的AdaptiveExecute特性之中就能很好的解决Partition个数过多导致小文件过多的问题. 通过动态的评估Shuffle输入的个数(通过设置spark.sql.adaptive.shuffle.targetPostShuffleInputSize实现), 可以聚合多个Task任务, 减少Reduce的个数 。使用方式:set spark.sql.adaptive.enabled=truese
2022-03-28 16:07:32 3411 1
原创 【SSH学习】
什么是SSH?简单说,SSH是一种网络协议(安全外壳协议),用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。SSH之所以能够保证安全,原因在于它采用了公钥加密。整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。SSH基本用法1. SSH远程登陆
2022-03-28 15:56:28 1439
原创 【剑指 Offer 33. 二叉搜索树的后序遍历序列】
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true解题思路后序遍历定义: [ 左子树 | 右子树 | 根节点 ] ,即遍历顺序为 “左、右、根” 。二叉搜索树定
2022-03-28 11:38:01 1477
原创 【剑指 Offer 32 - III. 从上到下打印二叉树 III】
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]代码class Solution { public List<List<Integer>>
2022-03-27 21:44:07 81
原创 【ResNet残差网络解析】
深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件。论文:Deep Residual Learning for Image Recognition思想作者根据输入将层表示为学习残差函数。实验表明,残差网络更容易优化,并且能够通过增加相当的深度来提高准确率。核心是解决了增加深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。深度网络的退化问题1️⃣ 网络的深度为什么重要?因为CNN能够提取low/mid/
2022-03-27 18:00:08 4536
原创 【剑指 Offer 32 - II. 从上到下打印二叉树 II】
题目描述从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题思路queue只保存每一层的树的节点,所以循环遍历queue的大小就可以依次输出每层的节点了.算法流程:特例处理: 当根节点为空,则返回空列表 [] ;初始化: 打印结果
2022-03-27 10:52:47 127
原创 【梯度消失和梯度爆炸问题详解】
1.为什么使用梯度下降来优化神经网络参数?目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 (非线性来自于非线性激活函数),因此整个深度网络可以视为是一个复合的非线性多元函数。我们最终的目的是希望这个非线性函数很好的完成输入到输出之间的映射,也就是找到让损失函数取得极小值。所以最终的问题就变成了一个寻找函数最小值的问题,在数学上,
2022-03-26 20:56:37 2375
原创 【 面试题32 - I. 从上到下打印二叉树】
广度优先搜素 队列题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],返回:[3,9,20,15,7]解题思路使用队列,出队一个元素就把此元素的左右节点加入队列中,最后输出队列元素。题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。BFS 通常借助 队列 的先入先出特性来实现。算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ..
2022-03-26 12:57:59 122
原创 【Neo4j的简单搭建与使用】
Neo4j简介Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在 网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。作者:就天边链接:https://www.jianshu.com/p/2fb8c8d103da来源:简书著作权归作者所有
2022-03-25 20:26:00 3169
原创 【剑指 Offer 31. 栈的压入、弹出序列】
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), pu
2022-03-25 10:39:08 64
原创 【Attention机制讲解】
Attention机制讲解attention是一种能让模型对重要信息重点关注并充分学习吸收的技术,它不算是一个完整的模型,应当是一种技术,能够作用于任何序列模型中。Seq2Seq在开始讲解Attention之前,我们先简单回顾一下Seq2Seq模型,传统的机器翻译基本都是基于Seq2Seq模型来做的,该模型分为encoder层与decoder层,并均为RNN或RNN的变体构成,如下图所示:该模型对于短文本的翻译来说效果很好,但是其也存在一定的缺点,如果文本稍长一些,就很容易丢失文本的一些信息,为了
2022-03-24 15:15:18 7136 1
原创 【剑指 Offer 30. 包含min函数的栈】
辅助栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3); minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --&..
2022-03-23 21:29:56 72
原创 【常用的激活函数】
一、什么是激活函数?在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function,又称激励函数,如下图所示:二、激活函数的作用(为什么需要激活函数)?如果不用激励函数(其实相当于激励函数是f(x)=x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上
2022-03-23 11:23:39 6508
原创 【剑指 Offer 26. 树的子结构】
题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:给定的树 B:返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:true解题思路看到题目的第一反应是我们要从三部分判断B是不是A的子结构:
2022-03-22 21:14:14 64
原创 【L1正则化与L2正则化详解及为什么L1和L2正则化可防止过拟合】
一、为什么L1和L2正则化可防止过拟合?线性模型常用来处理回归和分类任务,为了防止模型处于过拟合状态,需要用L1正则化和L2正则化降低模型的复杂度,很多线性回归模型正则化的文章会提到L1是通过稀疏参数(减少参数的数量)来降低复杂度,L2是通过减小参数值的大小来降低复杂度。下面我们从梯度角度进行分析。1、L1正则化L1正则化的损失函数为:上式可知,当w大于0时,更新的参数w变小;当w小于0时,更新的参数w变大;所以,L1正则化容易使参数变为0,即特征稀疏化。2、L2正则化L2正则化的损失函数为:
2022-03-22 10:15:24 2803
原创 【防止过拟合的方法】
深度学习有哪些防止过拟合的方法?使用正则化;数据增强;提前终止;加bn层;dropout;参数绑定与参数共享;辅助分类节点;bagging方法;
2022-03-21 20:13:08 4123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人