Pytorch断点训练
模型的保存与加载PyTorch中的保存(序列化,从内存到硬盘)与反序列化(加载,从硬盘到内存)
torch.save主要参数:obj:对象 、f:输出路径
torch.load 主要参数 :f:文件路径 、map_location:指定存放位置、 cpu or gpu
模型的保存的两种方法:
保存整个Moduletorch.save(net, path)
保存模型参数state_dict = net.state_dict()torch.save(state_dict , path)
模型的训练过程中保存checkpoint = { "net": model.state_dict(), 'optimizer':optimizer.state_dict(), "epoch": epoch }
将网络训练过程中的网络的权重,优化器的权重保存,以及epoch 保存,便于继续训练恢复
在训练过程中,可以根据自己的需要,每多少代,或者多少epoch保存一次网 ...
Pytorch计算网络参数量和复杂度
[TOC]
模型参数量和计算量是什么
计算量是指网络模型需要计算的运算次数,参数量是指网络模型自带的参数数量多少
计算量对应时间复杂度,参数量对应于空间复杂度
计算量决定了网络执行时间的长短,参数量决定了占用显存的量
为什么要统计模型参数量和计算量
好的网络模型不仅要求精度准,还要要求模型的参数量和计算量不大,才能有利于部署
统计模型的参数量和计算量可以用于不同网络模型之间的对比分析
有的模型虽然参数量相同,但是可能因为连接方式和结构等不同而导致计算量不同
常见的模型参数量和计算量的计算方法 卷积层
其中,K表示核尺寸,$C_l$表示数量第l层通道数
全连接层$$计算量=参数量=weight_{in}×weight_{out}$$ 推荐方法3
方法1 torchsummary.summaryfrom torchsummary import summarysummary(net,input_size=(3,224,224))
------------------------------------------------------------- ...
ACM Digital Library User Manual
Introduction to the ACM DatabaseOverview The Association for Computing Machinery (ACM) is one of the largest professional academic organizations in the field of computer science and information technology worldwide. ACM aims to advance the development of computer science and provide support and resources for professionals in the field.
ACM Database is a key component of the ACM Digital Library, serving as an important academic resource platform. It encompasses a wide range of literature, jour ...
SSH原理
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录或文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
SSH端口号是什么? 当SSH应用于STelnet,SFTP以及SCP时,使用的默认SSH端口都是22。当SSH应用于NETCONF时,可以指定SSH端口是22或者830。SSH端口支持修改,更改后当前所有的连接都会断开,SSH服务器开始侦听新的端口。
SSH是如何工作的? SSH由服务器和客户端组成,在整个通信过程中,为建立安全的SSH通道,会经历如下几个阶段:
连接建立:SSH服务器在指定的端口侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP连接。
版本协商:SSH协议目前存 ...
Pytorch JIT
Reference:https://chenglu.me/blogs/pytorch-jit
如果搜索 PyTorch JIT,找到的将会是「TorchScript」的文档,那么什么是 JIT 呢?JIT 和 TorchScript 又有什么联系?
什么是 JIT? 首先要知道 JIT 是一种概念,全称是 Just In Time Compilation,中文译为「即时编译」,是一种程序优化的方法,一种常见的使用场景是「正则表达式」。例如,在 Python 中使用正则表达式:
prog = re.compile(pattern)result = prog.match(string)
或
result = re.match(pattern, string)
上面两个例子都是从 Python 官方文档中摘出来的 ,并且从文档中可知,两种写法从结果上来说是「等价」的。但注意第一种写法种,会先对正则表达式进行 「compile」,然后再进行使用。如果继续阅读 Python 的文档,可以找到下面这段话:
using re.compile() and saving the ...
开源协议
世界上的开源许可证(Open Source License)大概有上百种,今天我们来介绍下几种我们常见的开源协议。大致有GPL、BSD、MIT、Mozilla、Apache和LGPL等。
BSD BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
“为所欲为”的前提当你发布使用了BSD协议的代码,需要满足三个条件:
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议;
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广
BSD协议鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议,而很多的公司企业在选用开源产品的时候都首选BSD协议。
总结:使用时必须尊重作者的著作权,保持原代码的BSD协议,不 ...
Pytorch查看GPU状态
import torch print(torch.cuda.is_available()) # 是否有GPU可用 print(torch.cuda.device_count()) # GPU数量 print(torch.cuda.get_device_name(0)) # gpu名字,设备索引默认从0开始 print(torch.cuda.current_device()) # 当前设备索引 print(torch.cuda.get_device_properties(0)) # gpu属性,设备索引默认从0开始print(torch.cuda.get_device_capability(device=None)) # 获取设备的CUDA能力capability
True1'Tesla V100-SXM2-32GB'0_CudaDeviceProperties(name='Tesla V100-SXM2-32GB', major=7, minor=0, total_memory=32501MB, multi_processor_c ...
Pytorch中参数初始化
参数初始化(Weight Initialization) PyTorch中参数的默认初始化在各个层的reset_parameters()方法中。例如:nn.Linear和nn.Conv2D,都是在[-limit, limit]之间的均匀分布(Uniform distribution),其中limit是1. / sqrt(fan_in),fan_in是指参数张量(tensor)的输入单元的数量
pytorch在定义模型时有默认的参数初始化,有时候我们需要自定义参数的初始化,就需要用到torch.nn.init。具体的不同初始化,可以查看pytorch官方文档https://link.zhihu.com/?target=https%3A//pytorch.org/docs/stable/nn.init.html%3Fhighlight%3Dinit
方法一:
1,先定义初始化模型方法;
2,运用apply().
class Net(nn.Module): def __init__(self, in_dim, n_hidden_1, n_hi ...
SciencePlots
参考:https://github.com/garrettj403/SciencePlots
不得不说随着顶会投稿数量的爆炸性增长,审稿人力不从心,使得一部分审稿人的水平确实较之前有所降低,但是好的论文配图会增加论文脱颖而出的可能。之前的配图一般使用的是matplotlib,ggplot2,MATLAB等这样的绘图包,然而matplotlib默认设置绘制出来的图总让人感觉没有那么专业,ggplot2的图确实优美但是R语言又比较小众。在这种情况下,SciencePlots就是非常好的一个选择。
SciencePlots是一个专门为科研论文打造的轻量化的绘图工具包,安装SciencePlots最简单的方式是使用pip,使用的指令为:
# 安装最新版pip install git+https://github.com/garrettj403/SciencePlots.git# 安装稳定版pip install SciencePlots
安装完成后,使用SciencePlots也非常简单,只需要导入matplotlib工具包,选择相应的style即可。例如,如果想要给Scie ...
无线接入点AP
什么是AP AP即无线接入点,为有线网络增加无线功能,是一种网络设备。
一般无线AP可以连接到交换机,也可以连接到路由器。
无线AP可以实现AP内相连设备的通信,也可以实现AP到有线网络的通信。
无线AP相当于无线交换机,提供一个无线信号发射的功能,而没有路由功能。
无线路由器开启无线AP模式,就相当于一个无线AP。
接入点通过以太网或数据线直接连接到宽带路由器或网络交换机,这为 AP 提供了所需的互联网连接和带宽。然后,它会在 2.4Ghz 或 5Ghz 频率范围 (WIFI) 中发送和接收无线信号,这样就将无线连接到您的局域网 (LAN) 和互联网。
无线AP有什么用 1、扩大无线网络的覆盖范围。当已有无线路由器的时候,新增的无线路由器使用AP模式可以扩大原有的无线网络覆盖范围。
2、为有线网络提供无线网络环境。当开启AP模式后连接有线网络,可以在原有的有线网络上提供无线网络。
那有小伙伴会有疑问了,那我不开启AP模式也可以扩大无线覆盖范围或者提供无线网络环境啊?使用AP模式,原网络的一些配置、功能都可以继续使用。比如下载限速,如果不使用AP模式,那 ...