show and tell 代碼閱讀筆記
訓練階段
https://github.com/ruotianluo/ImageCaptioning.pytorch/blob/master/models/ShowTellModel.py#L49-L82
fc_feats:圖片過resnet後的FC層的feature,[batch_size*5,2048],其中5是一張圖有5個描述的文本
在第1個step,fc_feats經過Linear層成input [batch_size*5,512],state全0
output, state = LSTM(input, state)
之後的第i個step,input變成文本的第i-1個詞的embedding [batch_size*5,512],state是上一個step的state
output, state = LSTM(input, state)
每個output經過Linear層映射為 [batch_size*5,vocab_size]
預測階段(非beam_search的)
https://github.com/ruotianluo/ImageCaptioning.pytorch/blob/master/models/ShowTellModel.py#L121-L168
第1個step,input為image的信息,state全0
output, state = LSTM(input, state)
第2個step,input為<begin of sentence>(全0信息),state為上一個step的state
output, state = LSTM(input, state)
第3個以後的step,input為上一個output取最大概率的詞的embedding,state為上一個step的state
output, state = LSTM(input, state)
最後返回的是每次output取最大概率的詞的list
推薦閱讀:
※為何讀不懂你的那個TA
※RNN基本模型匯總(deeplearning.ai)
※torchtext入門教程,輕鬆玩轉文本數據處理
※tf.nn.nce_loss 來自一篇古老的文章
※嶺回歸-嶺回歸
TAG:自然語言處理 |