Logs of killing issues

Issue Method
PytorchCV package Image Classification and Segmentation Models
Parameter-Argument Defining-Calling
Positional 传参时前面不带 “变量名=”, 顺序不可变
Keyword 传参时前面加上 “变量名=”, 顺序可变
Class 实例化后用self指代
Method 类中定义的函数
Self 类的方法与普通的函数只有一个特别的区别——必须有一个额外的第一个参数名称, 按照惯例它的名称是self
model.modules(), model.named_modules(), model.children(), model.named_children(), model.parameters() 返回iterable可遍历;具有__iter__()或__getitem__()方法的对象,Python就认为它是一个iterable
卷积神经网络基本原理 MAC(Multiply Accumulates)乘加
FLOPs is abbreviation of floating operations which includes mul / add / div … etc.
FLOPS floating point operations per second
MACs stands for multiply–accumulate operation that performs a <- a + (b x c).
《TVM: End-to-End Optimization Stack for Deep Learning》 TVM是陈天奇领导的一个DL加速框架项目。它处于DL框架(如tensorflow、pytorch)和硬件后端(如CUDA、OpenCL)之间,兼顾了前者的易用性和后者的执行效率。
Pytorch Hook 函数 hook 函数用以获取我们不方便获得的一些中间变量
Magic Method: __call__() 将对象当方法使用
Magic Method: __new__() 创建类实例的静态方法
Magic Method: __repr__() 直接输出某个实例化对象,默认情况下输出是“类名+object at+内存地址”,可重写获得想要的属性信息
Magic Method: __del__() 销毁对象
Magic Method: __dir__() 列出对象的所有属性名、方法名
Magic Method: __dict__() 查看对象内部所有属性名和属性值组成的字典dict
conda配置文件.condarc .condarc是conda 应用程序的配置文件,在用户家目录(windows:C:usersusername,linux:/home/username/)
conda查看配置 conda config –show
conda添加更新镜像源 conda config –add channels …
conda删除更新镜像源 conda config –remove channels …
conda 代理 conda config –set proxy_servers.http … config –set proxy_servers.https …
深度学习—激活函数 Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish
CUDA Toolkit Nvidia 官方提供的 CUDA Toolkit 是一个完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项
cudatoolkit Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装 cudatoolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。在安装了 cudatoolkit 后,只要系统上存在与当前的 cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit
linux之ls -l命令 得到一个目录下的文件和子目录的详细信息,一共包含9列
Linux中bashrc位置 /etc/.bashrc
.bashrc用途 个性化指令;设置环境变量,所有环境变量名都是大写,Linux区分大小写
.bashrc 路径修改 “export PATH=$PATH:路径” ,在原来PATH的后面继续添加了新的路径,在运行特定指令时,系统会逐个位置去寻找文件。 $PATH 表示原先设定的路径,不能遗漏。不同于DOS/Windows,Unix类系统的环境变量的路径用冒号:分割,而不是分号;
.bashrc修改生效 source /etc/.bashrc
.bashrc文件没了怎么办? 从如下路径拷贝一份原始的.bashrc文件到用户home目录下:cp /etc/skel/.bashrc ~/
nvcc: command not found 1. nvcc安装在/usr/local/cuda/bin;2.添加路径 export LD_LIBRARY_PATH=/usr/local/cuda/lib;export PATH=$PATH:/usr/local/cuda/bin;3. 更新配置文件 source ~/.bashrc
linux中的“~”、“/”、“./” ~” :表示主目录,也就是当前登录用户的用户目录。“/” :是指根目录:就是所有目录最顶层的目录。“./” :表示当前目录。“..” :表示上级目录
nvcc -V 查看当前CUDA的版本,即实际安装的CUDA版本
nvidia-smi 不仅可以查看当前NVIDIA驱动的版本,还可以查询与此驱动相匹配的CUDA版本,虽是匹配,但是CUDA的版本可以略低于此时驱动匹配的CUDA版本,因此,我们可以安装版本高一点的驱动,来兼容不同版本的CUDA!
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running 内核自动升级导致的新内核无法启动驱动, 最终重装显卡驱动, cuda, cudnn解决,参考如下链接:https://qii404.me/2021/07/03/ubuntu-install-nvidia-driver.html
linux 命令 wq write and quit
linux 命令 wq! forcely write and quit
linux 命令 x storage and quit
linux netcat 查看端口 22 是否在主机 192.168.56.10 上打开 –> nc -zv 192.168.1.15 22
linux 解压缩zip文件 unzip…
linux下路径名中含空格如何处理 1.使用转义字符“\” 2.将路径名加双引号”” 或 单引号‘’
linux sudo: command not found apt-get install sudo
linux 命令 echo 1.打印输出 echo -e “hello\tworld” 2.覆盖echo Hello World > log.txt3.追加 echo Hello World >> log.txt
解决每次打开终端都需要source .bashrc问题 登录Linux时,执行顺序可以总结为:/etc/profile→ ( ~/.bash_profile | ~/.bash_login | ~/.profile)→ ~/.bashrc →/etc/bashrc 故只需在/etc/profile 或 ~/.bash_profile 文件中添加:
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# ~/.bash_profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# /etc/profile
if [ -f /etc/.bashrc ]; then
. /etc/.bashrc
fi

Issue Method
args 是 arguments 的缩写 args就是就是传递一个可变参数列表给函数实参,args 必须放在 **kwargs 的前面
kwargs 是 keyword arguments 的缩写 **kwargs则是将一个可变的关键字参数的字典传给函数实参
Python startswith() 检查字符串是否是以指定子字符串开头
Python os.path.join() 用于路径拼接,可以传入多个路径
Python tuple 元组:有序且不可更改的集合,tup=(1,2,3,4)
Python list 列表:有序,list=[1,2,3,4]
Python dictionary 字典:无序,dic={‘a’:12,‘b’:34}
Python set() 创建一个无序不重复元素集
Python lambda lambda 函数是一种小的匿名函数。lambda 函数可接受任意数量的参数,但只能有一个表达式。语法 lambda arguments : expression
Python pdb pdb是ptyhon内置的一个调试库
python print 格式符% print (“His name is %s”%(“Aviad”));print (“He is %d years old”%(25));print (“His height is %.2f m”%(1.83234)
python print 格式化字符串f print(f’{A}的类型为{type(A)}’)
python print 转义字符 \ \n表示换行,\t表示制表符,\r表示回车,\f表示换页
python print print+format组合 print(“{1} {0} {1}”.format(“hello”, “world”) ) # 设置指定位置,输出为’world hello world’
Python3 assert 语法格式:assert expression 等价于if not expression: raise AssertionError
Python logging库 常用的记录日志库
Python Try…Except Debug
Python a is b a is b , 这是一个同一性运算符。用于比较两个对象的物理id。如果相同则返回True否则返回False.Python为了优化效率,内置了小整数对象池和简单字符串对象池。小整数对象池包括[-5, 256]。两变量如a=2 b=2,a is b –>return TRUE
Python a == b a == b , 这是一个比较运算符,用于比较两个对象的value(值)是否相同,相同则返回True 否则返回False
python super().init() super().init() 就是调用父类的init方法, 同样可以使用super()去调用父类的其他方法。
torch.arange(start,end) produces values in [start, end)
Python sum(iterable,start) sum=iterable的和+start的值
Python “name __name__是python的一个内置类属性,它存储模块的名称。python的模块既可以被调用,也可以独立运行。而被调用时__name__存储的是py文件名(模块名称),独立运行时存储的是”main“。
Python list(set(a)) set(a)将列表a转换为集合,集合是一个包含不重复元素的无序序列,然后再使用list将集合转换为列表
Python apply() apply(func,*args,**kwargs)
Python * *用在tuple变量之前作为函数参数,可将tuple/list 转化为多个参数传入函数
Python ** 调用函数时,**用在dict变量之前作为函数参数,可将dict转化为多个关键字参数传入函数
Python 单下划线开头 半私有变量
Python 双下划线开头 私有变量
Python 双下划线开头、双下划线结尾 Python内置属性名或者魔法方法名。是Python自己实现的属性和方法,一般不允许自定义类似此种命名方式的属性或者方法。
Python copy() 不管多么复杂的数据结构,浅拷贝都只会copy一层。如列表是三层表示的,类似c中指针的指针
Python deepcopy() 将整个变量内存全部复制一遍,新变量与原变量没有任何关系。
Python import… 导入一个模块,使用:模块.函数
Python from…import… 导入了一个模块中的一个函数,使用:直接使用函数名使用就可以了
Python @staticmethod 静态方法。不传入代表实例对象的self参数,并且不强制要求传递任何参数,可以被类直接调用。静态方法是独立于类的一个单独函数,只是寄存在一个类名下。静态方法就是类对外部函数的封装,有助于优化代码结构和提高程序的可读性。
Python @classmethod 类方法。不传入self示例本身,而是传入cls,代表这个类自身,可以来调用类的属性,类的方法,实例化对象等。类方法是将类本身作为操作对象。当我们需要和类直接进行交互,而不需要和实例进行交互时,自然也就不需要传入实例本身
Python @abstractmethod 抽象方法。用于程序接口的控制。含有abstractmethod 方法的类不能实例化,继承了含abstractmethod方法的子类必须复写所有abstractmethod装饰的方法,未被装饰的不重写
Python @property 将一个方法伪装成属性。被修饰的特性方法,内部可以实现处理逻辑,但对外提供统一的调用方式(访问方式很友好)
Python class 类: 采用 Class 作为关键字进行定义的代码块,表示的是一种类别
Python object 对象: 实例化之后的类,对类中的形参进行了赋值,赋予其真正的含义或数值
Python method 方法: 使用 def 作为关键词,定义在类内的函数
Python function 函数: 使用 def 作为关键词,但是没有在类内进行定义,即 定义在类外
Python attribute 属性: 类内的称呼,其实就是类内的变量,同一个类内的不同方法内的变量都是这个类的属性,也就是这个类的变量
Python None 与C不同,在python中是没有NULL,但存在相近意义的None。None表示空值,它是一个特殊 Python 对象, None的类型是NoneType

Issue Method
torch.nn.Parameter() torch.nn.Parameter是继承自torch.Tensor的子类,其主要作用是作为nn.Module中的可训练参数使用。它与torch.Tensor的区别就是nn.Parameter会自动被认为是module的可训练参数,即加入到parameter()这个迭代器中去;而module中非nn.Parameter()的普通tensor是不在parameter中的。注意到,nn.Parameter的对象的requires_grad属性的默认值是True,即是可被训练的,这与torth.Tensor对象的默认值相反。
Pytorch .item() .item()用于在只包含一个元素的tensor中提取值,注意是只包含一个元素,否则的话使用.tolist()
Pytorch model.train() 启用 Batch Normalization 和 Dropout。
Pytorch model.eval() 不启用 Batch Normalization 和 Dropout。eval模式不会影响各层的gradient计算行为,即gradient计算和存储与training模式一样,只是不进行反向传播(back probagation)。
Pytorch torch.no_grad() with torch.no_grad()则主要是用于停止autograd模块的工作,以起到加速和节省显存的作用。它的作用是将该with语句包裹起来的部分停止梯度的更新,从而节省了GPU算力和显存,但是并不会影响dropout和BN层的行为。
Pytorch torch.max(input,dim) dim:input每个元素参与比较的维度
Pytorch torch.tensor() Constructs a tensor with no autograd history (also known as a “leaf tensor”, see Autograd mechanics) by copying data.
Pytorch torch.Tensor() A torch.Tensor is a multi-dimensional matrix containing elements of a single data type.
Pytorch torch.autograd.Variable() Autograd的核心类,浅封装(thin wrapper)了Tensor,用于整合实现反向传播。torch0.4后张量与自动微分变量整合,tensor直接当作自动微分变量使用,旦Variable仍可使用
Pytorch 自定义autograd中的Function 自定义pytorch中动态图的算子(operator),也就是动态图的“边”,需要继承torch.autograd.Function类,并实现forward与backward方法。在使用自定义的算子时,需要使用apply方法。
Pytorch torch.save(net,path) 保存模型,模型=网络结构+网络参数
Pytorch torch.save(net.state_dict(),path) 保存网络参数
Pytorch中什么时候调用forward()函数 Module类是nn模块里提供的一个模型构造类,是所有神经网络模块的基类,我们可以继承它来定义我们想要的模型。Module中定义了__call__()函数,该函数调用了forward()函数,前向传播时会自动调用__call__()函数亦即自动调用forward()
Pytorch nn.Sequential() 把定义的conv fc relu等层包装起来作为一个整体
Pytorch torch.squeeze() torch.squeeze(input, dim=None, *, out=None) → Tensor 对输入的张量进行处理,如果张量维度里面有大小为1 的部分,那我们就移除,否则保留.dim可以指定特定的某一维度判断是否为1并进行压缩,若不指定则对input_tensor所有为1的维度进行压缩
Pytorch import torch import torch.nn as nn 起到缩写效果: 如果只用import torch,就要用torch.nn.Conv2d这样的代码。如果写成import torch.nn as nn,后面就可以简写成nn.Con2d。两种写法效果都一样,用import …as… 只是起了个别名写代码时可以更精炼。
Pytorch torch.cuda.is_available() 查看是否有可用GPU
Pytorch torch.cuda.device_count() 查看GPU数量
Pytorch torch.cuda.current_device() 查看当前使用的cuda编号
Pytorch torch.cuda.get_device_capability(device) 查看指定GPU容量
Pytorch torch.cuda.get_device_name(device) 查看指定GPU名称
Pytorch torch.cuda.manual_seed(seed) 设置随机种子
Pytorch register_buffer() model中需要设置一些不更新的参数,同时希望通过model.state_dict()将参数保存下来,就用到register_buffer(),buffer也可以通过requires_grad获取其梯度信息,但是optimizer进行更新的是parameter,buffer不会更新

Issue Method
深度学习之embedding层 通过矩阵乘法实现降维,信息不变,按照某种映射关系将原本矩阵的信息转换到了一个新的维度的矩阵里面,节省存储空间。也可以逆向升维
ImageNet 数据集 ImageNet 是一个计算机视觉系统识别项目,是目前世界上最大的图像识别数据库。此项目由斯坦福大学李飞飞等教授于 2009 年发起.ImageNet 中目前共有 14,197,122 幅图像,总共分为 21,841 个类别(synsets),通常我们所说的 ImageNet 数据集其实是指 ISLVRC2012 比赛用的子数据集,其中 train 有 1,281,167 张照片和标签,共 1000 类,大概每类 1300 张图片,val 有 50,000 副图像,每类 50 个数据,test 有 100,000 副图片,每类 100 个数据。
海森矩阵 Hessian Matrix 二阶导数矩阵
Ubuntu中切换Python版本 1.列出可用的 Python 替代版本:update-alternatives –list python 2.列出的 Python 版本中选择进行切换:update-alternatives –config python
目标检测/图像分割评价单张图片标准 IOU(Intersection-Over-Union)交并比
目标检测/图像分割评价一套算法标准 在整个数据集测试结果 准确率(Pixel Accuracy):检测出来物体占待检测总体(包含检测出和未检测出)的比例;精确度(Pixel Precision):检测出来正确的物体占检测出物体总体的比例
LSTMs Long Short Term Memory networks
参数量Params input_feature_map:f=(B,c1,H,W),conv_kernel:k * k,bias=True且使用BN,即附加两个可学习参数alpha和beta, Params=c1c2kk+3c2
参数量Params fc 输入神经元数M,输出神经元数N,bias为True时params=M*N+N
计算量FLOPs 乘加次数->输出的每个pixel的得到需要多少次乘加

Concept Interpretation
APU(Accelerated Processing Unit,加速处理单元) 最早由AMD提出并生产制作的具有概念性的理念产品。加速芯片对数据图像的处理能力。
NPU(Neural-network Processing Unit,神经网络处理单元) 可以自行处理某些数据,将接受到的多元化的数据分担给其他单元处理
GPU(Graphics Processing Unit,图形处理单元) 专门处理图像数据,也能为CPU分担部分工作。
CPU(Central Processing Unit,中央处理单元) 系统的运算能力,电子产品的核心。负责处理指令和一切逻辑性数据。