cs231n-assignment3的笔记

这篇博客详细记录了cs231n课程的第三份作业,涉及Image Captioning的Vanilla RNNs和LSTMs实现,网络可视化包括Saliency Maps、Class Visualization和Fooling Images,以及初步接触Style Transfer和Generative Adversarial Networks。通过这些任务,博主探讨了深度学习在图像理解和生成方面的应用。
摘要由CSDN通过智能技术生成

......

Q1: Image Captioning with Vanilla RNNs (25 points)

首先是rnn_step_forward,直接按照公式即可:

next_h = np.tanh(x.dot(Wx) + prev_h.dot(Wh) + b)  # [N, H]
cache = (x, prev_h, Wx, Wh, b, next_h)

rnn_step_backward,根据tanh的求导公式:


可得:

x, prev_h, Wx, Wh, b, next_h = cache
dtanh = dnext_h * (1 - next_h * next_h)  # [N, H]
db = np.sum(dtanh, axis=0)  # [H, ]
dWh = (prev_h.T).dot(dtanh)  # [H, H]
dWx = (x.T).dot(dtanh)  # [D, H]
dprev_h = dtanh.dot(Wh.T)  # [N, H]
dx = dtanh.dot(Wx.T)  # [N, D]

rnn_forward中调用rnn_step_forward,这个函数的执行过程如下图(源自课件):


代码:

N, T, D = x.shape
H = h0.shape[1]
h = np.zeros((N, T, H))
prev_h = h0
for i in range(T):
    next_h, _ = rnn_step_forward(x[:, i, :], prev_h, Wx, Wh, b)
    prev_h = next_h
    h[:, i, :] = prev_h
cache = (x, h0, Wh, Wx, b, h)

rnn_backward中注意dh的shape为(N, T, H),也就是其汇总了上图中每个h输出后返回的梯度,经过之前几个assignment的折磨后现在写起来很简单了。。。:

x, h0, Wh, Wx, b, h = cache
N, T, D = x.shape
dprev_h = np.zeros_like(h0)
dx = np.zeros_like(x)
dWx = np.zeros_like(Wx)
dWh = np.zeros_like(Wh)
db = np.zeros_like(b)
for i in range(T):
    if i == T-1:
        prev_h = h0
    else:
        prev_h = h[:, T-i-2, :]
    next_h = h[:, T-i-1, :]
    cache2 = (x[:, T-i-1, :], prev_h, Wx, Wh, b, next_h)
    dnext_h = dh[:, T - i - 1, :] + dprev_h
    dx1, dprev_h, dWx1, dWh1, </
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CS231n 第三次作业的内容包括使用深度学习来完成图像分类任务。具体来说,包括使用卷积神经网络 (CNN) 来训练图像分类器,并使用预训练网络 (pre-trained network) 来进行微调 (fine-tuning)。还可能包括使用数据增强 (data augmentation) 来提高模型的泛化能力,以及使用可视化工具来理解 CNN 的内部工作原理。 ### 回答2: CS231n作业3是斯坦福计算机视觉课程的第三个作业,该作业涵盖深度学习模型的生成和推理,以及如何创建生成性对抗网络(GAN)。 此次作业主要涉及三个任务: 1. Image Captioning 图片说明任务,也是本次作业的第一个任务。仔细研读与Image Captioning任务相关的代码,并以此为基础,使用RNN中的LSTM层来生成图像的描述。这个一项技术非常实用,可以让图片在搜索引擎中体现出来,提高用户使用体验。学生需要研究encoder和decoder的实现,了解他们生成文本的方法。最终,利用逆向传播算法(反向传播算法)训练神经网络,学习生成图像标题。 2. Generative Adversarial Networks 生成对抗网络是GAN。G和D两个模型构成了GAN模型,是一种强大的生成模型。在这个任务中,学生需要学习如何训练GAN模型,以生成看起来像真实图像的图像样本。这是一个非常复杂的问题,需要合理运用损失函数,较好的优化GAN的训练中表现良好。 3. Neural Style Transfer 神经风格迁移属于图像处理范畴,学生需要实现单张图像的神经风格迁移。方法是,利用一些随机初始化参数,以迭代方式计算输入图像的内容特征和样式特征。最终,需要使用反向传播算法来搜索图像处理的最佳策略。 总之,本次作业难度系数较大,但同时学生在操作过程中也能够学到很多使用深度学习技术解决实际问题的方法,提高对于深度学习的理解、掌握和技能。同时,希望学生能够在本次作业中体验到收获成功带来的成就感。 ### 回答3: CS231n Assignment 3是斯坦福大学计算机视觉课程中的一项作业,主要涉及深度强化学习。它由三个部分组成:Q-learning,Policy Gradients和Actor-Critic。 在Q-learning部分,学生需编写代码来实现Q-learning算法,在智能体与环境之间折衷时间、奖励和学习。Q-learning是一种基于回合的控制算法,它基于时间步长内的奖励和马尔科夫决策过程。在此过程中,学生需要选择一个平衡折衷,以便在训练智能体时最大限度地提高其性能。 在Policy Gradients部分,学生需实现策略梯度算法,该算法通过学习如何最大化预期回报来优化策略。在此步骤中,学生还将学习如何使用梯度上升法确定策略参数。策略梯度算法基于沿向目标策略方向更新参数的概念。 在Actor-Critic部分,学生需实现Actor-Critic算法,这是一种Q-learning和策略梯度算法的组合。该算法包括两个部分:演员即策略,用于决定智能体应采取的行动,评论家即Q值估算器,根据当前状态值和行动值返回平均价值。这两个部分相互作用,以帮助智能体学习最佳策略。 总的来说,CS231n Assignment 3是一项具有挑战性的作业,涉及深度强化学习的各个方面,需要学生掌握许多概念和算法,并将它们应用于代码实现中。完成此项作业需要时间和耐心,但完成后,学生将获得对深度强化学习的深刻理解,这对于今后从事计算机视觉工作将大有裨益。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值