首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Caffe中层参数的动态修改

Caffe中层参数的动态修改
EN

Stack Overflow用户
提问于 2016-11-29 05:40:35
回答 3查看 1K关注 0票数 1

我使用折叠代码加载和设置网络,层的参数存储在deploy.prototxt中。

net = caffe.Net(deploy.prototxt, caffemodel, caffe.TEST)

然而,我想要做的是修改参数(例如kernel_sizepad等)。而不是修改prototxt文件并重新加载它。有没有办法这样做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-06 20:36:11

您可以编写自己的get/set方法并将它们公开给python。在layer.hpp中:

代码语言:javascript
运行
复制
virtual float GetParameter(const std::string param_name) {return -1;}
virtual void SetParameter(const std::string param_name, float val) {}

然后在希望动态获取/设置参数的层中重新定义这些方法。

最后一步是向python公开这些方法。在_caffe.cpp中为bp::class_<Layer...添加以下内容

代码语言:javascript
运行
复制
.def("get_parameter", &Layer<Dtype>::GetParameter)
.def("set_parameter", &Layer<Dtype>::SetParameter)
票数 0
EN

Stack Overflow用户

发布于 2017-08-16 05:03:13

我建议改变你对这个问题的看法。对于您提到的“动态修改的参数”,它依赖于什么?最常用的变量(我所面对的变量)是当前的迭代时间。例如,我希望每10000次减少一次参数值。基于此,当您使用该参数时,在层中应用函数来修改它。这与修改prototxt文件是一样的。

为了获得特定层中的迭代时间,我只是在这里放置了彼此的解决方案。它非常简单,与修改prototxt文件相比,它可能会大大减少您的工作负载。希望您能从这个解决方案中得到灵感,并将其应用到您的案例中。

https://stackoverflow.com/a/38386603/6591990

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 15:37:16

员额末尾的解决办法

我需要细化一个模型,因此我希望以编程的方式更改各个层的lr_mult参数。我的帮助搜索从这个线程的标题开始,谢天谢地在下面提到的题为“如何以编程方式修改prototxt?”的链接中结束。

https://github.com/BVLC/caffe/issues/4878

在text_format中的google中加载模型定义prototxt文件后,可以访问和修改这些参数。修改后的原型可以写成一个文件。

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

https://stackoverflow.com/questions/40858548

复制
相关文章

相似问题

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