- python:
- 遇到使用open函数打开文件错误,解决:打开bash,使用file指令查看文件的字符编码,然后在open函数中设置encoding为对应的编码即可解决
- pytorch 的expand函数只能在单维度上进行扩展,如果需要强制修改size,或许可以选择resize函数
- 官网提供了四种CUDA安装方式(下方查到了其中3种的解释):
- runfile(local):下载可执行文件到本地,运行安装
- deb(local):增加一个本地的仓库,而该仓库的建立通过安装一个deb实现,通过apt install安装该仓库中的包
- deb(network):增加一个远程的仓库,通过apt install安装该仓库中的包
- fine-tune学习笔记
- 对于分类问题,需要增加种类:可保留模型的前若干层结构以及训练后的权重,然后更改模型最后一层的softmax
- 不同数据集下使用微调:
- 数据量少,但数据相似度非常高:只是修改最后几层或最终的softmax图层的输出类别
- 数据量少,数据相似度低,可以冻结预训练模型的初始层(比如k层),并再次训练剩余的(n-k)层。原因:新数据集相似度较低,根据新数据集对较高层进行重新训练具有重要意义。
- 数据量大,数据相似度低:最好根据新数据从头开始训练神经网络
- 数据量大,数据相似度高:保留模型的体系结构和模型的初始权重,使用在预先训练的模型中的权重来重新训练该模型
- 有一个问题:如何评估数据相似性?感觉应该就是计算“距离”之类的
- 预训练模型在最优点附近
- pin_memory=true
- pin_memory是dataloader()的参数,默认值为False,其作用是是否把把数据存放在锁页内存中。
- 主机的内存根据物理内存(内存条)与虚拟内存(硬盘)进行数据交换分为锁页内存和不锁页内存:
- 锁页内存:
- 如果主机/服务器的内存足够大,建议把pin_memory设为True,
- 锁页内存(pin_memory)能够保持与GPU进行高速传输,在训练时加快数据的读取,从而加快训练速度。
- 数据存放在物理内存上(内存条)上;
- 不锁页内存:当物理内存(内存条)满载时,把部分数据转换到虚拟内存上(硬盘)上。
- 锁页内存:
- non_blocking时cuda()的参数,默认值为False,其作用和pin_memory一样,pin_memory是针对物理内存(内存条),而non_blocking是针对GPU上的内存(显存),表示把数据锁页在显存上,在后台进程过程中不释放。一般地,如果pin_momery为True,把non_blocking也设为True,有助于加速数据传输,加快训练过程,如:model = Model().cuda(non_blocking=True)
- duck-typing(鸭子类型):
- 鸭子类型背后的两种面向对象思想:多态和范型。
- 鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。
- 对象的类型不再由继承等方式决定,而由实际运行时所表现出的具体行为来决定。这个概念在解释性语言中还是非常容易理解的,因为解释性语言在定义函数的参数时是无法指定具体参数类型的,另一方面,参数的类型是在解释执行时才能确定,不像类Java语言一样,在编译期编译器就可以确定参数类型,从而在多态模式下确定函数的执行版本了。
- python中的鸭子类型
- 序列的实现:基本序列协议: 实现__len__和__getitem__方法
- 切片的实现:基本切片协议: 实现__getitem__方法
- Python中,通过对内置特殊函数的实现(前后双_函数),从而获得Python原生的支持,其中对一元中缀表达式的覆盖,对常规加法操作、乘法操作等的覆盖,皆是鸭子类型的表现形式
- gpu,tpu,ipu,hpu
- gpu:
- 图形处理器,一种做图像和图形相关运算工作的微处理器。
- GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。GPU的生产商主要有NVIDIA和ATI。
- GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据。但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。
- TPU:
- 张量处理单元,是一款为机器学习而定制的芯片,经过了专门深度机器学习方面的训练,它有更高效能(每瓦计算能力)。
- 因为它能加速其第二代人工智能系统TensorFlow的运行,而且效率也大大超过GPU――Google的深层神经网络就是由TensorFlow引擎驱动的。TPU是专为机器学习量身定做的,执行每个操作所需的晶体管数量更少,自然效率更高。
- TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。
- TPU每瓦能为机器学习提供比所有商用GPU和FPGA更高的量级指令,这基本相当于7年后的科技水平。TPU是为机器学习应用特别开发,以使芯片在计算精度降低的情况下更耐用,这意味每一个操作只需要更少的晶体管,用更多精密且大功率的机器学习模型,并快速应用这些模型,因此用户便能得到更正确的结果。
- ipu:Intelligence Processing Unit, Deep Mind投资的Graphcore公司出品的AI处理器产品。
- hpu:Holographics Processing Unit 全息图像处理器, 微软出品的全息计算芯片与设备
- gpu:
- 清除对某一网站的缓存(以edge为例):
- 在网页上右键选择“检查”(或者直接F12)
- 选择“应用程序”(在顶部选择,如果没有点击“+”就可以看到)
- 选择“存储”,将“包括第三方cookie”打√,然后选择“清除网站数据即可”
- 如果网页还是无法完成想要的效果,可以选择换一个浏览器。
- windows:
- 新电脑:可以使用微软账户登陆
- 锁屏:win+L,或者开始->账户->locked
- linux:
- iconv -l :可以查看支持的字符编码
- apt删除包:apt remove package
- nvidia-smi自动刷新:watch -n 0.1 -d nvidia-smi (如果运行重要进程时,不建议使用watch查看nvidia-smi,watch每个时间周期开启一个进程(PID),查看后关闭进程,会影响cuda操作,如cudaMalloc;建议使用nvidia-smi -l x或者nvidia-smi --loop=xxx代替,这个命令执行期间一直是一个进程PID.)
- 压缩文件:zip -r 压缩包的名字 要打包的文件夹
- 一次性移动某类后缀的文件:find . -name "*.txt" -exec mv {} ../txt/ \;
- 将双通道音频转为单通道音频:ffmpeg -y -i 1.wav -ac 1 -ar 16000 1_mon.wav
- 添加nvidia-driver ppa源:
- sudo add-apt-repository ppa:graphics-drivers/ppa
- 更新源:sudo apt update
- 查看可以安装的驱动版本:apt search nvidia-driver
- 一般选择安装最下面的(最新版)
01-02
4162
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-27
3658
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-12
3万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)