[問題] 同家族、不同模型間的遷移學習?

看板DataScience作者 (片翼碎夢)時間1年前 (2023/04/29 18:09), 1年前編輯推噓3(4115)
留言20則, 4人參與, 1年前最新討論串1/1
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://www.ptt.cc/bbs/DataScience/M.1682762982.A.10C.html

04/29 18:31, 1年前 , 1F
你是想要這個嗎(?
04/29 18:31, 1F
先謝謝大大提供資訊,這感覺好像有對到又好像沒有,可能可以利用起來 我主要是想避免吃到與自己不同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

04/29 18:46, 1年前 , 2F
善用dict
04/29 18:46, 2F
目前是用dict沒錯 不過算不算善用滿難說的 ※ 編輯: fragmentwing (42.77.97.142 臺灣), 04/29/2023 18:56:53

04/29 19:19, 1年前 , 3F
印象中tf keras好像可以辦到
04/29 19:19, 3F

04/29 19:22, 1年前 , 4F
自動比對layer name和layer weight shapes,載入
04/29 19:22, 4F

04/29 19:22, 1年前 , 5F
layer weight並忽視那些對不上的
04/29 19:22, 5F

04/29 19:22, 1年前 , 6F
印象中
04/29 19:22, 6F

04/29 19:46, 1年前 , 7F
我的狀況是因為結構本身就不一樣所以layer_name不一
04/29 19:46, 7F

04/29 19:46, 1年前 , 8F
樣,除非不用sequential直接給各層命名
04/29 19:46, 8F

04/29 20:11, 1年前 , 9F
後來想想應該可以利用layer編號雖然間隔不一但必定
04/29 20:11, 9F

04/29 20:11, 1年前 , 10F
增長的特性來寫個能自動存成list的作法
04/29 20:11, 10F

04/29 20:23, 1年前 , 11F
雖然還是很不自動就是
04/29 20:23, 11F

04/29 21:38, 1年前 , 12F
我有點看不懂你的問題,但我猜不用預設forward用多個自定
04/29 21:38, 12F

04/29 21:38, 1年前 , 13F
義的fn來跑網路可以解決你的問題,至少可以簡化程式
04/29 21:38, 13F

04/29 22:19, 1年前 , 14F
一般的遷移學習因為是同結構但任務不同所以預訓練可
04/29 22:19, 14F

04/29 22:19, 1年前 , 15F
以直接載 但這次的狀況是結構不同所以我才得去指定
04/29 22:19, 15F

04/29 22:19, 1年前 , 16F
層數
04/29 22:19, 16F

04/30 09:28, 1年前 , 17F
是說為何不把vgg11包成一層,11-16包成第二層?
04/30 09:28, 17F

04/30 09:45, 1年前 , 18F
我猜他希望VGG16的架構跟原版完全一樣吧,說真的以現代角
04/30 09:45, 18F

04/30 09:46, 1年前 , 19F
度他這樣複雜的遷移學習意義不大,因為VGG其實是小模型...
04/30 09:46, 19F

05/10 09:54, 1年前 , 20F
不要再用VGG了
05/10 09:54, 20F
文章代碼(AID): #1aJEpc4C (DataScience)
文章代碼(AID): #1aJEpc4C (DataScience)