0%

优化器的通用用法

首先引入包:

1
from torch import optim

使用例子:

1
2
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr=0.0001)

优化器类初始化的第一个参数需要是一个 iterable,比如 model.parameters()。列表也是 iterable,比如 [var1, var2]。这个 iterable 里的元素应当是 Variabel(也可以是 dict)。

官方文档里提到一句话:

If you need to move a model to GPU via .cuda(), please do so before constructing optimizers for it. Parameters of a model after .cuda() will be different objects with those before the call.

也就是说,将模型加载到 GPU 之后再定义优化器(如果这个优化器更新的是这个模型的参数的话)。

阅读全文 »

训练神经网络时会使用 weight decay,decay,词义是『 衰减、减小』,weight decay,使网络层的参数减小,以使得网络获得更好的性能,也避免梯度爆炸的情况出现。现在的各种优化器,如 SGD, Adam 等,在使用的时候都会有一个参数 weight_decay。现在的各种框架中,实际上是用 L2 正则化来实现 weight decay 的,也就是说,这些框架认为 weight decay 和 L2 正则化是等价的。在说到 L2 正则化的作用时,也经常会提到 L2 正则化可以使得权重减小,起到 weight decay 的作用。本文做的工作,首先证明了 weight decay 在 SGD 优化器中与 L2 正则化确实是等价的,但在 Adam 优化器中却不是这样,因此现在在 Adam 优化器中也用 L2 正则化来实现 weight decay 是有问题的,并没有真正起到 weight decay 的作用,会降低 Adam 优化器的泛化性能。针对这个问题,作者又提出了改进措施。

论文标题:Decoupled Weight Decay Regularization

作者:Ilya Loshchilov, Frank Hutter

发表于 ICLR 2019

地址:arXiv , OpenReview

阅读全文 »

hook 是程序设计领域一个概念,引用一个博客的说法:

In general, “hooks” are functions that automatically execute after a particular event. 1

1. What are hooks?

Hook 是 PyTorch 中一个十分有用的特性。利用它,我们可以不必改变网络输入输出的结构,方便地获取、改变网络中间层变量的值和梯度。这个功能被广泛用于可视化神经网络中间层的 feature、gradient,从而诊断神经网络中可能出现的问题,分析网络有效性。2

2. Hook 是 PyTorch 中一个十分有用的特性

在 PyTorch 中,hook 可用于 Tensornn.Module 中。

阅读全文 »

整理了一下 GradCAM 的代码实现,因为还没有阅读原文,所以并没有解释细节,只是记录一下对于一份现成的代码,如何整理为我所用。

阅读全文 »

Linux 系统里文件权限的修改

文件权限的对应数字

1
r: 4  w: 2  x: 1

符号类型修改文件权限

1
2
3
u (user)  g (group)  o (others)  a (all)
+ (加入) - (移除) = (设置)
r w x

举例:

1
chmod u=rwx,go=rx filename
1
2
# 给所有人写入权限
chmod a+w filename
1
2
# 去除所有人的执行权限
chmod a-x filename

基础知识

图的表示

给定一张图(Graph),记为$G = (V, E)$

结点$v$的度(degree),记为$\operatorname{d} (v)$或$\operatorname{deg} (v)$,表示一个结点的邻居结点的数量

阅读全文 »

问题定义

训练数据集定义为:

其中,$x_i \in \mathbb{R}^{n}$, $y_i \in {+1, -1}$。

学习的目标是在特征空间中找到一个分离超平面$w \cdot x + b = 0$,使得实例能够分到不同的类。$w$为法向量,其指向正类一侧,$b$为截距。线性可分支持向量机利用间隔最大化求最有分离超平面,此时解是唯一的。这个唯一的解表示为:

相应的分类决策函数为:

阅读全文 »

本文是2016年3月16日写的,记录当时学习二叉树三种深度优先遍历的笔记。时隔两年,准备面试阶段重新复习二叉树,翻到之前写的这个笔记,读起来甚至觉得还不错,因此整理放在这里,原文为$\LaTeX$文件,放在GitHub上:bintree-traversal

阅读全文 »