Ubuntu

YOLOV3剪枝源码阅读---模型部署加速

被刻印的时光 ゝ 提交于 2020-08-13 09:49:13
YOLOV3剪枝 论文:Network Slimming-Learning Efficient Convolutional Networks through Network Slimming 剪枝项目参考 https://github.com/tanluren/yolov3-channel-and-layer-pruning 主要思路 1、利用batch normalization中的缩放因子γ 作为重要性因子,即γ越小,所对应的channel不太重要,就可以裁剪(pruning)。 2、约束γ的大小,在目标方程中增加一个关于γ的L1正则项,使其稀疏化,这样可以做到在训练中自动剪枝,这是以往模型压缩所不具备的。 剪枝过程 img 这里写图片描述 分为三部分,第一步,训练;第二步,剪枝;第三步,微调剪枝后的模型,循环执行 YOLOV3剪枝源码 1、正常剪枝 这部分分析来自该仓库 https://github.com/coldlarry/YOLOv3-complete-pruning ,但是更新的仓库也可以完成正常剪枝,prune.py。 使用了正常剪枝模式,不对short cut层(需要考虑add操作的维度一致问题)及上采样层(无BN)进行裁剪。 1、找到需要裁剪的BN层的对应的索引。 2、每次反向传播前,将L1正则产生的梯度添加到BN层的梯度中。 3、设置裁剪率进行裁剪。

后缀自动机多图详解(代码实现)

谁说我不能喝 提交于 2020-08-13 09:23:39
作者注:搭配理论证明类的 \(SAM\) 博客阅读,效果更佳。作者水平较低,时间有限,只讲实现,不再胡乱证明。 后缀自动机是一种在线的,动态添加字符扩展字符串的算法。蒟蒻深知没图的痛苦,这里放一个带详细图片解析的代码实现,加深一下自己印象。 顺便造福后人 作图工具: \(WPS\) \(PowerPoint\) \(For\) \(Ubuntu\) 如图所示,添加扩展字符 \(c\) 后,后缀自动机中 受影响的有且仅有 \(p\) 的后缀 ,所以我们只需对 \(p\) 的后缀的连边情况进行更新即可。 遍历 \(p\) 的后缀。( \(=\) 在其后缀链接 \(/\) \(parent\) \(Tree\) 上向上跳) \(p\) 的后缀中有一部分,其后面接上字符 \(c\) 获得的新后缀,在添加字符 \(c\) 之前的原串中还未出现过。虽然原串中并没有这样的串,但是添加字符 \(c\) 后的新串中就刚刚出现了一个。这里我们拉一条向新串 \(q\) 的,字符为 \(c\) 的 \(Trie\) 边。 int p = lst, q = ++node; lst = q; len[q] = len[p] + 1; while (!ch[p][c] && p != 0) { ch[p][c] = q; p = fa[p];//更新原串后缀的连边 } 通过这一步

Nginx+uwsgi+ssl配置https

扶醉桌前 提交于 2020-08-13 06:58:11
使用原始django,太过于笨重和杂多 nginx是一个轻量级的web服务器,在处理静态资源和高并发有优势 uwsgi是一个基于python的高效率的协议,处理后端和动态网页有优势 所以这里采用静态网页交给nginx解析,动态网页交给uwsgi解析,并且nginx配置ssl,即可以使用出高安全,高效率的部署。 步骤 我这里使用的是Ubuntu18.04版本,服务器在阿里云 没用centos的原因是Ubuntu我用的更顺手 1.在Ubuntu上安装Django生产环境 python3.6 django3 mysql5.7 nginx uwsgi 这里安装就落入了第一个坑,Ubuntu系统带了好多python和pip工具,很乱。 我先按照python3.8----->修改pip3指定的编译器,将python3.6改成python3.8 从官网安装MySQL----->下载官网的deb包------>dpkg一下这个包------->系统update------>系统获取安装mysql8。 安装virtualenv和virtualenvwrapper。windows上面习惯了用这两个包,linux上自然也安上,但后面却报错了,很无奈,只能再删除掉,等会你就懂了 pip安装django uwsgi,sudo apt 安装nginx。这步我觉得是这一天里最简单的 pip安装mysql依赖包

node进程间通信

血红的双手。 提交于 2020-08-13 06:33:46
作为一名合格的程序猿/媛,对于进程、线程还是有必要了解一点的,本文将从下面几个方向进行梳理,尽量做到知其然并知其所以然: 进程和线程的概念和关系 进程演进 进程间通信 理解底层基础,助力上层应用 进程保护 进程和线程的概念和关系 用户下达运行程序的命令后,就会产生进程。同一程序可产生多个进程(一对多关系),以允许同时有多位用户运行同一程序,却不会相冲突。 进程需要一些资源才能完成工作,如CPU使用时间、存储器、文件以及I/O设备,且为依序逐一进行,也就是每个CPU核心任何时间内仅能运行一项进程。 进程与线程的区别:进程是计算机管理运行程序的一种方式,一个进程下可包含一个或者多个线程。线程可以理解为子进程。 摘自wiki百科 也就是说,进程是我们运行的程序代码和占用的资源总和,线程是进程的最小执行单位,当然也支持并发。可以说是把问题细化,分成一个个更小的问题,进而得以解决。 并且进程内的线程是共享进程资源的,处于同一地址空间,所以切换和通信相对成本小,而进程可以理解为没有公共的 包裹容器 。 但是如果进程间需要通信的话,也需要一个公共环境或者一个媒介,这个就是操作系统。 进程演进 我们的计算机有单核的、多核的,也有多种的组合方式: 单进程 因为是一个进程,所以某一时刻只能处理一个事务,后续需要等待,体验不好 多进程 为了解决上面的问题,但是如果有很多请求的话,会产生很多进程

ansible快速进行

喜夏-厌秋 提交于 2020-08-13 06:27:37
ansible快速进行 说明 1. 安装 1.1 通过Yum安装最新发布版本 sudo yum install ansible 1.2 通过Apt (Ubuntu)安装最新发布版本 sudo apt-get install -y software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install -y ansible 1.3 通过 Pip 安装最新发布版本 sudo pip install ansible 2. 修改配置文件 2.1 修改/etc/ansible/ansible.cfg文件 #host_key_checking = False 将#号去掉即可 2.2 修改主机配置文件 /etc/ansible/hosts [servergroup] 10.0.100.[202:203] ansible_ssh_user=root ansible_ssh_pass=123456 10.0.100.201 ansible_ssh_user=root ansible_ssh_pass=ca$hc0w 3. 命令运行 3.1 ping模块 测试所有节点是否在线 ansible all -m ping 返回结果 测试指定分组是否在线

docker里边安装ubuntu启动jar文件

时光毁灭记忆、已成空白 提交于 2020-08-13 04:27:53
下载基础镜像 测试: 用ubuntu镜像输出hello world 如果没有ubuntu镜像,docker会默认给下载个最新的ubuntu镜像 docker run ubuntu echo 'hello world' 以交互式运行 docker run -i -t ubuntu /bin/bash # -i --interactive=ture|false 默认是false 始终打开标准输入 -t --tty=true|false 默认是false 为docker分配个伪tty终端 这样新创建的容器才能提供个交互式的shell 在ubuntu容器中就和在ubuntu服务器一样 执行ps -ef 测试 exit退出 docker attach 容器id能进去容器 ctrl+q+p能退出后台执行容器 添加各种依赖 添加ppa仓库 这个是OpenJDK 8 ppa仓库。 add-apt-repository ppa:openjdk-r/ppa 更新ubuntu的下载指令 apt-get update 安装openjdk8 apt-get install openjdk-8-jdk 安装curl apt install curl 安装vim apt-get install -y vim 安装sz rz apt-get install lrzsz 安装net指令库 apt install

ubuntu18 Docker 安装 mysql

北战南征 提交于 2020-08-13 04:18:14
2. Docker 安装 mysql Docker查找mysql 1.在docker中搜索mysql docker search mysql 上述操作相当于访问hub.docker.com.搜索mysql OFFICIAL表示官方镜像 AUTOMATED 自动构建 Tags 表示构建的版本 安装mysql镜像 #2 从docker中获得mysql镜像 #docker pull 软件名称:版本号 #版本号通过查看tags获得 #通过国外网站拉取mysql镜像会很慢 docker pull mysql:5.7 #3.设置官方国内镜像 docker pull registry.docker-cn.com/library/ubuntu:16.04 #3.1查看/etc/docker/daemon.json #如果没有可以创建,有则修改 vi /etc/docker/deamon.json #/etc/docker/deamon.json内容 { "registry-mirrors": ["https://registry.docker-cn.com"] } #3.2.重启服务 serice docker restart #3.3.验证是否生效 #如果看到注册的地址,代表生效 docker info | grep Mirrors -A 1 #3.4绑定镜像以后,pull命令下载速度提高

windows远程连接ubuntu

三世轮回 提交于 2020-08-13 03:37:14
Xrdp 是 Microsoft 远程桌面协议 (RDP) 的开源实现,允许您以图形方式控制远程系统。使用 RDP ,您可以登录到远程计算机并创建一个真实的桌面会话,就像您已登录到本地计算机一样。 通常, Linux 服务器没有安装桌面环境。我们的第一步是安装 X11 和一个轻量级桌面环境,它将充当 Xrdp 的后端。 Ubuntu 存储库中有几个桌面环境 (DE) 。我们将安装 Xfce 。它是一个快速,稳定和轻量级的桌面环境,非常适合在远程服务器上使用。 1 在服务器上安装 Xfce : sudo apt update sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils 安装过程中出现下面错误时,sudo apt-get -f install 下列软件包有未满足的依赖关系: nvidia-dkms-390 2 安装 Xrdp Xrdp 包在默认的 Ubuntu 存储库中可用。要安装它,请运行: sudo apt install xrdp 安装过程完成后, Xrdp 服务将自动启动。您可以通过键入以下内容来验证 Xrdp 是否正在运行: sudo systemctl status xrdp 输出看起来像这样: ● xrdp.service - xrdp daemon Loaded: loaded

使用迅为IMX6ULL开发板第一个汇编实验(二)

∥☆過路亽.° 提交于 2020-08-13 02:46:35
94 .4 GPIO 时钟 时钟 如果使用 GPIO,我们必须要使能 GPIO 的时钟。i.MX6 ULL 的每个外设的时钟可以独立的使能,我们可以关闭不使用的外设时钟,可以达到节能的目的。如果使用某个外设,我们必须要打开对应的时钟。《I.MX6ULL 参考手册》的第 18 章“Clock Controller Module (CCM)”是关于 i.MX6ULL 时钟的讲解,我们可以看下该章节里面外设时钟的使能寄存器。跟外设时钟使能相关的寄存器有: CCM_CCGR0 CCM_CCGR1 CCM_CCGR2 CCM_CCGR3 CCM_CCGR4 CCM_CCGR5 CCM_CCGR6 一共 7 个。我们来看下 CCM_CCGR0 寄存器如何使能一个外设时钟,改寄存器的描述如下图所示: 我们从上图可以看到 CCM_CCGR0 寄存器是 32 位的,每 2 位控制一个外设时钟,比如 bit1:bit0 控制aips_tz1 的时钟,两位的操作方式如下: 00 //所有模式下都关闭外设时钟 01 //只有在运行模式下打开外设时钟 10 //保留 11 //除了停止模式以外,其他所有模式下时钟都打开 如果我们要打开 aips_tz1 的外设时钟,需要设置 CCM_CCGR0 的 bit1 和 bit0 都为 1,也就是 CCM_CCGR0=3,如果关闭 aips_tz1 的外设时钟