作者fragmentwing (片翼碎梦)
看板DataScience
标题[问题] 同家族、不同模型间的迁移学习?
时间Sat Apr 29 18:09:38 2023
ctrl + y 可以删除一整行,请将不需要的内容删除
文章分类提示:
- 问题: 当你想要问问题时,请使用这个类别。
- 讨论: 当你自己已经有答案,但是也想听听版友意见时。
- 情报: 当你看到消息时,请使用这个类别。
根据板规规定,做适当的转换,以及摘录重要文意。
- 心得: 当你自己想要分享经验时,请使用这个类别。
(回答并非义务,所以当有人回答时,哪怕句谢谢也好,多多回应,大E可编辑文章)
可以试着把程式码用网站贴出来唷 https://pastebin.com/
(如果用不到以下框架,如观念问题请自行视情况删除作业系统,使用工具等项目)
作业系统:win10
问题类别:DL
使用工具:python
问题内容:
板上先进大大们好
看一些文章讲到当初VGG的做法是先训练最小的VGG11然後再用迁移学习的方式让後面更大的VGG16、VGG19等等能够享受预训练带来的好处
试着做了类似的东西,结果目前自己的方法需要指定对应的各层,发现这样非常累而且很容易出错,不知道有没有比较好的做法
具体点解释目前自己的作法:
先用回圈读取state_dict(),然後自己慢慢算VGG13的哪一层应该要吃VGG11的哪一层的权重
最後写了超多的if一层一层填进去,相关的部分如下:
https://pastebin.com/YCQXK75i
当然我知道用列表之类的做法应该能写得好看一点,但我的重点不是这个,而是好奇有没有能够不用算或是自动算相应层的方法?
感谢
--
https://i.imgur.com/h4Q0F04.jpg
9月23日 发生大事了
因为就在这天,加藤惠诞生了
https://i.imgur.com/H3RhXfJ.jpg
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.77.97.142 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1682762982.A.10C.html
先谢谢大大提供资讯,这感觉好像有对到又好像没有,可能可以利用起来
我主要是想避免吃到与自己不同out_channels的层
如果以out_channels和BN层来列表,两个VGG的前面大概会长这样
'VGG13': [ 64, B, 64, B, 128,
'VGG11': [ 64, B, 128, B, 256,
我怕VGG13第二个64会接收到VGG11第一个128层导致参数阵列整个大小不同导致错误
还是我这种担心其实是多虑的?
※ 编辑: fragmentwing (42.77.97.142 台湾), 04/29/2023 18:53:51
2F:推 chang1248w: 善用dict 04/29 18:46
目前是用dict没错 不过算不算善用满难说的
※ 编辑: fragmentwing (42.77.97.142 台湾), 04/29/2023 18:56:53
3F:→ chang1248w: 印象中tf keras好像可以办到 04/29 19:19
4F:→ chang1248w: 自动比对layer name和layer weight shapes,载入 04/29 19:22
5F:→ chang1248w: layer weight并忽视那些对不上的 04/29 19:22
6F:→ chang1248w: 印象中 04/29 19:22
7F:→ fragmentwing: 我的状况是因为结构本身就不一样所以layer_name不一 04/29 19:46
8F:→ fragmentwing: 样,除非不用sequential直接给各层命名 04/29 19:46
9F:→ fragmentwing: 後来想想应该可以利用layer编号虽然间隔不一但必定 04/29 20:11
10F:→ fragmentwing: 增长的特性来写个能自动存成list的作法 04/29 20:11
11F:→ fragmentwing: 虽然还是很不自动就是 04/29 20:23
12F:推 st1009: 我有点看不懂你的问题,但我猜不用预设forward用多个自定 04/29 21:38
13F:推 st1009: 义的fn来跑网路可以解决你的问题,至少可以简化程式 04/29 21:38
14F:→ fragmentwing: 一般的迁移学习因为是同结构但任务不同所以预训练可 04/29 22:19
15F:→ fragmentwing: 以直接载 但这次的状况是结构不同所以我才得去指定 04/29 22:19
16F:→ fragmentwing: 层数 04/29 22:19
17F:→ chang1248w: 是说为何不把vgg11包成一层,11-16包成第二层? 04/30 09:28
18F:→ st1009: 我猜他希望VGG16的架构跟原版完全一样吧,说真的以现代角 04/30 09:45
19F:→ st1009: 度他这样复杂的迁移学习意义不大,因为VGG其实是小模型... 04/30 09:46
20F:嘘 cs410567cs: 不要再用VGG了 05/10 09:54