自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 C++ RAII 设计机制

RAII 是 Resource Acquisition Is Initialization,也就是“资源获取就是初始化”的简称,是 C++ 语言的一种管理资源、避免泄漏的惯用写法。利用的就是 C++ 构造的对象在离开作用域时会调用其内部的析构函数的规则。RAII的做法是当使用一个对象,在其构造时获取对应的资源(new),在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源(delete)。......

2022-08-31 01:59:23 355 1

原创 Pytorch Dataloader 模块源码分析(二):Sampler / Fetcher 组件及 Dataloader 核心代码

总算写完了 DataLoader 部分,总结这一块的源码主要是因为公司最近用到了相关的业务,需要对 Dataset 和 DataLoader 进行改造,因此认真读了这一部分的源码。总而言之,Dataset 和 DataLoader 模块为整个 Pytorch 提供了通用的数据加载和预处理接口,整体代码有很高的鲁棒性。如果说这个模块还有什么可以改进的地方,主要就在于 I/O 的部分,Dataset 在实现 shuffle 操作时,加载数据使用的是随机 I/O,这会大幅降低 I/O。...

2022-08-30 15:24:07 712

原创 Pytorch Dataloader 模块源码分析(一):整体框架与 Dataset 组件

前文提到 Dataset 类支持两种风格,map 和 iterable,map 风格指的是该 Dataset 对象可以通过传入一个下标(键)来访问具体的值,也就是内部实现是一个哈希表(python 中就是字典),而 Iterable 数据集则是前文提到的可迭代对象,可以通过 for 循环遍历内部的数据。由于篇幅较长,后面的部分将放在后半篇。因此,map 风格的 Dataset 需要实现__getitem__方法而 iterable 风格的 Dataset 需要实现__iter__和__next__方法。..

2022-08-29 16:57:41 687

原创 为什么 C++ 比 Python 快?从编译器和解释器的角度分析差异

本文从 C++ 和 Python 的运行过程入手,从编译器和解释器的差异分析了为什么 C++ 会比 Python 的运行速度快。在现代的企业场景中,追求极致代码运算效率的场景通常还是使用的 C++,比如服务器端编程、游戏编程等。...

2022-08-28 14:19:11 2461

原创 线程池大小选择:针对 I/O 密集型场景和 CPU 密集型场景

总的来说,线程 I/O 时间比例越高,需要越多线程来 overlap 这个 I/O,反之需要越少的线程。同时需要认识到,并不是使用线程池就一定比单线程高效,单线程相比多线程避免了上下文切换时间和锁。因此也可以很高效。有了以上方法,我们就可以做到在不同业务场景中选择不同的线程池大小了。......

2022-08-23 23:57:27 3015 1

原创 Docker 与 Kubernetes 的基本原理与联系

可以看到,虚拟机需要初始化客户端的操作系统,而 Docker 是运行在主机的操作系统上的,这意味着 Docker 在创建时不需要重新加载一个操作系统,实现了高度的轻量化。这意味着 Docker 的创建速度要远高于虚拟机,且其需要的系统资源较少,一台主机上可以运行的 Docker 数量高于虚拟机。” Docker 的出现让这个梗成为了过去式,开发者可以打包他们的应用、依赖包和环境变量等配置到一个容器中,然后将这个容器发布安装 Linux 的机器上,这个过程省去了开发与运维配置相同环境的工作。...

2022-08-19 01:02:56 312 1

原创 数据结构与算法:哈希表基本原理及Python实现

数据结构与算法:哈希表基本原理及Python实现哈希表的基本原理哈希表的实现原理(20分钟)1. 哈希表与哈希函数哈希表与二叉树、链表等数据结构类似,也是用于存放数据的一种数据结构。哈希表的具体应用场景为:快速判断一个数据是否存在于该数据结构中,且找到其下标(比如:判断22是否在1、65、34、97、12、22、48、89中)。哈希表通过哈希函数实现,哈希函数实际上就是一个取模(求余数)的过程,我们直接以例子来讲解哈希表:需要存放15、23、4、19四个数据(称为关键字Key),数组大小设置为7

2021-03-31 18:59:34 263

原创 全连接神经网络的前向计算、反向传播原理

全连接神经网络的权值更新原理推导(前向计算+反向传播)本问我们首先介绍了全连接神经网络权值更新的基本数学原理——梯度下降算法。之后本问将介绍单层感知机(单输出全连接神经网络)的权值更新原理,从而进一步讲解全连接神经网络权值更新的原理。1 梯度下降算法梯度下降算法是一种寻找函数极小值的算法,梯度下降算法将在后文的权值更新中用于求解目标函数的极小值(后文会解释什么是目标函数)。1.1 梯度首先需要了解的是:梯度是什么?梯度是一个向量,函数沿着这个向量的方向,函数值增加的速度最快。梯度中包含函数对各自

2021-03-26 00:06:34 936

原创 二叉树:深度优先遍历与广度优先遍历(及其Python实现)

二叉树遍历顺序与Python实现本问记录二叉树的深度优先遍历算法和广度优先遍历算法的遍历顺序和python实现。1 深度优先遍历深度优先遍历算法包括先序遍历、中序遍历和后续遍历。1.1 深度优先遍历顺序我们根据下图只有3个节点的二叉树说明深度优先遍历顺序。(各节点分别标上序号)先序遍历:0→1→2中序遍历:1→0→2后序遍历:1→2→0注意主要差别在于节点0在排序中的位置,节点1和节点2的相对位置是不变的(1在前,2在后)。一般情况下的二叉树,如下图所示:(各节点分别标上序号)

2021-03-20 22:48:10 2377 2

转载 Ubuntu系统 TeamViewer一直显示“未就绪,请检查你的连接”

Ubuntu系统 TeamViewer一直显示“未就绪,请检查你的连接”sudo teamviewer --daemon enablesudo systemctl start teamviewerd.service

2020-03-30 12:45:58 1690

转载 新安装的ubuntu16.04不能连接wifi的解决办法

本人Y7000p联想电脑改方法有效https://blog.csdn.net/qq_33591712/article/details/83247381

2020-03-29 20:33:59 1265

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除