XNOR-Net
XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
这是 2016 年的文章。
代码地址(lua): https://github.com/allenai/XnoR-Net/
python code : https://github.com/jiecaoyu/XNOR-Net-PyTorch
0. 摘要翻译
作者提出了两种有效的方法来近似标准卷积神经网络:Binary-Weight-Networks 和 XNOR-Networks。Binary-Weight-Networks 中,二值化的卷积核节省了 32 倍的内存。在 XNOR-Networks 中,过滤器和卷积层的输入都是二值化的。XNOR-Networks 使用简单的二元操作近似卷积。最终实现了 58 倍的卷积操作加速(相比高进度的操作数量)和 32 倍的内存节省。XNOR-Nets 提供了在 CPUs 上实时运行 SotA 的可能。作者在 ImageNet 分类任务上评估了该方。使用 AlexNet 二值化后的网络,其在图 ...
BASIC BINARY CONVOLUTION UNIT FOR BINARIZEDIMAGE RESTORATION NETWORK
BASIC BINARY CONVOLUTION UNIT FOR BINARIZEDIMAGE RESTORATION NETWORK
Published as a conference paper at ICLR 2023
1. 作者做了什么?
由于我的毕设是基于BNN的轻量图像复原,所以想找一些基于BNN的工作,前些年的工作主要是基于BNN在做图像分类,在底层视觉领域做的并不多。
作者对网络的BN等部分进行了测试,分析出了其在底层视觉任务的中的作用。
这篇文章提出了一个新的卷积单元BBCU,利用这个卷积单元替代了传统神经网络的一些部分,从而将BNN应用在图像超分、去噪、去模糊等领域,取得了比一些全精度方法更快,效果更好的结果。
这篇文章是字节跳动发的,我感慨一下,对于这种我能想到有落地意义的研究,企业的洞察力还是强,而且动作很快,相当于给出了这个方向的一个 baseline 。
老师希望我开题能提出如何改进,可是我对这个领域感觉太模糊了,提不出切实可行的改进方案,这就是论文粗读带来的弊端,好像了解了,但什么也不知道,所以还是得多精度一些文章,了解了细节才能有 ...
论文阅读方法
论文阅读方法
前言
读 5~20 篇论文就足以了解一个领域。
读 50~100 篇论文就可以对一个领域非常熟悉。
阅读
这里不是精读、是大量读文章扩展知识的方法。
快速浏览题目、小标题、图片(网络架构图等)
INTRODUCTION、CONCLUSION 并仔细看图片及其注释、快速浏览文章,related works 可能会比较有用(毕竟作者会经历多写,让每个审稿人开心的看到自己的成果,从而提高过审率)
跳过数学推理,快速阅读
阅读全文,但是跳过一些无关的描述(作者写的时候也不知道什么重要什么不重要,像一些对未来的猜测,奇怪的应用等都可以直接跳过,直击算法的核心)
需回顾问题
作者试图完成什么?
这个方法的关键要素是什么?
你能从中收获什么有用的思想?
你还想进一步读哪些参考文献?(或者还有哪些工作你想继续追踪下去?)
完全掌握
通读后,认为自己完全理解。
从头开始,拿出一张白纸,从0开始,推导出所有的数学结论。(个人认为代码实现能力可能也是这样锻炼的)
code: 最简单的是跑通。能改已经算有一定的理解了。
职业规划
工作最重要的是你的 manager 以及你将要加入的团 ...
Cpp Primer CH1
为了能在寄算计大潮中存活,要认真学习C++了,边看《C++ Primer》边做课后习题,把每一章的习题都记录下来。
因为以后开发用 Linux 环境比较多,所以运行环境用 Ubuntu,使用 VS Code 作为编译器。
使用的服务器的版本信息如下:
g++ 的版本信息如下:
《C++ Primer》CH1 开始
练习1.1
查阅你使用的编译器文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。
1234int main(){ return 0;}
练习1.2
改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
1234int main(){ return -1;}
可以看到返回的错误号是 255,开始困惑,不是 return -1; 吗?原因如下:
返回值本应该是 -1,但是从函数中返回的数值会通过加减 256 的方式将返回值控制在 0~255 之间。
练习1.3
编写程序,在标准输出上打印 Hello, World。
1 ...
WebServer5-项目实战
Web Server 项目实战
1. 阻塞/非阻塞、同步/异步(网络IO)
典型的一次IO的两个阶段是什么?数据就绪 和 数据读写
数据就绪:根据系统IO操作的就绪状态
阻塞
非阻塞
数据读写:根据应用程序和内核的交互方式
同步:用自己的时间去搬运数据
异步:使用别人的时间,直接帮你搬运好
在处理 IO 的时候,阻塞和非阻塞都是同步 IO,只有使用了特殊的 API 才是异步 IO。
一个典型的网络IO接口调用,分为两个阶段,分别是“数据就绪” 和 “数据读写”,数据就绪阶段分为阻塞和非阻塞,表现得结果就是,阻塞当前线程或是直接返回。
同步表示A向B请求调用一个网络IO接口时(或者调用某个业务逻辑API接口时),数据的读写都是由请求方A自己来完成的(不管是阻塞还是非阻塞);异步表示A向B请求调用一个网络IO接口时(或者调用某个业务逻辑API接口时),向B传入请求的事件以及事件发生时通知的方式,A就可以处理其它逻辑了,当B监听到事件处理完成后,会用事先约定好的通知方式,通知A处理结果。
2. Unix/Linux上的五种IO模型
a.阻塞 blocking
调用者调用了 ...
WebServer4-Linux网络编程
Web Server4
第四章 Linux 网络编程
1. 网络结构模式
C/S 结构
简介
服务器 - 客户机,即 Client - Server(C/S)结构。C/S 结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。
客户机通过局域网与服务器相连,接受用户的请求,并通过网络向服务器提出请求,对数据库进行操作。服务器接受客户机的请求,将数据提交给客户机,客户机将数据进行计算并将结果呈现给用户。服务器还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户机同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。
在C/S结构中,应用程序分为两部分:服务器部分和客户机部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户机部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。
优点
能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后再提交给服务器,所以 C/S 结构客户 ...
WebServer3-Linux多线程开发
Web Server3
第二章 Linux 多线程开发
0. 遇到一个小问题
VScode 远程连接虚拟机出问题了,可能是我刚刚配置好了 WSL2 的环境导致的。
解决方案:
在任意一个文件夹中打开 VScode 别用 WSL2 登录就行
VSCode -> View -> Command Palette -> input "remote" -> Select Remote-SSH: Kill VS Code Server on Host...
重新启动即可正常连接
1. 进程概述
1.1 进程的概述
◼ 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。 一个进程可以包含多个线程。 同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 UNIX 进程只是多线程程序的一个特例,该进程只包含一个线程)
Linux 下线程的底层是进程实现的。
◼ 进程是 CPU 分配资源的最小单位,线程是操作系统调度执行的最小单 ...
WebServer2-Linux多进程开发
Web Server2
第二章 Linux 多进程开发
0. 解决 su 认证失败问题
1. 进程概述
1.1 程序和进程
程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程:
◼二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息。内核利用此信息来解释文件中的其他信息。(ELF可执 行连接格式)
◼机器语言指令:对程序算法进行编码。
◼程序入口地址:标识程序开始执行时的起始指令位置。
◼数据:程序文件包含的变量初始值和程序使用的字面量值(比如字符串)。
◼符号表及重定位表:描述程序中函数和变量的位置及名称。这些表格有多重用途,其中包括调试和运行时的符号解析(动态链 接)。
◼共享库和动态链接信息:程序文件所包含的一些字段,列出了程序运行时需要使用的共享库,以及加载共享库的动态连接器的路径名。
◼其他信息:程序文件还包含许多其他信息,用以描述如何创建进程。
◼进程是正在运行的程序的实例。是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
...
WebServer1-Linux系统编程入门
Web Server1
开始我的第一个 C++ 项目学习!
先跟着牛客视频学基础,写一个简单的 Webserver,然后再优化加入其他功能。
第一章 Linux 系统编程入门
1. 环境配置
VMware Workstation Pro 17 + Ubuntu 18.04
问题1:虚拟机没网:
将虚拟机网卡删除,重新添加
问题2:虚拟机与主机之间文件拖动传输
安装 VMware Tools -> 打开桌面上的CD文件 -> 将 .tar 文件放在桌面上解压 -> 运行其中的 vmware-install.pl 文件,安装相关依赖。这时应该可以正常使用了。
如果还是不能拖动复制文件,打开任务管理器 -> 服务 -> 找到 vmware 开头的所有服务,将未启动的服务手动启动,重启虚拟机后,可以正常拖动复制。
如果遇到权限问题无法操作,参考此文:【传送门】
问题3:Xshell 连接虚拟机,虚拟机中需要安装依赖
sudo apt install openssh-server
查看虚拟机 ip
安装依赖: sudo apt install net ...
VScode+LaTeX 配置时遇到的一些问题
VScode+LaTeX 配置时遇到的一些问题
1. json 配置文件总览
参考知乎大佬的配置。
只需要修改第 142 行和第150 行对应的 SumatraPDF 和 VScode 的路径即可。
我做的唯一的修改就是,作者设置的从 SumtraPDF 的返向跳转到代码的功能对我不起作用,每次外部打开又很麻烦,于是乎修改了第 150 行的参数设置为 --ms-enable-electron-run-as-node -gr \"%f\":\"%l\" ,就好用了。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711 ...