cs231n 课程作业 Assignment 3

作业总结

终于来到了最后一次作业,这次主要是讲 RNN 或 LSTM 这个时序模型,感觉如果公式已经熟悉了的话(没有的话多看几遍,也可以参考我上篇博文的公式总结,囧),作业应该比上次的简单。代码量也少一些。在写代码之前要下载一些必要的模型文件,数据集等,可能比上两次麻烦点,具体看 Assignment #3 的说明就好了。

我的作业代码见:cs231n/assignment3.

Image Caption

这次的作业内容是从 Image Caption 这个问题入手,即给定一张图片,生成对图片的文字描述。下图就是 Google NIC 模型的示意图,流程已经很清晰了。大概的做法是这样的,用一个预训练的 CNN 把图片提取特征,然后那这个特征初始化 RNN(LSTM) 的 hidden state,用 RNN(LSTM) 生成一句话。这里的 CNN 主要就是一个 encoder,负责把图片压缩成一个语义向量,而 RNN(LSTM) 则是一个 decoder,也是一个语言模型(language model),负责从这个语义向量解码出自然语言。

这里写图片描述

这门课的作者 Karpathy 在这个课题上曾做了很多工作,可以参考项目主页 Deep Visual-Semantic Alignments for Generating Image Descriptions

RNN

前面 RNN_Captioning.ipynb 主要是完成 RNN & LSTM 以及 word embedding 的 forward 和 backward 操作,见 cs231n/rnn_layers.py 文件。

这里再贴一下 RNN 的示意图:

RNN 的 step_forward 公式很简单,

ht=tanh(Wxxt+Whht1+b)
反向传播的公式也很好推导,注意 tanh(x) 的导数是 (1tanh2(x)) ,剩下的和前面的作业差别不大。

RNN 的 forward 是要用 for 循环按照序列时序展开的,每个时刻 t 接收对应的输入 xt ,和上时刻隐层的激活值(hidden state) ht1 ,得到此时刻的 hidden state 值

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值