Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态修改图层';Caffe中的s参数_Python_Caffe_Pycaffe - Fatal编程技术网

Python 动态修改图层';Caffe中的s参数

Python 动态修改图层';Caffe中的s参数,python,caffe,pycaffe,Python,Caffe,Pycaffe,我使用下面的代码加载网络并进行设置,层的参数存储在deploy.prototxt中 net=caffe.net(deploy.prototxt、caffemodel、caffe.TEST) 但是,我想做的是动态地修改层的参数(例如内核大小,或pad,等等),而不是修改prototxt文件并重新加载它。 有什么方法可以做到这一点吗?您可以编写自己的get/set方法,并将它们公开给python。 在layer.hpp中: virtual float GetParameter(const std::

我使用下面的代码加载网络并进行设置,层的参数存储在
deploy.prototxt

net=caffe.net(deploy.prototxt、caffemodel、caffe.TEST)

但是,我想做的是动态地修改层的参数(例如
内核大小
,或
pad
,等等),而不是修改prototxt文件并重新加载它。
有什么方法可以做到这一点吗?

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

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添加这个函数,您可以编写自己的get/set方法,并将它们公开给python。
在layer.hpp中:

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添加这个选项,我建议您改变对这个问题的看法。您提到的“动态修改参数”依赖于什么?一个最常用的变量(我所面对的)是当前迭代次数。例如,我希望每10000次减少参数值。基于此,在使用该参数的图层中,应用该函数对其进行修改。这与修改prototxt文件相同

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


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

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


[文章末尾的解决方案]
我需要对模型进行微调,因此希望以编程方式更改各个层的lr_mult参数。我的帮助搜索从这个线程的标题开始,谢天谢地,在下面提到的标题为“如何以编程方式修改prototxt?”的链接中结束

以文本_格式加载google/protobuf中的模型定义prototxt文件后,可以访问和修改参数。修改后的protobuf可以写成文件


[文章末尾的解决方案]
我需要对模型进行微调,因此希望以编程方式更改各个层的lr_mult参数。我的帮助搜索从这个线程的标题开始,谢天谢地,在下面提到的标题为“如何以编程方式修改prototxt?”的链接中结束


以文本_格式加载google/protobuf中的模型定义prototxt文件后,可以访问和修改参数。修改后的protobuf可以写成文件

谢谢你的回答。我已经采取了另一种解决方案,通过目录动态更改.prototxt文件,我认为您的解决方案将更加灵活。谢谢您的回答。我已经采取了另一种解决方案,通过目录动态更改.prototxt文件,我认为您的解决方案将更加灵活。