如何画出高端的折线图?
在科研论文中,图表的重要性不言而喻。为了画出高端的折线图,我在网上找了半天,费尽千辛万苦才终于找到,特此记录下来。
12345678910111213141516171819202122232425import matplotlib.pyplot as pltimport numpy as npimport pandas as pdp.random.seed(9615)# generate dfN = 100df = pd.DataFrame((.1 * (np.random.random((N, 5)) - .5)).cumsum(0), columns=['a', 'b', 'c', 'd', 'e'],)# plot line + confidence intervalfig, ax = plt.subplots()ax.grid(True, alpha=0.3)for key, val in df.iteritems(): l, = ax. ...
稠密连接网络(DENSENET)
本质ResNet跨层连接设计的引申。
与ResNet的主要区别在于,DenseNet⾥模块B的输出不是像ResNet那样和模块A的输出相加,⽽是在通道维上连结。在这个设计⾥,模块A直接跟模块B后⾯的所有层连接在了⼀起。这也是它被称为“稠密连接”的原因.
稠密块由多个conv_block组成,每个conv_block使用“批量归一化、激活和卷积”结构。conv_block的通道数控制了输出通道数相对于输⼊通道数的增⻓,因此也被称为增⻓率(growth rate)。
DENSENET⾸先使⽤同ResNet⼀样的单卷积层和最⼤池化层。
之后同ResNet⼀样是4个使用4个卷积层的稠密块,稠密块里的卷积层通道数(即增长率)设为32。每个稠密块后使用过渡层来减半高和宽以及通道数。
最后接上全局池化层和全连接层来输出。
获取数据并训练模型在Fashion-MNIST数据集上训练ResNet。
以下为完整代码。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515 ...
残差网络(RESNET)
本质拟合出有关恒等映射的残差映射f(x)-x并将加权运算的权重和偏差参数学成0,那么f(x)即为恒等映射。
残差块⾸先有2个有相同输出通道数的3 * 3卷积层。每个卷积层后接⼀个批量归⼀化层和ReLU激活函数。然后我们将输⼊跳过这两个卷积运算后直接加在最后的ReLU激活函数前。这样的设计要求两个卷积层的输出与输⼊形状⼀样,从⽽可以相加。如果想改变通道数,就需要引⼊⼀个额外的1 * 1卷积层来将输⼊变换成需要的形状后再做相加运算。
残差网络首先是输出通道数为64、步幅为2的7 * 7卷积层后接一个批量归⼀化层再接一个步幅为2的3 * 3的最⼤池化层。
之后是4个由残差块组成的模块,每个模块使⽤若⼲个同样输出通道数的残差块(本文中为两个)。第⼀个模块的通道数同输⼊通道数⼀致。
最后加⼊全局平均池化层后接上全连接层输出。
这⾥每个模块⾥有4个卷积层(不计算1 * 1卷积层),加上最开始的卷积层和最后的全连接层,共计18层。这个模型通常也被称为ResNet-18。
获取数据和训练模型在Fashion-MNIST数据集上训练ResNet。
以下为完整代码。
1234567891011121314 ...
使用重复元素的网络(VGG)
本质通过重复使⽤简单的基础块来构建深度模型。
VGG块组成规律是:连续使⽤数个相同的填充为1、窗⼝形状为3 * 3的卷积层后接上⼀个步幅为2、窗⼝形状为2 * 2的最⼤池化层。卷积层保持输⼊的⾼和宽不变,⽽池化层则对其减半。
VGG这种⾼和宽减半以及通道翻倍的设计使得多数卷积层都有相同的模型参数尺⼨和计算复杂度。
VGG网络由卷积层模块后接全连接层模块构成。变量conv_arch 指定了每个VGG块⾥卷积层个数和输⼊输出通道数。
本文中的网络有5个卷积块,前2块使⽤单卷积层,⽽后3块使⽤双卷积层。第⼀块的输⼊输出通道分别是1(因为下⾯要使⽤的Fashion-MNIST数据的通道数为1)和64,之后每次对输出通道数翻倍,直到变为512。因为这个⽹络使⽤了8个卷积层和3个全连接层,所以经常被称为VGG-11。
获取数据和训练模型在Fashion-MNIST数据集上进⾏训练。
以下为完整代码。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545 ...
GitHub加速
因为某些原因,Github 访问速度确实太慢了,图片经常刷不出来,甚至会出现项目无法下载的情况
以下是几种提高Github 访问速度的方案。
GitHub 镜像访问这里提供两个最常用的镜像地址:
https://github.com.cnpmjs.org
https://hub.fastgit.org
也就是说上面的镜像就是一个克隆版的 GitHub,你可以访问上面的镜像网
网站的内容跟 GitHub 是完整同步的镜像,然后在这个网站里面进行下载克隆等操作
GitHub 文件加速利用 Cloudflare Workers 对 github release 、archive 以及项目文件进行加速,部署无需服务器且自带 CDN
https://gh.api.99988866.xyz
https://g.ioiox.com
以上网站为演示站点
如无法打开可以查看开源项目:gh-proxy-GitHub( https://hunsh.net/archives/23/ ) 文件加速自行部署
Github 加速下载只需要复制当前 GitHub 地址粘贴到输入框中就可 ...
Python踩坑
最近用python在做项目,借此深刻认识到python果然是越学越难。
弱类型虽然方便,但也会导致各种各样意想不到的bug。
前言在python中,万物皆是对象,变量名是访问到变量的唯一方式(通过引用访问)。
变量存储内存中有两块区域:堆区与栈区。在定义变量时,变量名与值内存地址的关联关系存放与栈区,变量值存放于堆区。
内存回收Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题,并且通过“分代回收”(generation collection)以空间换取时间的方式来进一步提高垃圾回收的效率。
引用计数变量值被关联次数的增加或减少,都会引发引用计数机制的执行(增加或减少值的引用计数),这存在明显的效率问题。
如果说执行效率还仅仅是引用计数机制的一个软肋的话,那么很不幸,引用计数机制还存在着一个致命的弱点,即循环引用(也称交叉引用)。
12345678>>> l1=[123]>>> l2=[ ...
Qt样式表
Box样式width:宽度
height:高度
max-width:最大宽度
max-height:最大高度
min-width:最小宽度
min-height:最小高度
margin:边距尺寸
margin-top
margin-right
margin-bottom
margin-left
padding:填充尺寸
padding-top
padding-right
padding-bottom
padding-left
位置样式position:定位属性
如果position是relative(默认值),则将子控件移动一定的偏移量;如果position是absolute,则指定子控件相对于父控件位置
top
right
bottom
left
字体样式font:字体样式
font-family:字体类型
font-size:字体大小
font-style:字体风格
font-weight:字体粗细
font-color:字体颜色
文本样式text-decoration:文本修饰
text-align:水平对齐
背景样式background:背影样式
background-colo ...
Qt控件
ButtonsPushButton控件1)控件位置:Button->PushButton
2)控件介绍:该控件继承自QButton类,通常用于执行命令或触发事件。
3)控件属性设置选项:
(1)name:该控件对应源代码中的名字。
(2)text:该控件对应图形界面中显示的名字。
(3)font:设置text的字体。
(4)enabled:该控件是否可用。
4)常用成员函数:
(1)QPushButton::QPushButton(const QString &text,QWidget *parent,const char *name = 0);
构造一个名称为name,父对象为parent并且文本为text的推动按钮。
(2)void QButton::pressed()[信号]
当按下该按钮时发射信号。
(3)void QButton::clicked()[信号]
当单击该按钮时发射信号。
(4)void QButton::released()[信号]
当释放该按钮时,发射信号。
(5)void QButton::setText(const QString & ...
Qt常用快捷方式
1234567891011121314151617181920212223242526272829303132333435F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 欢迎模式Ctrl+2 编辑模式Ctrl+3 调试模式Ctrl+4 项目设置模式Ctrl+5 帮助模式Ctrl+6 ...
Python小结
三周学完了pyhton,可喜可贺,可喜可贺。
基础/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数;
还有一种除法是//,称为地板除,两个整数的除法仍然是整数。
list和tuple是Python内置的有序集合,一个可变,一个不可变。
dict内部存放的顺序和key放入的顺序是没有关系的。
dict的key必须是不可变对象。
set和dict类似,也是一组key的集合,但不存储value。
函数可以返回多个变量,实际上返回一个tuple。
定义默认参数要牢记一点:默认参数必须指向不变对象!
参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
高级特性在一个列表生成式中,for前面的if ... else是表达式,而for后面的if是过滤条件,不能带else。
变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集 ...