几个聚类算法
本节介绍一些典型的聚类算法,如 K-Means,DBSCAN,谱聚类,层次聚类,optics,birch 等。聚类就是对大量未知标注的数据,按照内在相似性将其划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小。通过计算每个类的代表点可以获得整个数据集的少量代表点,从而获得整个数据集的结构、形状信息。聚类算法通常处理无标签的数据集,因此常使用相似度或距离来处理。有衡量两个点(向量)之间的距离的,有衡量两个子集合之间的距离的,也有衡量点到子集合之间距离的。
首先先给出一个图,来直观看一下各个聚类算法的效果图。
数学上,什么是距离?非空集合 $X$ 上的度量为一个函数(称之为“距离函数”或简称为“距离”)$$d: X \times X \to \mathbb{R}$$这里的 $\mathbb{R}$ 是实数集合,且对于所有 $X$ 内的 $x, y, z$,均满足如下条件:
非负性,或分离公理$$d(x, y) \geq 0$$
同一性,或同时公理$$d(x,y) = 0 \Longleftrightarrow x = y$$
对称性$$d(x, ...
使用 filebrowser 和 Nginx 在 VPS 搭建云盘
个人云盘能够方便存储个人文档,特别是没有上传下载速度限制,可以灵活扩展容量,具有更好的私密性。当具有远程服务器(如VPS)时,可以使用 filebrowser 搭建个人云盘。结合 Nginx 实现个性化网页快速访问。下面分别介绍如何在远程服务器上安装 Nginx, filebrowser, 以及他们的配置。本篇以 Debian 10 为例,Ubuntu 系统类似, CentOS 系统需要切换相应命令,但一般是将 apt 更改为 yum.
安装 Nginx12sudo apt updatesudo apt install nginx
安装 filebrowser1curl -fsSL https://filebrowser.org/get.sh | bash
配置 filebrowser1234567891011121314# 创建配置数据库filebrowser -d .filebrowser.db config init# 设置监听地址filebrowser -d .filebrowser.db config set --address 0.0.0.0# 设置监听端口,需要打 ...
利用 nginx 反向代理为 jupyterlab 配置二级网址页面
当服务器配置好 Python, Jupyterlab 后,访问总是通过 8888 端口,出于某些原因,想要为其配置二级页面,这样当想要更改端口时只需要修改一下配置,而不需要再次记忆到底是打开了哪个端口,只需要记住二级页面 web 地址就可以。本篇不介绍如何配置 Jupyterlab,而是假设已经配置好了 Jupyterlab,且申请了域名,直接说如何通过 nginx 配置 Jupyterlab.
安装 nginx12345sudo apt updatesudo apt install nginxsudo systemctl status nginx.servicesudo systemctl start nginx.servicesudo systemctl enable nginx.service
配置 Jupyterlab12345678910# 生成 jupyterlab 配置文件jupyter notebook --generate-config# 修改配置vim .jupyter/jupyter_notebook_config.py# 修改如下内容c.NotebookA ...
TensorFlow 分布式简单介绍
TensorFlow 能够方便的进行深度学习实践,特别是拥有多GPU的服务器或拥有多台GPU服务器时,如何使用 TensorFlow 进行快速训练,节约宝贵时间呢,下面介绍 TensorFlow 给出的分布式训练方法。
单台服务器多GPU情况下对于单台服务器下有多个GPU,TensorFlow 给出了镜像分布式策略 tensorflow.distribute.MirroredStrategy ,具体的使用是只需要实例化一个 MirroredStrategy 策略 (strategy = tensorflow.distribute.MirroredStrategy()),并把模型构建代码放置在 strategy.scope() 下就可以。
注意,在该策略下,可以指定参与计算的GPU,方法如下:
12# 指定计算的GPU为0,1strategy = tensorflow.distribute.MirroredStrategy(devices=["/gpu:0", "/gpu:1"])
使用该策略进行模型 MobileNetV2 训练 ...
docker 简单介绍
docker 容器技术使得开发测试非常方便,自 2013 年发布至今,一直广受瞩目。软件开发最大的麻烦事之一,就是环境配置。虚拟机虽然能够解决上面问题,但是有如下缺点:1.资源占用多,2.冗余步骤多,3. 启动慢;由于虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。 或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。由于容器是进程级别的,相比虚拟机有很多优势。1. 启动快, 2, 资源占用少,3. 体积小. 总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 它是目前最流行的 Linux 容器解决方案。下面介绍2020年08月以后,如何安装使用 docker,本篇以 Windows 10 wsl 2 Ubuntu-20.04 为例。
Docker 的主要用途,目前有三大类: ...
深度学习中不同的卷积操作
本篇参考An Introduction to different Types of Convolutions in Deep Learning 介绍一下深度学习中不同的卷积操作。
卷积(Convolutions)常规卷积操作如下动图所示,下方(浅蓝色矩形)为输入图像或特征图(feature map),阴影矩形($3 \times 3$) 为卷积核,上方为输出的特征图。下方虚线边缘矩形为填充,为了在特定卷积核大小和步长下,得到合适的特征图。
这里需要先介绍几个概念。
卷积核(kernel)卷积核(卷积核包含至少一个 filter,有时也称 filter 为卷积核)中每个 filter 的大小决定了卷积操作的感受野。如上图所示,卷积核(也是filter,这里输出是单通道)是移动的阴影部分,大小为3,即 $3 \times 3$ 像素。对于输入图像,如果是RGB三通道,那么 filter 也应该是三通道的。如果想输出多通道,可设置多个 filter。即 filter 的通道数和输入图像一样,输出通道由卷积核的个数(filter 的个数)决定。
卷积核的大小一般设置成奇数,如 $1 \t ...
由平行截面面积求体积
本节讲通过定积分求解三维空间中立体的体积。
假设 $\Omega$ 为三维空间中的一个立体,它夹在垂直于 $x$ 轴的两平面 $x = a$ 与 $x = b$ 之间,这里 $a <b$. 若在任意一点 $x \in [a, b]$ 处作垂直于 $x$ 轴的平面,它截得 $\Omega$ 的截面面积显然是 $x$ 的函数,记为 $A(x), x \in [a, b]$,并称之为 $\Omega$ 的截面面积函数。假设截面面积函数 $A(x)$ 是 $[a, b]$ 上的一个连续函数,且把 $\Omega$ 的上述平行截面投影到某一垂直于 $x$ 轴的平面上,它们永远是一个含在另一个里面。对 $[a, b]$ 作分割$$T: a = x_0 < x_1 < \cdots < x_n = b.$$过各个分点作垂直于 $x$ 轴的平面 $x = x_i, i = 1, 2, \cdots, n$,它们把 $\Omega$ 切割成 $n$ 个薄片 $\Omega_i, i = 1, 2, \cdo ...
把本地代码发布到 GitHub 上
本地写好的代码如何发布到 GitHub 上呢?这里给出一个方法。
在 GitHub 上创建一个新的仓库
填写自己喜欢的仓库名
填写自己需要的仓库介绍,简短介绍仓库
选择初始化仓库
最好初始化 README file
点选 .gitignore
选择自己需要的代码版权协议
克隆仓库到本地最好为 GitHub 添加 SSH 认证,这样在提交修改的代码时不需要重复输入用户名和密码,方法参考我的另一篇博文 使用SSH连接GitHub
克隆代码方法如下(这里以 SSH 为例)
1git clone git@github.com:xujinzh/CSK.git
把本地代码放到克隆的文件夹下如我这里本地开发的代码是
1cf-csk
经过上面克隆后,代码放在
1CSK
拷贝 cf-csk 文件到 CSK 里
1cp -r cf-csk/* CSK/
提交代码到 GitHub一般需要完善 README.md 文件以便更好的介绍该仓库,修改后,进行提交
1234git statusgit add .git commit -m "add csk tackers"git p ...
利用定积分求平面图形的面积
由定积分的几何意义我们知道,连续曲线 $y = f(x) (\geq 0)$ 在区间 $[a, b]$ 上与 $x$ 轴所围曲边梯形的面积为$$A = \int_a^b f(x) \mathrm{d}x = \int_a^b y \mathrm{d}x.$$
负面积如果 $f(x)$ 在 $[a, b]$ 上不都是非负的,则所围图形的面积为$$A = \int_a^b |f(x)| \mathrm{d}x = \int_a^b |y| \mathrm{d}x.$$一般地,由上、下两条连续曲线 $y = f_2(x)$ 与 $y = f_1(x)$ 在区间 $[a, b]$ 上所围的平面图形面积计算公式为$$A = \int_a^b [f_2(x) - f_1(x)] \mathrm{d}x.$$同样 $x = g_2(y)$ 和 $x = g_1(y)$ 在区间 $[\alpha, \beta]$ 上所围面积,计算公式如下$$A = \int_{\alpha}^{\beta ...
各类期刊的区别
在学术界各类期刊纷繁复杂,眼花缭乱,选择合适的期刊,对投稿将是有利无弊的。下面分别给出 journal, transactions, magazine, proceedings, acta, bulletin, letter, communication, annals, archives, review, current opinion, advance, trends, progress, frontiers 等的区别介绍,方便选择合适的类型投稿。
journal 期刊Journal 本意为日记,个人经验和反思的记录,引申为 A periodical presenting articles on a particular subject. 学报最典型的叫法, 刊登关于某特殊主题的文章的期刊。
要求有很大的创新点,比较详细的公式推导。因 Journal 面向的读者较广泛,因此发表在其上的文章需要对背景知识有更加全面的介绍。
如:IMA Journal of Applied Mathematics
transactions 汇刊Transactions 本意为商业交易和谈判,引申为 ...
Windows 10 子系统 wsl 关闭和重启电脑方法
使用 Windows 10 的子系统能够非常方便的体验到 Linux 系统的简洁美(方便开发),同时也能够体验到 Windows10 图形界面的直接美(方便使用常用软件)。Windows 10 结合 WSL 能够在一定程度上消除了装载虚拟机的时间。但 WSL 只有终端界面没有图形界面,那么如何通过 WSL 关闭 Windows 10呢?这里以 Ubuntu-18.04 为例介绍。
System32首先需要通过终端进入 System32 目录下
1cd /mnt/c/Windows/System32
Shutdown其次使用 shutdown.exe 进行管理计算机开机、重启、休眠等
123456789101112131415161718# 取消关机./shutdown.exe -a # 关机./shutdown.exe -s # 强行关闭应用程序./shutdown.exe -f # 控制远程计算机./shutdown.exe -m computer-name# 显示远程关机图形用户界面,但必须是shutdown的第一个参数./shu ...