[問題] batch_size圖片大小不一
作業系統:win10
問題類別:batch size, gradient, triplet loss
使用工具:python, pytorch
問題描述:
當把圖片整批丟入模型時,
要求必須整批圖片的size必須相同,
這我能理解 它是[batch size, h, l, w]形式傳入
網上查到兩種解決方法:
1. resize()成統一尺寸,但小弟的圖片不巧圖片大小差異很大(有旋轉..等),長寬有的
甚至是轉置。擔心會不會resize後失真太多?
2. batch_size設為1,但這存在一個問題,我的模型設定的損失函數是計算triplet loss,
如果batch_size=1 沒辦法丟到loss function做計算,到下個batch模型重算時,上次計算
出來的gradient是不是就消失了?(我實驗是模型根本找不到梯度)所以想請教大家有沒有
保留梯度的方法?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.19.228.161 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1587137688.A.EC0.html
※ 編輯: wang19980531 (117.19.228.161 臺灣), 04/17/2020 23:38:38
→
04/18 00:02,
4年前
, 1F
04/18 00:02, 1F
→
04/18 00:02,
4年前
, 2F
04/18 00:02, 2F
→
04/18 00:03,
4年前
, 3F
04/18 00:03, 3F
我的架構大概是
for each圖片:
y=model(x)
append(y_,y)
loss=triplet_loss(y_,labels)
opt.zero_grad()
loss.backward()
opt.step()
原本將圖片這批丟到model(就是append先,迴圈外才做model)是可行的
但只有一張圖片的y也沒有辦法算loss跟gradient;
append在一起為何會算不出來(loss降不了)
→
04/18 14:03,
4年前
, 4F
04/18 14:03, 4F
推
04/18 14:49,
4年前
, 5F
04/18 14:49, 5F
→
04/18 14:49,
4年前
, 6F
04/18 14:49, 6F
→
04/18 14:49,
4年前
, 7F
04/18 14:49, 7F
→
04/18 14:49,
4年前
, 8F
04/18 14:49, 8F
我沒有fully connected layer喔 但是一個batch丟入model算必須要[n,c,l,w] l*w的圖片
大小要一致 不然只能一張一張丟 可是如上 會發生找不出梯度的問題?
推
04/18 14:51,
4年前
, 9F
04/18 14:51, 9F
→
04/18 14:51,
4年前
, 10F
04/18 14:51, 10F
推
04/18 19:57,
4年前
, 11F
04/18 19:57, 11F
→
04/18 19:57,
4年前
, 12F
04/18 19:57, 12F
推
04/19 14:54,
4年前
, 13F
04/19 14:54, 13F
padding似乎不失為一個好方法 謝謝提議
※ 編輯: wang19980531 (117.19.228.161 臺灣), 04/20/2020 07:30:48
感謝大家的意見,抱歉這麼晚才做回應!
※ 編輯: wang19980531 (117.19.228.161 臺灣), 04/20/2020 07:34:46
→
04/20 11:53,
4年前
, 14F
04/20 11:53, 14F
→
04/20 11:54,
4年前
, 15F
04/20 11:54, 15F
我用的是別人寫好的hard都triplet loss
應該是online的就是只要給一串label和向量他會自己去算loss
※ 編輯: wang19980531 (61.221.242.34 臺灣), 04/20/2020 12:10:01
推
04/20 14:32,
4年前
, 16F
04/20 14:32, 16F
→
04/20 14:32,
4年前
, 17F
04/20 14:32, 17F
→
04/20 14:32,
4年前
, 18F
04/20 14:32, 18F
→
04/20 14:32,
4年前
, 19F
04/20 14:32, 19F
推
04/21 21:01,
4年前
, 20F
04/21 21:01, 20F
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章