自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 踩坑:一边循环一边删除是不可取的

踩坑:一边循环一边删除是不可取的

2022-09-22 14:47:03 373 1

原创 记一次踩坑:循环里有递归的时候不要轻易用临时变量存放数组元素或字符串元素

记一次踩坑:循环里有递归的时候不要轻易用临时变量存放数组元素或字符串元素

2022-08-21 13:12:24 216

原创 python是动态语言,变量不需要预定义

python是动态语言,变量不需要预定义

2022-08-19 12:11:29 1441

原创 关于c++的memset函数的踩坑避雷

memset函数的避雷

2022-06-15 20:25:32 594

原创 双调查找:数组先递增后递减

以极值点为分界线分为三段:mid在极值点,mid在极值点左侧,mid在极值点右侧,分段后二分查找

2022-06-15 12:43:11 549

原创 计算机网络之域名解析

域名解析的解析顺序

2022-06-08 17:13:54 348

原创 xshell7远程连接服务器,挂起进程一直维持程序的运行

xshell7远程连接服务器,挂起进程一直维持程序的运行

2022-06-07 23:54:41 324

原创 c++用归并排序计算右侧小于当前元素个数

c++用归并排序计算右侧小于当前元素个数

2022-06-05 20:53:02 124

原创 用递归和循环两种方法解决华为4月20日机试第一题(100分)

华为2022年4月20日机试第一题

2022-06-05 17:27:08 136

原创 深度学习的几种优化方法

开门见山,本篇博客涉及到的优化方法包括有:SGD,SGD with momentum,Adagrad,RMSProp,Adam这五种。文中出现的一些符号的含义:模型在t时刻的参数 or :在处的梯度,用于计算:从第0步累积到第t步的动量,用于计算先介绍最基础的两种优化方法:SGD和SGD with momentum一、SGD until每一个时间步,都要往梯度方向的反方向走一步二、SGD with momentum多了一个动量m,可以避免优化器...

2022-05-31 21:57:37 1293

原创 用维特比算法解决HMM中的隐状态推测问题

#假设又T个时刻,N个隐状态import numpy as npdef viterbi(A, B, pi, V, Q, obs): #Q为状态集合,obs为观测序列 T = len(obs) N = len(Q) #生成一个T行N列的矩阵作为dp表 dp = np.array([[0]*N]*T, dtype=np.float64) phi = np.array([[0]*N]*T, dtype=np.float64) #根据初始概率矩阵初始化.

2022-05-27 20:06:07 153

原创 判断一棵树是否为完全二叉树

问题:有一棵二叉树,给定它的根节点 root,请设计一个算法判断它是否是完全二叉树分析:因为要判断一棵树是否为完全二叉树,考虑用BFS算法,一层一层的去判断:1、如果一个节点有右子树但没有左子树,就返回false2、如果一个节点没有子树,而下一个节点又并非叶子节点,返回false代码:bool check(TreeNode* root){ bool leaf = false; queue<TreeNode*> q; q.push(root);

2022-05-27 16:36:37 102

原创 深度理解RNN的梯度消失和LSTM为什么能解决梯度消失

一、RNN的梯度消失有什么不同之处先说结论:RNN的梯度等于近距离梯度与远距离梯度的和,RNN的梯度消失是远距离梯度的消失,而近距离梯度不会消失,同时总的梯度不会消失,从而导致总的梯度由近距离梯度占主导。提到梯度消失,你肯定会说是因为网络层次太深,导致导数连乘项太多,所以梯度很小。这种回答适用于深度神经网络,但不适用于RNN。因为RNN的梯度是一个和!!而且RNN的是共享一套参数的!但我们在理解RNN的时候,经常喜欢把RNN按时间序列展开,可能会误解RNN是多套参数的,但其实是共用一套参数。

2022-05-25 23:20:15 1338

原创 BN的一些细节

BN的作用:避免梯度消失为什么BN能避免梯度消失:BN将原本的数据强制拉回均值为0,方差为1的正态分布,使得BN后的数据在经过sigmoid这类激活函数后不会落入饱和区,让数据更多的分布在激活函数的非饱和区,从而避免梯度消失。为什么BN还要学习gamma和beta参数?由于BN破坏了原始数据的分布,破坏了原始数据的特征分布,降低了原数据的拟合能力,为了抵消BN对原数据特征的影响,从而要学习这放缩和平移这两个参数...

2022-05-23 16:56:48 156

原创 二分思想递归解决寻找两个正序数组的中位数

两个数组一个长度为m,一个长度为n,总长度total=m+n,k=(total/2)。由于两个数组是有序的,所以我们只需要找到两个数组中的第k+1个元素(总长度为偶数的时候,还要找到第k个元素)。class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int total = nums1.size() +

2022-05-19 16:43:22 129

原创 用快速排序的思想解决 数组中第K个最大元素

用快速排序的思想解决 数组中第K个最大元素思路:题目限定使用快排思想,就直接舍弃用最小堆这种办法。第一种方法:直接进行一遍快排,然后取倒数第K个元素即可。第二种方法:是优化后的快排,因为我们只需要找到倒数第K个元素即可,因此没必要把全部元素都排一遍,所以在排序的时候如果发现当前快速排序所排序元素的下标等于n-K就终止排序即可!class Solution {public: int k; int findKthLargest(vector<int>& .

2022-05-19 09:21:08 377

原创 原地哈希这一大类问题的通解

这类问题在力扣上对应的题目为:41、缺失的第一个正数442、数组中重复的数据448、找到所有数组中消失的数字首先,这类题目在题干中就会有所提示:如442题中的“其中 nums 的所有整数都在范围 [1, n]”。448题中的“其中 nums[i] 在区间 [1, n] 内”。41题描述的比较隐晦,“请你找出其中没有出现的最小的正整数”。例题讲解,以442题为例讲解一下这类问题的原理:看完题目之后,首先会想到使用额外空间构建一个哈希表,在遍历数组时一旦发现该元素已经在哈希表中出

2022-05-14 22:11:20 172

原创 力扣208题:实现字典树Trie

用树枝表示字符,用节点记录截止符(判断一个单词是否结尾)class Trie { bool isEnd; Trie* next[26];public: Trie() { this->isEnd = false; memset(next, 0, sizeof(next)); } void insert(string word) { Trie* node = this; for(cha

2022-04-29 20:23:40 316

原创 力扣207题 课程表

实质上就是图的遍历,先要建图,然后对图进行深度优先的遍历,把dfs函数当成游离在图里的指针。class Solution {public: vector<bool> visited; vector<bool> onpath; bool hasCycle = false; vector<vector<int>> buildGraph(int numCourses, vector<vector<int>&g

2022-04-29 11:26:21 329

原创 力扣113.路经总和2深度优先算法回溯

class Solution {public: int sum=0; vector<vector<int>> ans; vector<int> track; void backtrack(TreeNode* root, int targetSum){ if(root==nullptr) return; sum+=root->val; /*不要剪枝,因为节点有负数 if.

2022-04-13 09:59:06 647

原创 C++手撸哈希双链表:LRU缓存

struct Node { int key; int val; Node* prev; Node* next; Node(int key, int val) { this->key = key; this->val = val; }};//以Node为节点构造双链表struct DoubleList { Node *head, *tail; int size; DoubleList() { head = new Node(0, 0); tail = n.

2022-04-07 12:59:52 1129

原创 题目:公司食堂 方法:优先队列

#include<iostream>#include<queue>#include<vector>using namespace std;vector<int> assignment(int T, int N, int M, string eatingPerson, string lineingPerson){ vector<int> ans(M); priority_queue<int, vector<i.

2022-03-28 20:18:21 418

原创 199.二叉树的右视图(递归万岁)

使用递归解决这道题目。需要注意的点:1、要先递归右子树,再递归左子树。2、要考虑二叉树的深度,防止左子树深度大于右子树深度这种情况class Solution {public: vector<int> ans; void dfs(TreeNode* root, int depth){ if(!root) return; if(depth == ans.size()){ ...

2022-03-11 10:09:16 1385

原创 力扣:蜡烛之间的盘子

使用了前缀和的知识,但除了前缀和之外,我觉得还有一处地方非常巧妙:用left数组和right数组存放蜡烛的位置,使得查询蜡烛位置非常的方便class Solution {public: vector<int> platesBetweenCandles(string s, vector<vector<int>>& queries) { int n = s.size(); vector<int> preSum

2022-03-08 09:41:29 118

原创 搜索二维矩阵,使用了两次二分查找

代码中使用了c++11中匿名函数的新特性,和auto关键字,大大减少了代码量:class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { auto row = upper_bound(matrix.begin(), matrix.end(), target, [](int x, vector<int> &y){

2022-03-03 10:58:35 415

原创 将二叉搜索树变平衡

class Solution {public: //对二叉树进行递归 void helper(TreeNode* root, vector<int>& nums){ if(root==nullptr) return; helper(root->left, nums); nums.push_back(root->val); helper(root->right, nums); }.

2022-03-01 17:36:58 183

原创 建立一棵二叉树并对其进行中序遍历

#include <iostream>using namespace std;#include <vector>struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr.

2022-03-01 08:58:16 802

原创 Floyd判圈算法--判断链表中有没有圈

class Solution {public: bool hasCycle(ListNode *head) { if(head==NULL||head->next==NULL){ return false; } ListNode* slowNode = head; ListNode* fastNode = head->next; while(fastNode!=slowNode){.

2022-02-27 11:25:54 217

原创 仅仅反转字母(双指针)

class Solution {public: string reverseOnlyLetters(string s) { int n = s.size(); int left = 0; int right = n-1; while(left<right){ if(isalpha(s[left])&&isalpha(s[right])){ swap(s[l.

2022-02-23 08:23:36 363

原创 回文链表(用快慢指针)

class Solution {public: bool isPalindrome(ListNode* head) { if(head==nullptr){ return true; } ListNode* midNode = halfList(head); ListNode* endNote = reverseList(midNode); while(head!=nullptr){ .

2022-02-19 21:37:12 490

原创 骑士在棋盘上的概率(递归)

这道题使用递归思想虽然代码较简洁,但会出现大量的重复计算,但还是想把这种思路展示给大家:class Solution {public: //vector<int> dirs = {{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1}}; double knightProbability(int n, int k, int row, int column) { return (double)proce

2022-02-17 14:25:23 7673

原创 (使用栈)力扣:反转链表

class Solution {public: ListNode* reverseList(ListNode* head) { stack<ListNode*> s; while (head != nullptr){ s.push(head); head = head->next; } if (s.empty()){ return nullpt.

2022-02-13 15:47:34 235

原创 吴恩达机器学习线性回归作业

一、单变量线性回归:导入相关库:import numpy as npimport pandas as pdimport matplotlib.pyplot as plt读取csv数据文件并查看数据集的前五行f = pd.read_csv('work/ex1data1.txt', names=['Population', 'Profit'])f.head()可视化该数据集f.plot(kind='scatter', x='Population', y='Profit')..

2021-12-08 23:08:14 620

原创 paddle2.2.0:policy gradient算法实现

在前面的博客中,我们使用了DQN等算法训练了agent并得到了较高的分数。DQN中的神经网络是输出的动作Q值,然后通过哪个Q值更大,就采取相应的动作,可我们为什么不直接让神经网络输出动作(概率),一步到位呢。而Policy Gradient就可以一步到位。import paddleimport paddle.nn as nnimport paddle.nn.functional as Fimport parlimport numpy as npimport gymfrom ...

2021-12-02 10:27:44 1573 1

原创 paddle2.2.0:DQN算法训练cartpole游戏

LEARN_FREQ = 5MEMORY_SIZE = 20000MEMORY_WARMUP_SIZE = 200BATCH_SIZE = 32LEARNING_RATE = 0.001GAMMA = 0.99class Model(parl.Model): def __init__(self, obs_dim, act_dim): super().__init__() self.fc1 = nn.Linear(obs_dim, 128) .

2021-11-29 23:21:28 976 2

原创 强化学习(Sarsa与q-learning)代码示例

一、Sarsa算法Sarsa算法是on-policy的,行为策略是什么,目标策略就是什么,即优化的是他实际执行的策略,所以使用Sarsa算法的agent在探索时显得有点“胆小”。上Sarsa的代码:import timeimport numpy as npimport gymclass SarsaAgent(object): def __init__(self, obs_n, act_n, e_greed=0.1, gamma=0.9, learning_rat...

2021-11-24 10:47:52 2273 3

原创 储备池计算小结

ESN和LSM提出的背景RNN(Recurrent Neural Network),被证明具有很好的函数逼近能力和记忆能力,但训练起来却十分困难。Buonomano 在早期工作中提出了用具有暂塑性(short-term plasticity、dynamic synapses)的脉冲神经元(spiking neurons)构成的随机网络,他发现暂塑性使得循环网络具有更慢的动态:保持随机连接的循环网络不变,只需要训练一个简单的对网络输出特征做处理的分类/回归模型。上述训练思想分别被Jaeger 用在

2021-11-17 10:58:20 6853 1

原创 paddle作业2-4

题1:#作业2-4import paddlefrom paddle.nn import Conv2D, Linear, MaxPool2Dimport numpy as npimport paddle.nn.functional as Fclass Net(paddle.nn.Layer): def __init__(self): super().__init__() self.conv1 = Conv2D(in_channels=1, out_cha

2021-11-12 21:39:37 2740

原创 paddle.vision.transforms.to_tensor的功能

paddle.vision.transforms.to_tensor与paddle.to_tensor两者的作用完全不同,paddle.to_tensor只是将其他数据类型转化为tensor类型,便于构建计算图。 而paddle.vision.transforms.to_tensor是将PIL.Image或numpy.ndarray转换成paddle.Tensor。将形状为 (H x W x C)的输入数据PIL.Image或numpy.ndarray转...

2021-10-29 15:21:08 1514

原创 python中“\”的用处

如图所示,“\”有着“续行”的作用

2021-10-26 21:27:42 2427

空空如也

空空如也

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

TA关注的人

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