Skip to content

Commit

Permalink
更新到3.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
wu-kan committed May 21, 2020
1 parent 21be153 commit 8d64968
Show file tree
Hide file tree
Showing 21 changed files with 313 additions and 164 deletions.
262 changes: 149 additions & 113 deletions _config.yml

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions _posts/2019-01-18-基于Jekyll搭建个人博客.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ title: 基于Jekyll搭建个人博客
tags: 博客搭建
---

## 引言

最开始我是在[CSDN](https://blog.csdn.net/w_weilan)上写博客的。博客写了一年多,访问量勉强破万,感觉其中至少有三成是自己贡献的。而且 CSDN 上的广告是越来越多,网页编辑器也是越来越不好用。

十一月份,在青岛的 ICPC 区域赛失利之后,想要重新开始,和过去告别。也从此转移自己写博客的阵地。考虑过转投暂时还比较干净而且可以部分定义页面的[博客园](https://www.cnblogs.com/wu-kan/),但是最终还是决定在[Github Pages](https://pages.github.com/)上搭建属于自己的博客。
Expand Down
6 changes: 2 additions & 4 deletions _posts/2019-09-29-Lab4_1 Pandas 数据分析.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ tags:
- 机器学习
---

Pandas 数据导入;数据变换处理;统计汇总描述;假设检验;可视化等

## 实验目的

学习 Pandas 数据分析基础,统计描述及数据可视化等

## 实验简介

Pandas 数据导入;数据变换处理;统计汇总描述;假设检验;可视化等

## 实验环境

### 硬件
Expand Down
6 changes: 2 additions & 4 deletions _posts/2019-09-30-Lab4_2 Matplotlib库实践.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ tags:
- 机器学习
---

Anaconda 自带 Matplotlib 库,不需要单独安装,导入后则可以应用。Matplotlib 是最著名的绘图库,它主要用于二维绘图,当然它也可以进行简单的三维绘图。它允许用户使用 Python 创建动态的、自动义的可视化结果,其绘图结果直接显示在 Jupyter notebook 中。

## 实验目的

学习 Matplotlib 库绘制 2D 图。

## 实验简介

Anaconda 自带 Matplotlib 库,不需要单独安装,导入后则可以应用。Matplotlib 是最著名的绘图库,它主要用于二维绘图,当然它也可以进行简单的三维绘图。它允许用户使用 Python 创建动态的、自动义的可视化结果,其绘图结果直接显示在 Jupyter notebook 中。

## 参考链接

- Matplotlib 画廊<http://matplotlib.org/>
Expand Down
8 changes: 3 additions & 5 deletions _posts/2019-10-09-Lab 6 kNN应用实践.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@ tags:
- 机器学习
---

- 导入数据,归一化数据,距离计算,实现 kNN 分类器
- 实例学习 kNN 分类器如何改进约会网站,以及识别手写数字

## 实验目的

利用 python 实现 kNN 分类器

## 实验简介

- 导入数据,归一化数据,距离计算,实现 kNN 分类器
- 实例学习 kNN 分类器如何改进约会网站,以及识别手写数字

## 实验环境

### 硬件
Expand Down
6 changes: 2 additions & 4 deletions _posts/2019-10-16-Lab7 k-Means应用实践.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ tags:
- 机器学习
---

用 Python 访问 Baidu Web 的 API,先用 Baidu Web 的 API 获得数据,然后用 kMeans 算法对地理位置进行聚类,并对聚类得到的簇进行后处理。

## 实验目的

利用 python 实现 kMeans 算法

## 实验简介

用 Python 访问 Baidu Web 的 API,先用 Baidu Web 的 API 获得数据,然后用 kMeans 算法对地理位置进行聚类,并对聚类得到的簇进行后处理。

## 实验环境

### 硬件
Expand Down
6 changes: 2 additions & 4 deletions _posts/2019-11-04-Lab8 Navie Bayes应用实践.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ tags:
- 机器学习
---

利用 python 的文本处理能力将文档切分成词,通过集合元素的唯一性生成词汇列 表(不包括重复词汇),进而构建词向量(词集向量或词袋向量),从词向量计算概率,然后 构建分类器对邮件文档进行垃圾邮件分类。代码文件:bayes.py

## 实验目的

利用 python 实现 kMeans 算法

## 实验简介

利用 python 的文本处理能力将文档切分成词,通过集合元素的唯一性生成词汇列 表(不包括重复词汇),进而构建词向量(词集向量或词袋向量),从词向量计算概率,然后 构建分类器对邮件文档进行垃圾邮件分类。代码文件:bayes.py

## 实验环境

### 硬件
Expand Down
2 changes: 0 additions & 2 deletions _posts/2019-11-23-语言模型与新闻的内容预测.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 自然语言处理
---

## 实验简介

- 从国内主流新闻网站(如腾讯、新浪、网易等)的科技频道抓取新闻内容
- 对新闻数据进行预处理(分句、分词、去噪)
- 使用预处理后的新闻数据训练两个语言模型
Expand Down
2 changes: 0 additions & 2 deletions _posts/2019-11-29-CUDA矩阵向量乘的多种优化.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 实验简介

使用下面一种或多种优化方法完成 CUDA 的矩阵向量乘法$y=A\times x$,其中$A$是$2^{14}\times 2^{14}$的方阵,$x$为$2^{14}$维向量。假设矩阵$A$的元素为$a_{i,j}=i-0.1\times j+1$,向量$x$的元素为$b_i=\log\sqrt{i\times i-i+2}$。

- 使用 global memory
Expand Down
10 changes: 4 additions & 6 deletions _posts/2019-12-04-Lab11 sklearn中的SVM应用实践.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@ tags:
- 机器学习
---

## 实验目的

sklearn 库的 SVM 分类器的实现。

## 实验简介
利用 scikit-learn 中自带的 iris 数据集,学习数据规范化、数据集切分、分类、预测,以及分类器 SVC 的测试评估等。

sklearn 官网:<http://scikit-learn.org/stable/>,包含 sklearn 资源,模块下载,文档、例程等。

利用 scikit-learn 中自带的 iris 数据集,学习数据规范化、数据集切分、分类、预测,以及分类器 SVC 的测试评估等。
## 实验目的

sklearn 库的 SVM 分类器的实现。

## 实验环境

Expand Down
2 changes: 0 additions & 2 deletions _posts/2019-12-13-CUDA矩阵乘法的优化.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 实验简介

使用下面一种或多种优化方法完成 CUDA 的矩阵乘法$C=A\times B$

- 使用 global memory 合并访存
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-01-13-稀疏矩阵乘法.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 实验简介

分别使用 MPI 和 CUDA 实现稀疏矩阵乘法,输入输出矩阵都用压缩行格式存储;并与串行程序比较。

## 实验环境
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-01-13-链表求序.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 实验简介

用 MPI 和 CUDA 实现链表求序(linked list ranking)算法,并与串行程序比较。

- 输入:一个 N 元素的单向链表,该链表放在一个长度为 N 的向量中。链表的每一个元素(除链尾的一个)都有一个后继的数组下标。链尾的元素的后继为`-1`
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-01-14-基于深度学习的中英机器翻译.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 自然语言处理
---

## 实验简介

- 从 WMT18(News Commentary)中抽取的中英句子对
- 数据集规模:10000
- 10K 版本,train: 8000, test: 2000, dev: 2000
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-01-18-Markdown写作心得.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ title: Markdown写作心得
tags: 博客搭建
---

## 引言

这一年里逐渐养成了用 Markdown 做一些简单笔记和课程作业的习惯,来来回回踩了不少坑。下面分享一些自己觉得不错的使用 Markdown 的工具和习惯。

## 工具
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-02-06-个人网站优化之旅.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ title: 个人网站优化之旅
tags: 博客搭建
---

## 引言

一年前我转投 Github Pages,开始了自己的新博客生活(详见[一年前的一篇博客](https://wu-kan.cn/_posts/2019-01-18-%E5%9F%BA%E4%BA%8EJekyll%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/)。由于 github page 原生支持 jekyll,在部署博客方面比较省心,我们只需要专注自己的博客内容即可。

然而,时间一长,还是有很多需求得不到满足:
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-02-25-用Shuffle加速CUDA上的Reduce操作.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 简介

显卡上的规约操作是一个经典优化案例。在网上能找到的大部分实现中,性能比较优秀的是使用 Shared Memory 并进行访存优化的树形规约。

近期正好在做这方面的一些优化,同时了解到从 CUDA 9.0 开始,CUDA 引入了更加灵活的 Warp 操作原语,这一方面使得 CUDA 编程更加简单,一方面也使得一些原有的功能发生了一些改变。本文重点对 Warp 和 Shared Memory 两种方法实现的并行规约操作进行性能对比。
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-03-16-再谈CUDA上的Reduce操作.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 简介

上次我学习了[用 Shuffle 加速 CUDA 上的 Reduce 操作](https://wu-kan.cn/_posts/2020-02-25-%E7%94%A8Shuffle%E5%8A%A0%E9%80%9FCUDA%E4%B8%8A%E7%9A%84Reduce%E6%93%8D%E4%BD%9C/),据说这是目前在 CUDA 上最快的区间规约算法。然而运用在实际的情况中却并没有对代码的性能带来多大提升。本文中我再次整理了自己已知的所有 CUDA 上的快速区间规约方法,并以此对写出**高性能****高可扩展**的 CUDA 代码提出一些自己的思考。

- 多路规约
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-03-23-CUDA拷贝竞速.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ tags:
- 高性能计算
---

## 简介

近期在做一个 CUDA 相关库的优化,发现稍作一点修改(下文中 `simpleZcopy``naiveZcopy` 的修改)后就让运行时间在 16 秒左右的仿真过程快了将近 1 秒。猜想这个优化方法可能是非常通用的,于是单独做一次实验来验证猜想。

本文在显卡上双精度复数拷贝的场景进行试验,同时和一些常见的高性能拷贝 API 做性能对比。
Expand Down
7 changes: 7 additions & 0 deletions _posts/2020-04-27-软件工程理论与实践(四).md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,11 @@ tags: 软件工程理论与实践

## 简述软件工程的 6 个最佳实践

1. 迭代的开发软件
2. 需求管理
3. 使用基于构件的体系结构
4. 可视化软件建模
5. 验证软件质量
6. 控制软件变更

## 解释对象、类、继承、聚合、多态、封装
142 changes: 142 additions & 0 deletions _posts/2020-05-14-编译原理(四).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
---
title: 编译原理(四)
tags: 编译原理
---

## 用上下文无关文法描述下列语言

### 定义在字母表 $\sum=\{a, b\}$ 上,所有首字符和尾字符相同的非空字符串

$$
S\to aRa\vert bRb\vert a\vert b \\
R\to Ra\vert Rb\vert \varepsilon
$$

1. $R$ 表示字典表是 $\sum$ 上的所有字符串
2. $S$ 在 $R$ 的基础上定义题目要求的串,注意到单个 $a$ 和 $b$ 也是符合要求的。

### $L=\{0^i1^j\vert 0\le i\le j \le 2i\}$

$$
S\to 0S1\vert 0S11\vert\varepsilon
$$

1. 若 $S$ 符合要求,则 $0S1$ 符合要求,可得 $S\to 0S1$
2. 若 $S$ 符合要求,则 $0S11$ 符合要求,可得 $S\to 0S11$
3. 空串符合要求,可得 $S\to\varepsilon$

### 定义在字母表 $\sum =\{0, 1\}$上,所有含有相同个数的 0 和 1 的字符串(包括空串)

$$
S\to SS\vert 0S1\vert 1S0 \vert\varepsilon
$$

1. 若首尾字母相同,那么原字符串一定能划分成两个符合要求的子串,于是得到 $S\to SS$
2. 若首尾字母不同,则去掉首尾字母仍然符合要求,于是得到 $S\to 0S1\vert 1S0$
3. 空串符合要求,得到 $S\to\varepsilon$

## 考虑以下文法

$$
S\to aABe \\
A\to Abc\vert b \\
B\to b
$$

### 用最左推导(leftmost derivation)推导出句子 abbcde

$$
S\Rightarrow aABe\Rightarrow aAbcBe \Rightarrow abbcBe \Rightarrow abbcde
$$

### 用最右推导(rightmost derivation)推导出句子 abbcde

$$
S\Rightarrow aABe \Rightarrow aAde \Rightarrow aAbcde \Rightarrow abbcde
$$

### 画出句子 abbcde 对应的分析树(parse tree)

```mermaid
graph TB
S0---S1
S0---S2
S0---S3
S0---S4
S2---S5
S2---S6
S2---S7
S3---S8
S5---S9
S0[S]
S1[a]
S2[A]
S3[B]
S4[e]
S5[A]
S6[b]
S7[c]
S8[d]
S9[b]
```

## 考虑下述文法

$$
S \to aSb\\
S \to aS\\
S \to \varepsilon
$$

## 这一文法产生什么语言(用自然语言描述)

若干个 $a$ 紧接若干个 $b$ 的字符串,且 $a$ 的数量不少于 $b$ 。

## 证明这一文法是二义的

例如,对于串 $aab$ 可以产生下述两种分析树:

```mermaid
graph TB
S0---S1
S0---S2
S0---S3
S2---S4
S2---S5
S5---S6
S7---S8
S7---S9
S9---Sa
S9---Sb
S9---Sc
Sb---Sd
S0[S]
S1[a]
S2[S]
S3[b]
S4[a]
S5[S]
S6[ε]
S7[S]
S8[a]
S9[S]
Sa[a]
Sb[S]
Sc[b]
Sd[ε]
```

## 写出一个新的文法,要求新文法无二义且和上述文法产生相同的语言

$$
S\to aSb\vert R\\
R\to aR\vert \varepsilon
$$

由前一问可以知道,产生二义性的原因是,对于某些位置的 $a$ ,既可以从第一条规则得到,也可以由第二条规则得到。因此考虑定义一个新的只含有字母 $a$ 的串 $R$,这样就可以规定每一个 $a$ 是由哪一条规则得到的(不妨设串中有 $\alpha$ 个 $a$,$\beta$ 个 $b$ ,则由第一问有 $\alpha \ge \beta$):

1. 如果对于特定位置的 $a$,它到最近的 $b$ 的距离小于等于 $\beta$,则它是由第一条规则得到的。
2. 如果对于特定位置的 $a$,它到最近的 $b$ 的距离大于 $\beta$,则它是由第二条规则得到的。
3. 对于所有的 $b$,它一定是由第一条规则得到的。

由此可以证明文法无二义,同时证明过程也推导了任意一个前述文法相同语言的过程,于是这个新的文法是符合要求的。

0 comments on commit 8d64968

Please sign in to comment.