suyc's blog

哎,什么时候才能把英语学好啊🙇‍~

字符串

KMP

参考力扣28题。此外还有214、459题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int strStr(string haystack, string needle) {
if (needle == "") return 0;
// get next
vector<int> next(needle.size(), 0);
for (int i = 2, j = 0; i < needle.size(); ++i) {
while (j > 0 && needle[j] != needle[i-1]) j = next[j];
if (needle[j] == needle[i-1]) next[i] = ++j;
}
// matching
for (int i = 0, j = 0; i < haystack.size(); ++i) {
while (j > 0 && haystack[i] != needle[j]) j = next[j];
if (needle[j] == haystack[i]) ++j;
if (j == needle.size()) return i - j + 1;
}
return -1;
}

kmp简单来说就是,描述了一个前缀最长公共前后缀

关于kmp的算法,有很多人也写过了,我主要记录以下关于这个前缀是否包含当前节点的问题。也就是对图中X点来说的1和2两种情况。

Read more »

先贴上PyTorch官网上的关于BatchNorm的公式:

这个BatchNorm到底怎么freeze?这个函数究竟是如何成为广大网友心中的大坑的?看了好几天源码和相关的博客,我似乎有点明白了。
本文主要内容是_BatchNorm相关的源码简介。同样基于PyTorch 1.1.0。

Read more »

最近一直比较忙,今天闲下来把博客升级到Hexo(4.0.0)和NexT(7.5.0),然后把NexT的配置文件移动到Hexo的配置文件中,这样以后NexT的升级就不用总是改配置文件了。
顺便把Hexo的写作分支push到Github,这个放了好久了,今天也要做一下。

UPDATE: 最新升级到了HEXO(5.1.1)和NexT(8.0.0)。持续更新ing…

Read more »

官网Doc链接:link

1
backward(gradient=None, retain_graph=None, create_graph=False)

看一下第一个参数的意思是什么。其实不管Tensor中是几个变量,都可以传入参数,但是一般情况下,我们的out都是只有一个标量的tensor,可以不传入参数。

举个例子,通常我们在求导的时候都是对一个变量求导,例如

所以当我们对求导的时候很自然的可以使用链式法则

Read more »

本文主要涉及内容:DatasetDataLoaderDatasetFloder等相关源码分析。
看了网上众多的关于这方面的文章,详细解释道理的很少,看完之后我依然很迷惑。所以我在看过看过网上一些教程和PyTorch的部分源码以后写了一些总结,基本上也是我自己在学习这部分内容时的一个经过。文章前边可能有些地方不可避免地走了弯路,但是我也希望如果你是初学者,建议看一看,思考一下,和最后的方法作对比。
本文基于PyTorch 1.1.0。

Read more »

看了一天关于各种熵的解释,比较好的文章已经添加到了Bookmark。本文中的公式均来自PyTorch文档

Softmax

把数据缩放到$[0,1]$,且和为$1$。对每个元素进行了操作,结果并不改变维数,即输入N维,输出还是N维。

LogSoftmax

结果似乎比Softmax更加稳定,结果的范围为$[-inf,0)$。结果维数依然不变。

Read more »