首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caffe LeNet:`solver.step(1)和`solver.net.forward()的区别

Caffe LeNet:`solver.step(1)和`solver.net.forward()的区别
EN

Stack Overflow用户
提问于 2016-06-25 06:21:47
回答 2查看 3.8K关注 0票数 6

我正在查看Caffe LeNet教程这里,我想到了一个问题:

这两个代码之间有什么区别:

代码语言:javascript
复制
self.solver.step(1)

代码语言:javascript
复制
self.solver.net.forward()  # train net

据评论称,他们两人似乎都在训练网络,至少是这样。

我个人认为,第一种方法是根据培训数据对网络进行训练,并更新nettest_net的权重,而第二种方法似乎只转发了一批数据并应用上一步学习到的权重。

如果我认为正确,那么教程中第二段代码的目的是什么?为什么代码要做net.forward呢?solver.step(1)不能自己做这个吗?

耽误您时间,实在对不起

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-27 20:53:04

step完成一个完整的迭代,包括三个阶段:正向评估、反向传播和更新。对转发的调用只执行其中的第一个。签名(参数列表)也有差异。

票数 9
EN

Stack Overflow用户

发布于 2018-07-26 17:15:52

我在solver.step(1)solver.net.forward()中发现了一种奇怪的行为。当我为输入网络使用自定义层时,实例层在使用以下变量之前需要一个变量:

代码语言:javascript
复制
solver.net.layers[0].mySet(variable)

variable是在我的层的局部变量中设置的。但是,当我调用solver.step时,该变量不会出现。但是,当我使用solver.net.forward()时,它就会出现。我不确定,但也许solver.step正在为该层实例化一个新变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38025639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档