- 博客(46)
- 收藏
- 关注
翻译 理解长短期记忆LSTM(翻译)
理解长短期记忆LSTMRNN博客链接:Understanding LSTM Networks – colah’s blog人类不会每时每刻都从头开始思考。当你阅读这篇文章时,你根据你对以前单词的理解来理解每个单词。你不会扔掉一切,重新开始从头开始思考。你的想法具有持续性。传统的神经网络无法做到这一点,这似乎是一个主要缺点(在之前的全连接神经网络当中,我们是将评论中所有的的单词转换成一个张量,再全部丢进神经网络)。例如,假设您要对电影中每个时刻正在发生的事件类型进行分类。对于传统的神经网络而言,很难学
2022-04-21 19:44:12 391
原创 使用Glove词嵌入对IMDB数据集进行二分类
IMDB Dataset of 50K Movie Reviews1、从文件中读取数据data_path = '/kaggle/input/imdb-dataset-of-50k-movie-reviews/IMDB Dataset.csv'#从文件中读取数据import pandas as pdimdb_data=pd.read_csv(data_path)#输出数据的shape以及前10个数据print(imdb_data.shape)imdb_data.head(10)需要
2022-04-17 14:50:53 2586 2
原创 [Python深度学习]kaggle猫狗大战
1、kaggle链接2、在此处新建一个notebook(和Jupyter Notebook类似)在右上角可以看到猫狗大战所需要用到的数据集3、首先将数据集进行解压(为避免切换到错误的目录下执行下列代码,这里采用的是绝对路径)train_path = '/kaggle/input/dogs-vs-cats/train.zip'test_path = '/kaggle/input/dogs-vs-cats/test1.zip'# save all files to kaggle/files/
2021-12-21 11:24:49 4306 1
原创 利用pandas求神经网络中二分类的混淆矩阵
(test_data, test_labels) 分别为测试集的数据和标签1、利用神经网络来进行预测(假设当前的神经网络是network)prediction = network.predict(test_dara)2、得到的prediction是一个(samples_count, 1)的Numpy数组,我们将它转换为一个(samples,_count)的数组prediction = [(int) ((prediction[i][0] + 0.5) / 1.0) for i in range(le
2021-12-14 18:23:02 2215
原创 C++线程同步
上述示例中共创建了100线程,其中一半执行thread_inc函数中的代码,另一半执行thread_des综上所述,多个线程访问同一变量可能会导致一系列问题,需要通过使用同步措施来避免这些问题的发生。常用的同步措施包括互斥锁、条件变量、信号量等,可以有效地避免多线程访问同一变量导致的问题。上述代码的问题如下:2 个线程正在同时访问全局变量 num任何内存空间,只要被同时访问,都有可能发生问题。因此,线程访问变量 num 时应该阻止其他线程访问,直到线程 1 运算完成。
2023-09-07 16:19:35 322
原创 C++中的条件变量pthread_cond
条件变量(pthread_cond)是 C++ 多线程编程中的一种同步机制。它通常与互斥量(pthread_mutex)结合使用,用于实现线程间的协调与同步。条件变量通常与互斥量一起使用。一个线程在等待某个条件时,它会先释放互斥量,然后进入等待状态。当另一个线程满足了这个条件,它会通过发送信号或广播信号的方式通知等待的线程,使得它从等待状态中醒来并重新获得互斥量,然后继续执行。条件变量和互斥量在 C++ 多线程编程中经常一起使用,主要是为了。
2023-05-05 22:34:54 1902 1
原创 Essential C++Notes -指针
指针实际上就是地址,&取地址操作,提领(取值)一个未指向任何对象的指针,其地址值为0,称为null空指针。利用vector*来访问不同的vector。
2023-03-31 15:57:15 197
原创 指针的用法和注意事项(三)
例如,可以将一个整数转换为一个指向该整数所表示的地址的指针。和引用,避免手动分配和释放内存,以及在操作指针之前检查指针是否为空。同时,应该尽可能避免进行指针运算和类型转换等操作,以保证程序的正确性和稳定性。在这些示例中,我们声明了一个指向不同类型的指针,并使用特定的值将它们初始化。因此,虽然OOP确实强调在运行时进行决策,但这并不是唯一的区别,OOP和PP之间还存在其他许多差异。都是8,变量存储地址本身的长度一致,只是变量指向的数据类型一个是。,这是因为在c和c++内部使用的是指针来处理数组。
2023-03-31 14:46:45 399
原创 指针的用法和注意事项(二)
*函数指针本质是一个指针变量,只不过这个指针指向一个函数。**函数指针即指向函数的指针。我们知道所有的函数最终的编译都生成代码段,每个函数的都只是代码段中一部分而已,在每个函数在代码段中都有其调用的起始地址与结束地址,因此我们可以用指针变量指向函数的在代码段中的起始地址。int main()//声明一个函数指针,返回值为int型 函数名为fun 参数为(int, int)fun = fun1;// ok// ok 两种写法均可以fun = fun2;// error。
2023-03-31 14:44:06 596
原创 TCP的三次握手和四次挥手
三次握手是 TCP 连接的建立过程。在握手之前,主动打开连接的客户端结束 CLOSE 阶段,被动打开的服务器也结束 CLOSE 阶段,并进入 LISTEN 阶段。随后进入三次握手阶段:② 服务器接收到客户端发来的 SYN 包后,对该包进行确认后结束 LISTEN 阶段,并返回一段 TCP 报文,其中:标志位为 SYN = 1 和 ACK = 1,表示确认客户端的报文 seq 序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接;序号为 Seq = y 随机;
2023-03-22 15:14:15 497
原创 指针的用法和注意事项(一)
为了避免这些问题,程序员应该尽可能地使用智能指针和引用,避免手动分配和释放内存,以及在操作指针之前检查指针是否为空。例如,可以将一个整数转换为一个指向该整数所表示的地址的指针。在这些示例中,我们声明了一个指向不同类型的指针,并使用特定的值将它们初始化。因此,虽然OOP确实强调在运行时进行决策,但这并不是唯一的区别,OOP和PP之间还存在其他许多差异。对于指针而言,指针变量+1后,其增加的值等于指向的类型占用的字节数。都是8,变量存储地址本身的长度一致,只是变量指向的数据类型一个是。
2023-03-21 16:47:21 284
原创 每次读取一行字符串输入
现在程序可以正确的运行,使用getline和get时,如果没有得到正确的输入,可能是没有处理输入队列中的换行符,导致getline() 、get()以为下一个是空行,而提前结束,由于第一次调用后,换行符将留在输入队列中,因此第二次调用cin.get()看到的第一个字符便是换行符,所以get()认为已经到达行尾,而没有大仙人和可读的程序。同样是因为cin.getline()看到输入队列中的换行符之后,认为下一个是空行,需要利用cn.get()来处理输出队列中的换行符。在地址还未输入之前程序就已经结束了。
2023-03-17 11:12:19 178
原创 CSP 202206-2
,因此无法直接进行比较。因此,如果需要使用vector类型作为unordered_map的键类型,可以自定义哈希函数和相等运算符。但是这需要花费一定的时间和精力,并且需要确保自定义的哈希函数和相等运算符能够正确地处理vector类型的键。
2023-03-05 22:20:49 228
原创 C++面向对象
*从存储空间的角度考虑:**构造函数是在实例化对象的时候进行调用,如果此时将构造函数定义成虚函数,需要通过访问该对象所在的内存空间才能进行虚函数的调用(因为需要通过指向虚函数表的指针调用虚函数表,虽然虚函数表在编译时就有了,但是没有虚函数的指针,虚函数的指针只有在创建了对象才有),但是此时该对象还未创建,便无法进行虚函数的调用。所以构造函数不能定义成虚函数。**从使用的角度考虑:**虚函数是基类的指针指向派生类的对象时,通过该指针实现对派生类的虚函数的调用,构造函数是在创建对象时自动调用的。
2023-02-13 17:11:13 4273
原创 挑战程序设计 第三章笔记
单调性:假设最大间隔为d,d越大在n个牛舍里面可以放置的牛的数量越少,反之可以放置的牛的数量越多。:n个房子,m头牛,房子有一个横坐标,问将m头牛塞进房子,每两头牛之间的最大间隔是多少。单调性,对于单位重量的价值x而言,x越大满足的物品个数越少,反之满足的物品数量越少。N条绳子,分成K段,每条绳子的长度是Li,每条绳子最长的长度是多少,保留两位小数。单调性:绳子越长,可以分成的段数越少,反之可以分成的段数越多。,对物品的单位重量的价值进行排序,从高到低选取k个。,从中选出k个物品使单位重量的价值最大。
2023-02-12 19:06:54 67
原创 # 算法库 | C++魔术师般的STL算法
对于所有渴望在竞争激烈的编程中出类拔萃的人来说,如果不知道STL能提供什么,只知道STL容器的知识是没有用的。STL有一个算法的海洋,对于所有< algorithm >库函数。请参考这里。在竞争性编程中,一些最常用的向量算法和最有用的算法被提到如下。
2022-11-25 21:00:37 292
原创 C++中的友元类和函数
一个 friend 类可以访问它被声明为 friend 的其他类的私有和受保护成员。。例如,可以允许 LinkedList 类访问 Node.js 的私有成员。友元类可以访问它在其中被声明为友元的类的私有成员和受保护成员。
2022-11-23 21:40:45 266
原创 数组的最少交换次数
排好序之后的数组应该是n个自环,数组交换的次数=元素的个数n - 未排序数组中环的个数k。将环变成自环需要的交换次数就是:cycle_size-1。排序之前的数组: 4 3 2 1。排好序之后的数组:1 2 3 4。
2022-11-20 10:25:24 845
原创 907. 区间覆盖
907. 区间覆盖思路:贪心算法,对于当前的起点st,我们每次从可以覆盖当前起点st的所有区间中选取右端点值最大的区间(这样所需要的区间数最少)
2022-05-31 10:54:36 111
转载 4. 寻找两个正序数组的中位数(笔记)
左边元素SIZEleft个数是确定的,是(m+n+1) / 2个元素,所以只需要在一个数组中确定分隔线的位置,通过(m+n+1)/2,就可以计算出另外一个数组中分割线的位置对于第一个数组而言,分隔线右边的数6<第二个数组中分隔线右边的数8这是由于第一个分割线右边的数太小导致的,所以让第一个分割线右移当两个数组的长度不相等时,可能会出现两种极端的情况,第一个数组中的元素全部在分隔线的左边或者全部在分隔线的右边为了方便,在这里将i、j当做
2022-04-13 10:32:19 163
原创 Bellman-Ford算法求带负权图
853. 有边数限制的最短路#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 510, M = 10010, INF = 0x3f3f3f3f;struct Edge{ int u, v, w;}edges[M];int n, m, k, dist[N], backup[N];void BellmanFord(.
2022-04-07 22:18:25 118
原创 图的拓扑排序
一、知识点二、例题1、AcWing 848. 有向图的拓扑序列 #include <iostream>#include <vector>#include <queue>using namespace std;const int N = 1e5+10;int n, m, indegree[N] = {0}; //indegree[i]表示顶点i的入度vector<int> Adj[N]; //使用邻接表来存储有向图vector<
2022-04-07 16:45:01 239
原创 Dijkstra算法进阶
Dijkstra算法题目中可能有两条或者以上可以达到最短距离的路径,题目中会给一个第二标尺(第一标尺是距离),要求在所有最短路径中寻找第二标尺最优的路径。常见的第二标尺:(1)给每条边在增加一个边权(比如说花费),然后要求在最短路径有多条时,要求路径的花费之和最小(如果边权是其他含义,那么也可以是最大)(2)给每个顶点增加一个点权(例如每个曾是能收集到的物资),然后在最短路径有多条时,要求路径上结点的权值之和最大(最小)(3)直接问有多少条最短路径1、新增边权cost[u][v]表示u->
2022-04-07 14:51:42 147
原创 算法题:回溯
搜索和回溯(来源于Leetcode书籍)1、46全排列class Solution {private: int n; unordered_map<int, bool> hashTable; vector<int> nums, temp; vector<vector<int>> res;public: vector<vector<int>> permute(vector<int&
2022-04-06 22:37:34 66
原创 无向图中连通分量的个数
1、DFS每调用一次DFS(u),就能遍历u所在的连通分量class Solution {private: static const int N = 2010; int n, G[N][N]; bool visited[N] = {false};public: int countComponents(int n, vector<vector<int>>& edges) { this->n = n;
2022-04-05 19:56:16 1729
原创 深度优先搜索DFS
这里写自定义目录标题**深度优先搜索的思想:一条路走到底,不撞南墙不回头**![在这里插入图片描述](https://img-blog.csdnimg.cn/795928ef488d4e0c8c92f7a244a950a8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aaC6aOO55qE5bCR5bm0LQ==,size_18,color_FFFFFF,t_70,g_se,x_161、树的深
2022-04-05 19:38:04 443
原创 N皇后三种解法
N皇后1、DFSclass Solution {private: int n; static const int N = 20; int row[N] = {0}, col[N] = {0}, dg[2*N] = {0}, udg[2*N] = {0}; int mat[N][N]; vector<vector<string>> res;public: vector<vector<string>> s
2022-04-04 19:53:52 451
原创 质数和质因子分解
一、质数质数不能被除1和本身之外的任何数整除,否则称为合数。2是最小的质数,1既不是质数又不是合数1、质数判断bool isPrime(int n){ for (int i = 2; i <= n/i; i++){ //i*i可能会导致int型溢出 if (n%i == 0) return false; } return true; }2、使用埃式筛法选取质数,来选取1-n之间的质数vect
2022-04-01 21:33:55 429
原创 试题D路径
分析:题目要求算1-2021的最短路径,结点之间的边权是给定的,所以可以通过Dijkstra算法来求最短路径先解决(i,j)之间的权值,i、j之间的最小公倍数记为d,d可以通过求i、j之间的最大公约数gcd(i,j)让i*j/gcd(i,j)求得1、构建邻接矩阵int n = 2021;for(int i = 1; i <= n; i++){ for (int j = i+1; j < i+22; j++){//i和j之间的绝对值<=21时,i和j之间才有边 G[i][j].
2022-03-31 19:34:15 153
原创 Leetcode 743网络延迟时间
743网络延迟时间不难发现,实际上求网络的延迟时间就是求节点k到其他各个节点的最短路径,在最短路径中找到一个最大值,就可以得到网络的延迟时间。求一个顶点到其他顶点的最短路径,常用的一种算法的Dijkstra算法算法的主要思想如下:下面通过一个具体的例子来看Dijsktra算法的实际过程:二、朴素版Dijkstra算法1、使用邻接矩阵来存储图class Solution {private: static const int N = 110, INF = 0
2022-03-31 18:54:48 1320
原创 将P进制数转换为Q进制数
int P, Q;int PtoTen(int x){ int y = 0, product = 1; //product会在循环中不断累乘P,得到1、P、P^2....P^(n-1) while(x){ y += (x%10) * product; //a[i] * P(n-i) x /= 10; product *= P; } return y;} vector<int> TentoQ(int y){ vector<int> z; if .
2022-03-31 13:48:59 312
原创 6.8 pair的常用解法详解
pair将两个元素绑定在一起合成一个元素1、pair的定义#include using namespace std;pair<typename1, typename2> name;pari初始化1)、pair<string, int> p(“hello word”, 1);2)、make_pair(“hello word”, 1)2、pair中元素的访问pair中只有两个元素,分别是first和second,只需按照正常接结构体的方式访问即可3、pair常用函
2022-02-21 22:21:50 216
原创 6.7 stack的常用解法详解
stack,翻译为栈,是STL中一个后进先出的容器1、stack的定义#include using namespace std;stack name;2、stack容器内元素的访问由于stack本身就是一种后进先出的数据结构,在STL的stack中只能通过top()来访问栈顶元素3、stack常用函数实例解析(1)push()push(x),将x入栈,时间复杂度O(1)(2)top()top()访问栈顶元素,时间复杂度O(1)(3)pop()pop()可以弹出栈顶元素,时间复杂度
2022-02-21 22:20:01 179
原创 6.4 map的常用用法详解
map,翻译为映射,也是常用的STL容器。map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)#include <map>using namespace std;1、map的定义map<typename1, typename2> mp; 键的类型 值的类型map<string, int> mp;map<set<int>, int> mp;2、map容器内元素的访问(1)、通过下标进行访问
2022-02-21 22:16:38 289
原创 6.3 String的常用解法详解
在C语言中,使用char[]数组来存储字符串,但操作起来比较麻烦C++中的STL加入了String类#include <string> 注意和#inlucde <cstring>不同using namespace std;1、string的定义string str;string str = "abcdefg";2、string中内容的访问(1)、通过下标进行访问for (int i = 0; i < str.size(); i++) cout<&l
2022-02-21 15:33:04 309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人