自由式学习
52人加入学习
(0人评价)
3、深度学习-注意力机制、迁移学习、半监督学习
价格 免费

requires_grad设置为False

1. 辨别named_parameters和parameters

net = nn.Linear(2, 3)
print("以下是named_parameters")
for i, j in net.named_parameters():
    print(i, j)
print("——————————我是一条分割线——————————")
print("以下是parameters")
for q in net.parameters():
    print(q)

输出结果:

以下是named_parameters
weight Parameter containing:
tensor([[-0.6697,  0.2564],
        [-0.1950, -0.2708],
        [-0.5232, -0.0067]], requires_grad=True)
bias Parameter containing:
tensor([-0.5722,  0.1416,  0.4618], requires_grad=True)
——————————我是一条分割线——————————
以下是parameters
Parameter containing:
tensor([[-0.6697,  0.2564],
        [-0.1950, -0.2708],
        [-0.5232, -0.0067]], requires_grad=True)
Parameter containing:
tensor([-0.5722,  0.1416,  0.4618], requires_grad=True)

 

2. 如何固定参数

for p in net.parameters():
    p.requires_grad = False

for k, v in net.named_parameters():
    if v.requires_grad:
        print(k, v)

无输出

[展开全文]

fine turning:迁移学习的一种,固定特征抽取的参数,仅修改分类器FC layer的参数,属于以下分类中的第3种。

迁移学习(以VGG为例):

1. pretrained VGG特征抽取器+删除掉原来VGG中的FC layer分类器,用机器学习分类器(SVM/贝叶斯)来替换

2. pretrained VGG特征抽取器+修改 FC layer(比如将原1000分类的改为100分类)

注:第2种方法中特征抽取器和FC layer的参数都在更新

3. 固定pretrained VGG特征抽取器+修改 FC layer

注:第3种方法中只有FC layer参数在更新,即默认特征抽取已经被训练的很好了

4. 多个不同的pretrained特征抽取器+FC layer(使用的不多)

[展开全文]

归纳式迁移学习(Inductive Transfer Learning)最常用,其中又分为两类:Multi task learning、Self-taught learning。Multi task learning是源域和目标域都有标签,Self-taught learning是源域没标签,目标域有标签。

多任务迁移学习可以将自编码器中的encoder部分拿出来用,所谓自编码器(auto encoder)就是自己学自己,端对端的对象都是自己,从而训练出一对表达能力很强的encoder和decoder。

[展开全文]