tornado

监控文件改动, 自动重载服务

1
2
3
4
5
# 设置 debug=True  或 autoreload=True 会监控所有.py文件, 在改动后自动重载tornado服务
app = tornado.web.Application(handlers, debug=True)

# 添加监控文件列表
tornado.autoreload.watch(filename: str)

参考资料

查看更多

pytorch常用代码

pytorch版本: 1.1.0

张量

创建一个张量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 通用注释: x表示其他张量     
# size0,size1表示张量维度, 数量不固定
# data 表示张量的数组值(python数组类型)

zeros = torch.zeros(
size0, size1, dtype=x.dtype, device=x.device, requires_grad=True)

zeros = torch.zeros(data, dtype=torch.long) # 指定具体地数据类型

# 随机化生成
x = torch.rand(size0, size1) # 默认 torch.float32
x = torch.rand(size0, size1, dtype=torch.float)
x = torch.rand(size=[size0, size1], dtype=torch.float)
t=torch.rand(t.size()) //均匀分布
t=torch.randn(t.size()) //标准正态分布
t=torch.normal(mean,std) //size同t.Tensor(),每个数以对应的均值mean和标准差std[i,j,...]正态采样。

x = torch.randint(low=1, high=100, size=[12, 2], dtype=torch.long)
x = torch.LongTensor(size0, size1) # 在pycharm中有错误提示

#均分区间生成Tensor、
t=T.arange(m,n,step_length) //[m,n)中m开始以步长step_length生成
t=T.range(m,n,step_length) //[m,n-1]中m开始以步长step_length生成
t=T.linspace(m,n,step_num) //[m,n]中以m为首项,n为末项,均分区间为step_num段

# 可以与list或numpy中的array互相转化:
t=T.Tensor(list)
t=T.Tensor(np.array)
t=T.from_numpy(np.array)
list=T.tolist(t)
array=t.numpy()

观察一个张量

1
2
3
4
5
6
7
t.size()            //返回size类型
t.numel() //返回总元素个数
t.view(d1,d2,d3....)//维度重整
t.unsqueeze(di) //在di个维度处升维、
t.squeeze(di) //若di维是1,压缩,否则不变。若无参数,压缩所有“1”维
torch.cat((t,t,...),dim=1) //按第di的维度按照tuple的格式复制t
torch.chunk(t,i,dim) //在di维上将t分成i份,最后一份的维度不定(若不能整除)

采数据

1
2
3
torch.index_select(t, di, indices)  //在第di维上将t的indices抽取出来组成新Tensor。
torch.masked_select(t, mask) //按照0-1Tensor mask的格式筛选t,返回一维Tensor
torch.nonzero(t) //输出n×2维Tensor,非零元素的index

查看更多

使用Adblock广告屏蔽插件

##

插件图标:

1558947803597

屏蔽规则

1
2
3
4
5
6
7
8
# 隐藏元素:host--网站域名  class_name--类名  id_name--id名
host##.class_name
host###id_name

# 属性选择符
##div[title*="adv"] 隐藏 title 属性包含 adv 字符的 div 元素
##table[width="80%"] 隐藏 width 属性值为 80% 的表格元素
##div[title^="adv"][title$="ert"] 隐藏 titile 属性以 adv 开始并且以 ert 结束的 div 元素

我的自定义配置文件:

1
2
3
sohu.com###right-side-bar
sohu.com###float-btn
sohu.com##.groom-read

参考资料

查看更多

python源码转UML图

用conda制作模块

安装

1
2
3
4
5
# 需要安装的软件:
## Graphviz:贝尔实验室开源的图形绘制工具包
## Pyreverse:用来分析Python代码和类关系的工具,包含在Pylint中
sudo apt install graphviz
pip install pylint

调用

1
2
3
4
5
6
7
8
9
10
pyreverse -o png -ASmy xxx.py
# xxx.py 要解析的源代码文件
# -o png 指定输出图片格式。 默认的dot格式。
# -o tail.png 也可以携带tail 输出文件名= classes.tail.png
# -A, --all-ancestors 展示项目中的所有祖先类
# -a N 展示项目中的N代祖先类
# -S, --all-associated 以递归方式显示所有关联的关联类
# -m, --module-names=[yn] 在表示类中包含模块名称
#  用法   -m y  或者  -my
# -k, --only-classnames 类框中不显示属性和方法;这会禁用-f值

debug:pytorch_梯度出现NaN

计算

梯度出现NaN

梯度出现异常值:NaN

定位方法:

使用如下代码设置,在出现NaN异常时程序会报错,便于定位错误代码

1
2
3
4
5
6
7
import torch
# 正向传播时:开启自动求导的异常侦测
torch.autograd.set_detect_anomaly(True)

# 反向传播时:在求导时开启侦测
with torch.autograd.detect_anomaly():
loss.backward()

原因:

很多网友提到,pytorch的求标准差的函数STD可能有问题。如果使用了类似会调用STD函数的各种Norm层就可能导致NAN问题。

查看更多