微调 讨论区


#41

densenet里面是output,resnet里面是classifier,你可以print出来看看


#42

这个不一致是我的锅,来承认个错误 :sweat_smile:
很快会改成全部都用output的


#43

I finally solved this problem by switching python2 to python3.


#44

看着像是网络名字的问题。你是不是生成了两次finetune_net?


#45

同问啊,能不能改finetune网络内部的参数结构呀?


#46

可以的。手动copy想要的就行了。例如 In [13]: http://zh.gluon.ai/chapter_computer-vision/fcn.html


#47

好像只能把finetune网络选择一部分层添加到新建的网路中,然后再修改,这样也可以


#48

关于课后的第三题,即如何重用imagenet里热狗的权重,我的想法是把该权重拿出来,和它取反后的结果进行concatenate,用这个2*512的ndarray去初始化新网络的output层,如此尝试后发现前两个epoch就能达到很高的accuracy了,收敛得非常快。结果和代码如下:
第一次用xavier的网络的结果:


第二次改动的代码:

改动后的结果:

效果还是非常明显的。
@mli 不知道我这个思路对不对?


#49

@Jing_Luo我在你的基础上做了一下小小的改动
import numpy as np
weight = pretrained_net.classifier[4].weight
hotdog_w = nd.split(weight.data(), 1000, axis=0)[713]
w = nd.random_normal(0, np.sqrt(2. / 512), shape=(1,512))
output_init = nd.concat(hotdog_w, w, dim = 0)


#50

请教大家一个问题,我遇到了和@yulangwx一样的问题,按照教程给的代码跑了一遍,test acc只有50%,对于二分类这就和乱猜的一样,等于没有训练,这是怎么回事呢?


#51

直接在终端里面输入就可以吗,还是需要设置系统变量,linux不太熟练


#52

如果不做任何限定的情况下,backprop时feature层的参数是否也会随之更新?
如何才能限制feature层的参数,使其不受backprop的影响?


#53

@chen0510566 个人觉得锁定参数的话,就直接用输出的feature作为新模型的输入就好。可以参考kaggle识狗比赛里 @ypw 的代码。


#54

还可以这样啊,学习了,感谢


#55

问下,这个帖子里面的方法是只训练后面新加的一些层,还是连从训练好的模型迁移来的部分也一起给训练了。


#56

整体训练,迁移过来主要是作为初始权重,不想改变迁移的权重可以通过lr_mult=0参数设置


#57

多谢,然后还有一个问题,例子里面给的是把一个模型的一部分给修改了一下这种 , 如果我想在原模型的基础上再加上几层或一些其他的网络结构呢,比如使用Resnet 构建faster rcnn这种,在原网络后面加上了很多其他内容,这种情况下要怎么向feature里面添加东西呢


#58

如果保留的部分名称一样可以直接使用load_params方法,里面有参数ignore_extra和allow_missing供设置,如果名称不一样可以直接使用collect_params.get(’…’).data(), 和 set_data()方法进行一对一赋值,赋值完了save_params给之后使用


#59

你这个是He的Xaiver初始化吧


#60

modol zoo 里面下载的 参数,能更改保存路径么?我的用户名是中文的下载好了解压,但是打开路径找不到。报错