自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(264)
  • 资源 (2)
  • 收藏
  • 关注

原创 敏捷开发 SOLID 原则

文章目录单一职责原则(SRP)开放-封闭原则(OCP)Liskov 替换原则(LSP)接口隔离原则(ISP)依赖倒置原则(DIP)设计中的拙劣设计症状:僵硬性(Rigidity):很难对系统进行改动,因为每个改动会迫使很多对系统其他部分的其他改动。脆弱性(Fragility): 对系统的改动会导致系统中和改动地方在概念上无关的许多地方出现问题。牢固性(Immobility): 很难解开系统的纠结,让其成为在其他系统中重用的组件粘滞性(Viscosity):做正确的事情比做错误的事情困难不必要的

2021-12-11 17:38:43 600

原创 python 一些使用速记

1. numpy 数组打印在调试代码时,需要打印一个 Numpy 数组,直接 print 打印,可能会没有逗号:[[[[ 71. 104. 107.] [ 16. 78. 68.] [ 60. 61. 82.]] [[120. 106. 123.] [120. 54. 107.] [123. 82. 33.]] [[ 77. 112. 6.] [111. 94. 39.] [ 63. 110. 78.]]]我们可以使用 pri

2021-11-30 11:24:41 1077

原创 编译 llvm Kaleidoscope example 错误

这里是记录在编译 llvm 官方 tutorial 时,前两章都是使用的标准库,在第 3 章就开始依赖 llvm 项目工程的内容了。官网编译命令为:clang++ -g -O3 toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core` -o toy在本地编写代码,编译时可能会遇到以下问题:头文件找不到fatal error: ‘llvm/ADT/APFloat.h’ file not found#include

2021-11-16 09:02:34 1646 4

原创 Mac 编译 onnx-mlir

onnx-mlir 是 Onnx 团队推出的一款图编译器,定义了 onnx dialect,将一个 .onnx 模型编译转成一个对应的 IR 表示。 这里主要是介绍 Mac 如何编译 onnx-mlir。主要步骤还是根据官网的来,但是鉴于不同的版本,环境等,在编译过程中可能会遇到这样那样的小问题。这里记录一下在 M1 Mac 上编译的过程,希望可以帮助到有需要的小伙伴。依赖安装前置依赖# 安装 Ninjabrew install ninja# 安装 cmakebrew install cmak

2021-11-07 22:53:09 666

原创 CMake Error at CMakeLists.txt:92 (add_subdirectory):

这种一般是缺少第三方依赖项,可以尝试下面的命令:git submodule init && git submodule update参考:https://stackoverflow.com/questions/59291154/cmake-error-at-cmakelists-txt994-add-subdirectory

2021-11-07 17:27:53 1689

原创 Mac 安装 pip

在配置环境的过程中有时需要使用 pip 来下载, mac 可以使用如下命令下载:curl https://bootstrap.pypa.io/get-pip.py | python3

2021-11-07 16:55:00 1329

原创 github镜像加速下载

有到时候因为网络的问题,或者一些例如 llvm 这样的项目工程比较大,很难下载且下载过程中容易出现中断,可以使用下面的镜像下载来加速:原下载命令:git clone https://github.com/llvm/llvm-project.git这里 https://github.com.cnpmjs.org 是国内镜像源,可以将我们想下载的项目为:git clone https://github.com.cnpmjs.org/llvm/llvm-project.git其他项目工程类似,改为:

2021-11-07 16:52:37 1067

原创 Mac 编译 llvm / mlir

前言Mlir 现在合并到了 llvm 工程项目中,虽然官网贴出了编译的命令,但是因为环境配置或者是系统的问题直接用官网的命令会遇到各种错误,这里对 Mac 编译 llvm 中的 mlir 做一个记录,希望也可以帮助到有需要的小伙伴。前期环境配置首先要 clone 下来整个 llvm 项目,可以使用下面的命令:git clone https://github.com/llvm/llvm-project.git但是 llvm 整个项目比较大,下载速度可能会很慢,并且下载中途会出现下载中断的问题,这里

2021-11-07 16:44:15 667

原创 error: invalid application of ‘sizeof‘ to incomplete type “xxxxx“

解决方式报错相关类,或者使用相关类作为类成员函数的类析构函数需要使用 default 关键字。问题说明在编译代码时,遇到了 error: invalid application of ‘sizeof’ to incomplete type “mlir::Pass” 的问题,因为相关代码与 std::unique_ptr 相关,遇到这一问题主要是 mlir::Pass 报错的这个类:std::unique_ptr<mlir::Pass> xxxxx;官方关于 std::unique_p

2021-11-04 17:22:32 5133

原创 Pycaffe 使用集锦

Pycaffe 一些使用记录

2021-10-24 23:50:51 2920

原创 bash scp: command not found

scp command not found

2021-09-29 19:41:22 582

原创 C++ tips

本文暂时收录一下 C++ 一些小的知识点。使用 sstream 等写入数据到文本,换行使用 “\n” 比使用 “std::endl” 快大概 3-5 倍。主要是 “std::endl” 会刷新输出缓存区,下面是实际数据对比:# 使用 std::endl # 使用 \n花费了20.0809秒 花费了4.73334秒花费了4.65392秒 花费了1.16888秒花费了1.37358秒 花费了0.288983秒花费了0.349523秒 花费了0.07281秒

2021-08-30 10:56:45 149

原创 [Pytorch 源码阅读] ——torch.trace.jit 接口 C++ 源码阅读

文章目录前言torch::jit::TypeClassTypec10::ivalue::Objecttorch::jit::Objecttorch::jit::Module转化过程总结前言本文主要是从 torch.jit.trace 接口,打开 Pytorch JIT 的大门,介绍在正常 nn.module 经过 Trace 之后形成 scriptModule 的过程和涉及到的 C++ 类,因为涉及到的内容蛮多的,所以这里就从源码的角度介绍了一些相对比较重要,或者是可以帮助我们理解的类。在开始学习之前

2021-08-23 08:26:21 3238

原创 [Pytorch 源码阅读] —— 谈谈 dispatcher(二)

文章目录前言源码阅读IValue 类schemaOperatorHandleKernelFunctionOperatorEntryDispatcher内部调用逻辑kernel 是如何注册上的根据数据类型再次分发总结前言这里接上文 [Pytorch 源码阅读] —— 谈谈 dispatcher 中对 Pytorch 中 dispatcher 的相关概念介绍,主要是对相关概念和类间的关系做一个概述,没有读过前面文章的同学建议先读一下前面的文章。这里就是深入各个类的源码,对这些类做一个详细的解读。文章篇幅会

2021-08-08 11:40:35 2019 1

原创 [Pytorch 源码阅读] —— 谈谈 dispatcher(一)

文章目录概念介绍diapatch key 的表示和计算dispatch table 注册boxing 和 unboxing源码分析这篇文章的内容主要还是基于 EdWard z. yang 的 Let’s talk about the PyTorch dispatcher 来梳理一下 Pytorch dispatcher 相关的内容学习以及源码阅读。概念介绍dispatcher 可以理解为分发器,可以根据关于 tensor 输入的一些信息来决定要调用哪一块的程序。其主要是通过分发表(dispatch

2021-08-07 19:06:06 1839

原创 vscode python/C++ Debug 调试 Pytorch源码

本文主要介绍如何用 vscode 来调试 python/c++ 的 Pytorch 源码。首先要先确保有一个从源码编译的 Debug 版本的 Pytorch项目,具体 Debug 版本的源码编译网上有很多相关资料,可以自行查阅操作一波。接下来主要就是 vscode 的配置工作。创建需要调试的文件首先在 Pytorch 项目工程的主目录下创建一个子文件夹,在这个子文件夹中首先写一个我们想要调试的示例代码。 like this:配置 vscode python 调试这里要首先安装一个 Python

2021-08-05 11:50:34 4420 6

原创 [Pytorch 源码阅读] ——Pytorch python 接口的 C 扩展

前言在前面的博客中介绍了 Tensor 相关类的 C++ 实现,本文主要介绍 Pytorch 的 Tensor 是如何在 Python 中使用起来的,更大一点的题目就是 Pytorch 中 python 的 C 扩展,说明 Pytorch 是如何通过 python 接口来调用相关 C++ 实现的。Python c 扩展在开展正式介绍之前,需要先了解一些前提知识,就是标准的 Python c 扩展的一些内容。python 中模块(module)和包(package)的简介:模块(module)就是

2021-07-26 10:19:26 1378 1

原创 [Pytorch 源码阅读] —— Tensor C++相关实现

文章目录版本介绍概念介绍源码分析intrusive_ptr 类TensorImpl 类StorageImpl 类总结版本介绍因为 Pytorch 版本迭代还是蛮快的,这里给出我源码阅读的版本及 commit 号以供参考。master 分支,commit 号: 047925dac1c07a0ad2c86c281fac5610b084d1bd概念介绍Tensor 是 Pytorch 核心的数据结构,使用过 pytorch 的同学想必都不会陌生,它可以包含 scalar type 的数据(例如 floa

2021-07-25 21:44:08 3492 3

原创 libtorch aten::Tensor 与 std::vector 互换

在使用 libtorch 的过程中我们可能会遇到需要 libtorch 中的 at::Tensor 类型转化成 std::vector 常规类型存储,或者从 std::vector 生成一个 at::Tensor 供我们使用。at::Tensor 转 std::vector这里以 at::Tensor 里面的数据类型都是 float 为例,将 std::vector<T> 的 T 直接设置成对应的基本数据类型即可:aten::Tensor ten; // 假设 ten 里面已经有数据了s

2021-07-23 21:13:59 5129

原创 [Pytorch 源码阅读] —— TH中的 c 语言泛型编程

前言基于 pytorch 1.10.0 版本,mastercommit 号:047925dac1c07a0ad2c86c281fac5610b084d1bd万事开头难,还是咬着牙开始了 Pytorch 的源码阅读内容,虽然感觉难度很大,而且有点无从下手,希望坚持下去能有所进步!这里光源码编译就花了一些时间,尝试了 macbook,windows,和 linux 下 git clone 源码然后按照官方说明操作,但是基本碍于系统或者网络问题,git 拉第三方以来的时候会有很多问题,最后只是在 li

2021-06-20 22:12:01 486 1

原创 gnutls_handshake() failed: The TLS connection was non-properly terminated.

在使用 git clone 或者 git submodule update --init --recursive 有时会遇到下面的问题:gnutls_handshake() failed: The TLS connection was non-properly terminated.这里查询了一些不同的方法,我这边实测有效的是:git config --global --unset http.proxy因为拉取第三方应用会有很多的包需要拉取,所以当运行完上述的命令后可能当前失败的包可以了,

2021-06-18 11:01:55 4115

原创 Macbook git clone 速度慢

之前按照网上的博客配置过相关的 hosts 文件,但是现在重新下载又慢了起来,刚才查找了方法重新设置了一下,速度又正常了,而且用不同方法,不同博客得到的 ip 地址还都不同???这里记录一下查到的方法,日后再遇到可以每次查询,然后再改好了。查询网页 ipnslookup github.global.ssl.fastly.Net我这边可以可以得到下面的结构:Non-authoritative answer:Name: github.global.ssl.fastly.NetAddress:

2021-06-17 23:47:21 416

原创 C++11 测试代码运行时间

需要包含 chrono 头文件。#include <chrono>// 设置开始时间auto start = std::chrono::system_clock::now(); // 需要测试代码func();// 设置结束时间auto end = std::chrono::system_clock::now(); // 精确到微秒,除此之外,还有五种时间单位:hours, minutes, seconds, milliseconds, nanosecondsauto

2021-06-01 11:44:49 455

原创 C++ 测试驱动开发 TDD(二)

增加Soundex 算法测例 3重构以后可以继续下一个测试,我们可以处理规则2(第一个字母后,用数字替换辅音),替换规则中字母 b 对应数字 1,则可以写下面这样的测例:TEST_F(SoundexEncoding, PadWithZerosToEnsureThreeDigits) { ASSERT_THAT(soundex.encode("Ab"), Eq("A100")); }...

2021-05-29 16:50:02 718 2

原创 C++ 测试驱动开发 TDD(一)

文章目录TDD 介绍Soundex 算法示例介绍增加Soundex 算法测例1增加Soundex 算法测例2Soundex 算法测例1 、2重构增加Soundex 算法测例 3最近阅读了《C++程序设计实践与技巧:测试驱动开发》,也算是第一次系统的了解到 TDD 的概念吧,因为整个调试的过程太细了,想要一次性说明白着实需要一点功力,这里权当一些读后感分享,有兴趣的读者可以自己找到这本书来读读看。 虽然不能说可以立马有所了解,或者就可以在实际业务代码中就用上了,但是总得先有这么一个了解过程嘛。TDD 介绍

2021-05-29 16:20:39 1209 2

原创 PyTorch Eager mode and Script mode

本文大概总结一下近期对 pytorch 中的 eager 模式还有 script 模式的学习所得。前言断断续续接触这两个概念有很长一段时间了,但是始终觉得对这两个 pytorch 的重要特性的概念就是比较模糊,中间还夹杂了一个 JIT trace 的概念,让我一句话归纳总结它们就是:Eager 模式:Python + Python runtime。这种模式是更 Pythonic 的编程模式,可以让用户很方便的使用 python 的语法来使用并调试框架,就像我们刚认识 pytorch 时它的样子,自带

2021-05-29 13:58:19 3159 1

原创 Anaconda 创建虚拟环境

文章目录创建虚拟环境创建虚拟环境到指定路径激活虚拟环境退出虚拟环境删除虚拟环境这里主要是记录几个常用的 conda 虚拟环境相关的命令:创建虚拟环境conda create -n your_venv_name python=x.x将上述 your_venv_name 及 x.x 替换成自己想要的虚拟环境名字和 Python 版本即可创建虚拟环境到指定路径可能因为内存空间不够,我们需要把虚拟环境建在指定的路径下,可以使用下面的命令:conda create --prefix=/path/to/

2021-05-13 15:18:35 395

原创 M1 Macbook vscode C++ debug 调试

这里给出自己摸索的最基本的调试方式,需要进阶调试感觉还是需要一定的学习成本的,尝试了几个网上的博客,暂时没遇到直接可以运行的。所以这里记录一下大概方法。主要是需要在目录文件下配置两个 json 文件(tasks.json,launch.json)版本说明VS code 版本是在官网直接下载的 M1 版本的 February 2021 (version 1.54)官方下载扩展主要是要下载 codeLLDB 的下载,直接在 VS code 里面搜索下载就好了(可能需要从网上下载 VSIX,不过 VS

2021-05-11 23:15:35 6692 6

原创 fatal: Needed a single revision, invalid upstream “xxxx“ 问题解决

在日常使用 git 的时候,使用 git rebase 可能会遇到如下问题:使用命令:git rebase branch_name得到错误:fatal: Needed a single revisioninvalid upstream ‘branch_name’这时候我们可以用下面的命令解决:git rebase origin/branch_name...

2021-04-22 17:07:03 5170

原创 STL 系列 —— 迭代器与 traits 编程(二)

文章目录前言迭代器内置类型声明迭代器种类 iterator_category数值型别 value type差距类型 difference typereference type 和 pointer type迭代器type traits前言计算机科学的许多问题,都是通过增加间接层的方式解决的,STL 最为人称道的是将容器和算法的实现分割开了,迭代器就是分开它们必须的中间层。算法是容器的使用者,如若二者不独立开来,算法实现的过程中会暴露很多关于容器使用的细节,而这些细节并不是每个人都可以了解的,何不让相关容器

2021-04-18 19:04:50 378

原创 STL 系列 —— 空间配置器(一)

前言《STL 源码剖析》,《泛型编程与STL》这两本书都是候捷大佬译的,且在 《STL 源码剖析》最后推荐读物中也出现了 《泛型编程与STL》的身影,机缘巧合就找了一下相关资源,快速翻看了一下,发现两本书的内容是如此相辅相承的,所以这里就放在一起说一说。虽然天下大作,必作于细,不过目前博主的水平有限,还是在浅浅的一层学习中,所以接下来的系列文章不会深入细节中,否则系列文章难免会变成单纯的读书摘要,又臭又长,也会给阅读的人带来不小的负担。如果对相关细节感兴趣的小伙伴还是可以自行阅读原书籍的。这也是第二遍

2021-04-18 13:25:27 151

原创 装载与动态链接——动态链接(二)

文章目录为什么要动态链接地址无关代码延迟绑定动态链接步骤与实现动态连接器自举装载共享对象重定位和初始化显式运行时链接前文速递:静态链接——编译和链接(一)静态链接——目标文件(二)静态链接——静态链接(三)装载与动态链接——装载与进程(一)本文主要是《程序员的自我修养》一书的内容摘要和梳理,如有需要并且没有被本文涵盖的内容,建议读者自行观看原书。前面主要写了文章来介绍书中对程序的静态链接的相关内容,接下来系列开启对动态链接的学习。为什么要动态链接静态链接可以使程序开发者可以独立地开发和测试

2021-04-04 14:54:31 489 2

原创 装载与动态链接——装载与进程(一)

文章目录进程虚拟地址空间装载的方式覆盖装入页映射进程虚寸空间分布前文速递:静态链接——编译和链接(一)静态链接——目标文件(二)静态链接——静态链接(三)本文主要是《程序员的自我修养》一书的内容摘要和梳理,如有需要并且没有被本文涵盖的内容,建议读者自行观看原书。前面主要写了 3 篇文章来介绍书中对程序的静态链接的相关内容,接下来系列开启对动态链接的学习。在介绍动态链接的内容之前要先介绍可执行文件的装载,看看可执行文件的装载的本质是什么。进程虚拟地址空间程序与进程这个算是比较基础的概念区别

2021-04-03 16:58:50 262

原创 静态链接——静态链接(三)

文章目录空间与地址分配符号解析与重定位静态库链接C++ 与 ABI本文主要是《程序员的自我修养》一书的内容摘要和梳理,如有需要并且没有被本文涵盖的内容,建议读者自行观看原书。基于前面两部分的内容,分别介绍了程序编译的基本流程,及目标文件结构的相关内容,本文开始介绍静态链接的过程。静态链接——编译和链接(一)静态链接——目标文件(二)空间与地址分配前面已经介绍了目标文件都是由不同的 section 组成的,本小节主要是介绍链接器是如何将不同目标文件的各个段合并在一起,最终组成一个输出文件的。最简

2021-04-03 15:56:13 536 1

原创 TypeError: z_(): incompatible function arguments. The following argument types are supported: 问题解决

一般运行 python 脚本遇到这种问题都是给的参数不是严格匹配函数需要的输入的,这种需要具体情况具体分析,但是主要解决就是好好检查自己的代码,函数输入哪里会存在不匹配的地方。以我下面的代码为例,注册 Pytorch plugin 算子时://修改前 def symbolic_plugin(g, arg0, arg1, arg2): return g.op('plugin, g, arg0, arg1, arg2)这个可能之前某些情况下确实可以正常运行,但是随着代码更新或者接口调

2021-04-02 21:48:20 15200 1

原创 Command ‘[‘which‘, ‘c++‘]‘ returned non-zero exit status 1. 问题解决

在运行 Python 脚本的时候可能会遇到下述问题: Command '['which', 'c++']' returned non-zero exit status 1.应该是缺少 build-essential 依赖,运行下面命令即可解决:apt-get install build-essential

2021-04-02 21:17:36 5902 2

原创 M1 macboook 环境配置

文章目录安装 Homebrew安装 vscodeGitHub 网速慢office 365最近新买了一个 M1 macbook,从这么多年的 windows 阵营到苹果阵营可是有太多的不习惯了,从输入法切换,大小写切换,到创建文件,再也没有右键刷新,习惯了各种破解软件的我,对于 Mac office 都要花钱解决,我…。作为一个 Mac 小白,刚开始真的是有太多的不习惯了。买 Mac 需要配置安装软件的环境嘛,所以这里记录一下我遇到的问题,后面会不断更新,希望可以帮到有缘人。安装 Homebrew

2021-03-28 15:47:11 612

原创 静态链接——目标文件(二)

文章目录目标文件目标文件格式目标文件是什么样的目标文件的细节深入ELF 文件结构描述符号前文速递:静态链接——编译和链接(一)本文主要是《程序员的自我修养》一书的内容摘要和梳理,如有需要并且没有被本文涵盖的内容,建议读者自行观看原书。在前文中介绍了源代码输入编译器以后,编译器主要做了哪些工作,最后引出链接这个话题,在详细介绍静态链接相关概念之前,需要花费一章的功夫来介绍目标文件这一话题,介绍目标文件里具体都有什么内容,为下面及本书之后的内容做一个铺垫。目标文件目标文件从格式上说就是源代码经过编译

2021-03-14 17:19:24 330

原创 terminator except (KeyError,ValueError), ex: SyntaxError: invalid syntax 问题解决

这个主要是 Python 版本的问题,要么修改 Python 版本,要么修改 terminator 的设置:sudo vi /usr/bin/terminator把第一行的:#!/usr/bin/python修改为:#!/usr/bin/python2然后保存退出即可。

2021-03-11 16:24:10 647

原创 静态链接——编译和链接(一)

本文主要是《程序员的自我修养》一书的内容摘要和梳理,如有需要并且没有被本文涵盖的内容,建议读者自行观看原书。编译与链接本部分主要是介绍关于程序源代码是如何到可执行文件的,及这其中涉及到的主要步骤(例如本书的主题——编译)的相关基本概念。源代码到可执行文件主要是分为4个步骤:预处理(Preprocess),编译(Compilation),汇编(Assembly) 和链接(Linking)。预处理预处理部分主要是处理源代码以 “#” 开头的预编译指令:展开所有的宏定义 ,“#define”。处理

2021-03-11 09:58:51 455

Python.Machine.Learning.2015-Sebastian Raschka

Sebastian Raschka 2015版机器学习英文版书籍下载,高清版PDF

2017-09-30

在windows和ubuntu上面使用caffe

里面收录了比较全的caffe安装教程,适合初次在Windows或者Ubuntu操作系统下实战caffe的安装,及实战mnist,cifar10数据集的举例博客,是caffe初学者的首选

2017-03-13

空空如也

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

TA关注的人

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