<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_43227036的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_43227036</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_43227036]]></copyright><item><title><![CDATA[机器学习梯度检验笔记]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/124770596</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/124770596</guid><author>qq_43227036</author><pubDate>Sat, 14 May 2022 17:46:56 +0800</pubDate><description><![CDATA[梯度的数值逼近
  在实施dropout时，由于无法保证dropout是否正确，需要梯度检验来确保网络的正确。具体步骤是我们先通过双边差分计算出一个近似的梯度，和代码计算出的梯度比较，如果二者差的绝对值小于一个阈值，就可以认定计算正确。设函数f如下图所示：

  对点θ\thetaθ加减ε\varepsilonε，其中ε\varepsilonε越小越好，由拉格朗日中值定理得：
f′(θ)=f(θ+ε)−f(θ−ε)2ε=3.000
f^{'}(\theta) = \frac{f(\theta + \vare]]></description><category></category></item><item><title><![CDATA[机器学习梯度消失与梯度爆炸笔记]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/124768309</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/124768309</guid><author>qq_43227036</author><pubDate>Sat, 14 May 2022 16:40:30 +0800</pubDate><description><![CDATA[梯度消失与梯度爆炸
假设当前有如下的神经网络，

设激活函数为g(z)=zg(z) = zg(z)=z，偏置值b为b[l]=0b^{[l]} = 0b[l]=0，y^\hat{y}y^​取值如下:
y^=W[l]W[l−1]W[l−2].....W[3]W[2]W[1]X
\hat{y} = W^{[l]}W^{[l-1]}W^{[l-2]}.....W^{[3]}W^{[2]}W^{[1]}X
y^​=W[l]W[l−1]W[l−2].....W[3]W[2]W[1]X
设每一层的W都是比1大一点点，如下]]></description><category></category></item><item><title><![CDATA[机器学习标准化化输入笔记]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/124767928</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/124767928</guid><author>qq_43227036</author><pubDate>Sat, 14 May 2022 14:49:19 +0800</pubDate><description><![CDATA[归一化输入
在训练神经网络中，一个加速训练的方法就是标准化输入，标准化输入总共需要两个步骤：

零均值化，过程如下：
μ=1m∑i=1mx(i)
\mu = \frac{1}{m}\sum_{i=1}{m}x^{(i)}
μ=m1​i=1∑​mx(i)
x=x−μ
x=x-\mu
x=x−μ
此时样本的均值为0。
归一化方差，公式如下
σ2=1m∑i=1mx(i)∗∗2
\sigma ^ {2} = \frac{1}{m}\sum_{i=1}{m}x^{(i)}**2
σ2=m1​i=1∑​mx(i)∗∗2]]></description><category></category></item><item><title><![CDATA[深度学习Dropout笔记]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/124764185</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/124764185</guid><author>qq_43227036</author><pubDate>Sat, 14 May 2022 12:26:28 +0800</pubDate><description><![CDATA[Dropout含义
  dropout含义就是在一个神经网络中，每个隐藏层都有一个概率，是用来判断节点保留或者消除的，将一个大的神经网络通过消除节点变为一个小的神经网络，防止过拟合的发生。如下图所示，每个隐藏层节点是否保留的概率都是0.5。

  对一个样本训练时，消除一些节点后如下：

  其他样本训练时同样是通过概率判断是否消除每个节点。
Dropout实施方法–Inverted dropout（反向随机是活）
  假设当前是一个三层的神经网络l=3，keep-prob = 0.8。
  首先初始化一个]]></description><category></category></item><item><title><![CDATA[机器学习正则化]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/124733941</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/124733941</guid><author>qq_43227036</author><pubDate>Thu, 12 May 2022 17:27:38 +0800</pubDate><description><![CDATA[正则化作用
在机器学习中，通常会在损失函数后加入正则项来防止模型过拟合。
L1正则化
  L1正则化公式为：

  L为损失函数，W为网络权重，b为偏置值，m为样本数量，n_x为网络层数，λ\lambdaλ是超参数。
L2正则化
  L2正则化公式为：

  L为损失函数，W为网络权重，b为偏置值，m为样本数量，n_x为网络层数，λ\lambdaλ是超参数。
L2正则化含义
  在对W进行梯度下降时，对于第l层的参数W[l]W^{[l]}W[l]更新过程如下：
  先计算w[l]w^{[l]}w[l]的梯度]]></description><category></category></item><item><title><![CDATA[深度学习中偏差和方差]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/124731872</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/124731872</guid><author>qq_43227036</author><pubDate>Thu, 12 May 2022 15:42:10 +0800</pubDate><description><![CDATA[本文部分内容摘自https://blog.youkuaiyun.com/wuzqChom/article/details/75091612

从上面可以看出来均方误差由方差和偏差构成，那偏差和方差的高低又代表什么呢？
偏差与方差在训练结果中的表现

  如上图所示，高偏差代表训练结果欠拟合。而高方差代表训练结果为过拟合。偏差描述的是算法的预测的平均值和真实值的关系（可以想象成算法的拟合能力如何），而方差描述的是同一个算法在不同数据集上的预测值和所有数据集上的平均预测值之间的关系（可以想象成算法的稳定性如何）。
  通过]]></description><category></category></item><item><title><![CDATA[考研数据结构之topsort核心代码]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117754572</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117754572</guid><author>qq_43227036</author><pubDate>Wed, 09 Jun 2021 21:18:11 +0800</pubDate><description><![CDATA[代码
// 由于拓扑排序需要考虑到入度，因此需要把邻接表的数据结构做如下更改如下更改
struct vNode {
    int count; // 代表当前节点入度
    ArcNode *firstarc;
};

// 核心代码
int topsort(graph *G)
{
    // 将入度为0的节点放到队列中
    // 书中是放入栈，并无区别
    queue&lt;int&gt; que;
    ArcNode *p;
    int num = 0;

    // 1. 将当]]></description><category></category></item><item><title><![CDATA[考研之floyd代码核心]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117754346</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117754346</guid><author>qq_43227036</author><pubDate>Wed, 09 Jun 2021 21:03:44 +0800</pubDate><description><![CDATA[代码
// 存图方式为邻接矩阵
// 方便遍历操作
// a存储的是从i到j的最短的距离，path存储的是从i到j需要经过的一个中间节点
void print_path(int a[][MAXN], int u, int v, int path[][MAXN])
{
    if (a[u][v] == INF)
        return ;
    else
    {
        if (a[u][v] == -1)
            // 直接输出当前边
        else
   ]]></description><category></category></item><item><title><![CDATA[考研数据结构之dijkstra核心代码实现cpp]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117754076</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117754076</guid><author>qq_43227036</author><pubDate>Wed, 09 Jun 2021 20:49:46 +0800</pubDate><description><![CDATA[代码
本文使用vetor模拟邻接表，可以直接用二维数组
void print_path(int path[], int a)
{
    // path实际是一个双亲存储结构的树
    // 只能从叶子节点找到根节点
    // 因此需要一个栈，将序列倒着输出，即为从根节点到叶子节点
    stack&lt;int&gt; s;
    
    while (path[a] != -1) // 一直向上直到查找到根节点
    {
        s.push(a);  // 思考一下如果这两句交换]]></description><category></category></item><item><title><![CDATA[判断无向图是否为树]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117746740</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117746740</guid><author>qq_43227036</author><pubDate>Wed, 09 Jun 2021 16:20:24 +0800</pubDate><description><![CDATA[解题思路
一个无向图是树的条件是有n-1条边的连通图
顶点个数和边的信息在结构体G中含有，剩下的就是判断图是否联通
通过dfs如果能访问到所有节点那么这个图就是连通的，这里又计算了一个e其实是多余的
部分代码
const int MAXN = 1000;
int vis[MAXN];

void dfs(Graph *G, int v, int &amp;n, int &amp;e)
{
    vis[v] = 1;
    n++; // 来到一个从来未访问过的节点, 计数器加一
    
    Ar]]></description><category></category></item><item><title><![CDATA[求不带权无向连通图中距离给定节点最远的节点]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117745839</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117745839</guid><author>qq_43227036</author><pubDate>Wed, 09 Jun 2021 16:05:26 +0800</pubDate><description><![CDATA[解题思路
首先确定使用图的BFS，因为BFS是由近到远一点点蔓延过去的。所以队列中的最后一个节点一定是距离给定节点最远的点。
代码实现

vector模拟邻接表代码

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;queue&gt;

using namespace std;
const int MAXN = 2000;
int vis[MAXN];

//采用vector模拟图的邻接表存储方法
//求图中离给定节点最远的节点
]]></description><category></category></item><item><title><![CDATA[考研数据结构二叉树之前序线索二叉树]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117717265</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117717265</guid><author>qq_43227036</author><pubDate>Tue, 08 Jun 2021 22:16:30 +0800</pubDate><description><![CDATA[知识点

前序遍历第一个节点为根节点
找后继节点

左指针不为空且不是线索：就是后继节点
左指针空或为线索且右指针不为空：右指针就是后继节点，无论他是不是线索


找前驱节点

参考文章



代码
前序线索化，与中序类似，只写出核心代码
void preThread(tNode *p, tNode *&amp;pre)
{
	if (p != NULL)
	{
		if (p-&gt;lChild == NULL)
		{
			p-&gt;lChild = pre;
			p-&gt;ltag = 1;]]></description><category></category></item><item><title><![CDATA[考研数据结构二叉树之中序线索二叉树]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117716417</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117716417</guid><author>qq_43227036</author><pubDate>Tue, 08 Jun 2021 21:20:02 +0800</pubDate><description><![CDATA[考点

遍历序列中的起始为，从根一直往左走，直到不能再走，即为遍历序列的起始节点。注意： 不一定是叶子节点。
遍历序列的最后一个节点，从根一直往右走即可。
找后继节点

若右指针为线索，则右指针指向的即为后继
如果右指针不是线索，就从当前节点向右走一步，再一直向左


找前驱节点

若左指针为线索，左指针指向的节点即为前驱
若左指针指向的不是线索，就从当前节点向左走一步，再一直向右走



代码实现
#include &lt;iostream&gt;

using namespace std;

// 线索]]></description><category></category></item><item><title><![CDATA[cpp图的两种邻接表表达和深搜与广搜]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/117716225</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/117716225</guid><author>qq_43227036</author><pubDate>Tue, 08 Jun 2021 21:05:26 +0800</pubDate><description><![CDATA[使用STL的vector容器模拟邻接表
本代码中 队列均使用STL内置队列，如有需要请自行修改。
// 运行环境：cpp11
#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;queue&gt;
#include &lt;cstring&gt;

using namespace std;

// 最大节点数量
const int MAXN = 2000;
int vis[2000]; // 标记节点是否被访问过的

struct e]]></description><category></category></item><item><title><![CDATA[中缀表达式转后缀表达式]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/116380299</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/116380299</guid><author>qq_43227036</author><pubDate>Mon, 03 May 2021 20:30:39 +0800</pubDate><description><![CDATA[介绍
中缀表达式就是我们平时书写的式子比如 2 * 3 + 5 - 4 * (2 + 3)
后缀表达式又叫做逆波兰表达式表达式，可以让计算机快速求出一个式子的值。主要通过栈来辅助计算。
&nbsp;
&nbsp;
一，后缀计算
e.g 1 2 3 4 + 8 * + 3 + *

遍历整个字符串，将遇到的数字先压入栈中。


此时栈中为：1 2 3 4


遇到操作符时，从栈中弹出两个数字进行计算，并压入栈中。


弹出4 3 相加后 栈中为：1 2 7


继续一和二的操作，直到读取到字符串结束，此时栈顶]]></description><category></category></item><item><title><![CDATA[padlepadle实现手写数字识别]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/109392396</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/109392396</guid><author>qq_43227036</author><pubDate>Fri, 30 Oct 2020 20:43:42 +0800</pubDate><description><![CDATA[目标
通过构建ANN，实现对手写数字识别，并对自己手写的数字进行预测
源码地址
添加链接描述
数据分析
数据集为60000个训练样本和10000个测试数据，每个样本为图片和标签，图片大小为28*28，标签为0-9的数字
代码实现
导包
import numpy as np
import paddle
import paddle.fluid as fluid
from PIL import Image
import matplotlib.pyplot as plt
import os

获取数据并创建数据读取]]></description><category></category></item><item><title><![CDATA[git连接小组远程仓库]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/107820068</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/107820068</guid><author>qq_43227036</author><pubDate>Wed, 05 Aug 2020 17:32:02 +0800</pubDate><description><![CDATA[1. 加入仓库
加入仓库地址：地址
2. 创建ssh发送给yxx

创建过程

在 git bash窗口输入 ssh-keygen -t rsa -C "youremail@example.com" 。
其中的email就是你自己的git设置的email
查看方式 git config user.email 。
根据提示生成后，一般保存在 C:\Users\Administrator\.ssh 。
用记事本打开.pub文件，将key复制，发送给我即可。



3. 创建本地仓库

在项目目录下，点击鼠标右键]]></description><category></category></item><item><title><![CDATA[hdu5533 Dancing Stars on Me (思维题)]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/105643802</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/105643802</guid><author>qq_43227036</author><pubDate>Mon, 20 Apr 2020 20:38:05 +0800</pubDate><description><![CDATA[题目地址
hdu5533
题目大意
给出n个点，问你能不能凑成一个正n边形。
解题思路
非常有意思的一个题。想要形成正n边形，两个点之间的距离必定是它周围的点之间的最短距离。那我们把每个点和其他边的距离存下来，查找到其中相等并且最短的边数量，如果等于n就能凑成正n边形。
AC代码
#include &lt;iostream&gt;
#include &lt;cmath&gt;
#include &...]]></description><category></category></item><item><title><![CDATA[历届试题 包子凑数 （完全背包+最大公约数）]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/105643245</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/105643245</guid><author>qq_43227036</author><pubDate>Mon, 20 Apr 2020 20:07:13 +0800</pubDate><description><![CDATA[题目地址
包子凑数
解题思路
首先呢如果n个数的最大公约数不为1，那他们不凑的数字肯定无情多个。因为n个数字的最小公倍数就是最大公约数的倍数。
如果最大公约数为1，就使用完全背包解题即可。
AC代码
#include &lt;iostream&gt;

using namespace std;

int num[110*110], a[200];

int gcd(int a, int b)
{
...]]></description><category></category></item><item><title><![CDATA[历届试题 分巧克力 （二分）]]></title><link>https://blog.youkuaiyun.com/qq_43227036/article/details/105643185</link><guid>https://blog.youkuaiyun.com/qq_43227036/article/details/105643185</guid><author>qq_43227036</author><pubDate>Mon, 20 Apr 2020 20:02:58 +0800</pubDate><description><![CDATA[题目地址
分巧克力
解题思路
二分查找长度，每次判断能不能凑成，能凑成就继续往上查找，否则向下查找。
AC代码
#include &lt;iostream&gt;
using namespace std;
int main()
{
	int N,K,r=100001,l=1,ans=0,h[100000],w[100000];
	cin&gt;&gt;N&gt;&gt;K;
	for(int i=...]]></description><category></category></item></channel></rss>