我怎么知道图层中是否存在“偏差”?

2024-04-18 18:48:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在和pycaffe一起在一个咖啡网里读体重和偏见。 这是我的密码

weight = net.params[layer_name][0].data
bias = net.params[layer_name][1].data

但是,我的网络中有些层没有偏差,所以会出现Index out of range的错误。在

所以我的问题是我能用吗

^{pr2}$

要控制对bias的分配? 如何编写代码?在


Tags: name网络layer密码dataindexnetparams
2条回答

您只需在net.params[layer_name]上迭代:

layer_params = [blob.data for blob in net.params[layer_name]]

这样,您就得到了所有layer_params(对于某些层,这可能超过2个,例如,^{}

如果只想检查第二个参数blob,可以使用len

^{pr2}$

PS,
可能的情况是,net.params[layer_name]不是一个pythonlist,而是一些python boost包装器对象,因此您可能需要在我在这个答案中建议的一些方法中将其显式转换为list(list(net.params[layer_name]))。在

如果你想做卷积层,你可以通过阅读prototxt而不需要caffemodel来发现该层是否有偏差

from caffe.proto import caffe_pb2
import google.protobuf.text_format
net = caffe_pb2.NetParameter()
f = open('model.prototxt', 'r')
net = google.protobuf.text_format.Merge(str(f.read()), net)
f.close()
for i in range(0, len(net.layer)):
    if net.layer[i].type == 'Convolution':
        if net.layer[i].convolution_param.bias_term == True:
            print 'layer has bias'

相关问题 更多 >