文章目录
查看显卡属性
- win+r:dxdiag 找到显卡名称,搜索
我的显卡:NVIDIA GeForce2 GTX 1050 Ti 显存容量4096 MB RAM
nvidia-smi
也可以查看显卡内存集成显卡:集成到电脑主板上、本身不带有显存,通常是系统自动分配电脑内存作为显存来使用
神经网络 专业术语解释(Step, Batch Size, Iteration,Epoch)
SOTA model:state-of-the-art model,并不是特指某个具体的模型,而是指在该项研究任务中,目前最好/最先进的模型。
SOTA result:state-of-the-art result,指的是在该项研究任务中,目前最好的模型的结果/性能/表现。
- 名词解释
-
Step: 训练模型的步数
-
Batch Size(批尺寸): 计算梯度所需的样本数量,太小会导致效率低下,无法收敛。太大会导致内存撑不住,Batch Size增大到一定程度后,其下降方向变化很小了,所以Batch Size是一个很重要的参数。
-
Epoch(回合):代表样本集内所有的数据经过了一次训练。
-
Iteration(迭代):理解迭代,只需要知道乘法表或者一个计算器就可以了。迭代是 batch 需要完成一个 epoch 的次数。记住:在一个 epoch 中,batch 数和迭代数是相等的。
比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。
下面的内容转自https://blog.csdn.net/lhhopencv/article/details/78912256
- 换算关系
N u m b e r o f B a t c h e s = T r a i n i n g S e t S i z e B a t c h S i z e Number\ of\ Batches=\frac{Training\:Set\:Size}{Batch\ Size} Number of Batches=Batch SizeTrainingSetSize
实际上,梯度下降的几种方式的根本区别就在于上面公式中的 Batch Size不同。
*注:上表中 Mini-Batch 的 Batch 个数为 N / B + 1 是针对未整除的情况。整除则是 N / B。
- 例子
CIFAR10 数据集有 50000 张训练图片,10000 张测试图片。现在选择 Batch Size = 256 对模型进行训练。
- 每个 Epoch 要训练的图片数量:50000
- 训练集具有的 Batch 个数:50000/256=195+1=196
- 每个 Epoch 需要完成的 Batch 个数:196
- 每个 Epoch 具有的 Iteration 个数: 196
- 每个 Epoch 中发生模型权重更新的次数:196
- 训练 10 代后,模型权重更新的次数:1960
- 不同代的训练,其实用的是同一个训练集的数据。第 1代和第10 代虽然用的都是训练集的五万张图片,但是对模型的权重更新值却是完全不同的。因为不同代的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
提高 GPU 和 CPU 混合训练效率的方法
参阅:
https://zhuanlan.zhihu.com/p/77307505[GPU加速02:超详细Python Cuda零基础入门教程,没有显卡也能学!]
https://lulaoshi.info/gpu/gpu-basic/gpu
https://lulaoshi.info/gpu/python-cuda/cuda-intro
检验
CUDA
安装成功nvcc -V
检验
cuDNN
:进入到cuda的安装路径,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite
找到deviceQuery.exe
和bandwidthTest.exe
成功运行不闪退https://zhuanlan.zhihu.com/p/257895005[模型训练太慢?显存不够?这个方法让你的GPU联手CPU]
- 🔺可行性很高。现在还不会实操
https://blog.csdn.net/qq_27825451/article/details/106002237【tensorflow与pytorch的GPU分配与使用策略详解】
- 没学会
小结:半懂不懂,没学会
py文件调用其他py文件中的类和函数
-
同一文件夹
-
调用函数
from 【py文件名】 import 【fun1】 fun1() import 【py文件名】 【py文件名】.fun1()
-
调用类
from 【py文件名】 import 【类1】 a = 类1() a.fun() import 【py文件名】 a=【py文件名】.类1() a.fun()
-
-
不同文件夹下
-
不设
__init___.py
import sys sys.path.append(r'【py文件名】所在路径') '''python import模块时, 是在sys.path里按顺序查找的。 sys.path是一个列表,里面以字符串的形式存储了许多路径。 使用A.py文件中的函数需要先将他的文件路径放到sys.path中''' import 【py文件名】 a=【py文件名】.【py文件下的函数或类】(2,3) a.fun()
-
设
__init___.py
# 一般为空文件,也可以写以下,便于 import * __all__ = ['类A','类B']
-
关于pyc与pyo文件
-
pyc就是py编译时生成的字节码文件,以后每次导入都会执行pyc,当py文件更新时pyc也会更新
-
如果解释器添加-o命令,py编译时会生成pyo文件,它相比pyc去掉了断言(assert)、断行号以及其他调试信息,运行速度更快
-
如果使用-OO选项,生成的pyo文件会忽略文档信息
解释器工作:
-
根据导入的文件名创建命名空间(用来访问文件内部属性与方法)
-
在命名空间内执行源代码
-
创建一个源代码文件的对象,这个对象引用对应的命名空间,管理模块的内部函数与变量
-
一个模块可以多次导入,但是后面导入的模块只执行第三步
sys.modules可以打印出导入的模块名与模块对象的映射
因此可以理解导入文件的三种方式:
import a.b
把a.b导入全局命名空间,想要调用c方法需要a.b.c
from a import b
把b导入全局命名空间,b.c
from a.b import c
把b的属性c直接导入命名空间
阅读 python 基础书
[Python3基础学习笔记(精品).pdf - 快捷方式.lnk](…\Python3基础学习笔记(精品).pdf - 快捷方式.lnk)
可能有用的论文参考代码
- https://github.com/facebookresearch/detectron2
- 环境 linux+pytorch,也是mask-rcnn
- 感觉会死,之后再说
- 环境 linux+pytorch,也是mask-rcnn