Python 2.7 获取轴don';尝试使用classification.ipny可视化caffe中的所有层时出现匹配数组错误

Python 2.7 获取轴don';尝试使用classification.ipny可视化caffe中的所有层时出现匹配数组错误,python-2.7,caffe,Python 2.7,Caffe,我是python的新手,对该语言有着非常基本的了解,我已经说过,我正在尝试为权重及其过滤器的所有层进行可视化。为此,我不再重复: # the parameters are a list of [weights, biases] filters = net.params['conv1'][0].data vis_square(filters.transpose(0, 2, 3, 1)) 更改图层名称时,我尝试使用如下循环: for layer_name, param in net.params

我是python的新手,对该语言有着非常基本的了解,我已经说过,我正在尝试为权重及其过滤器的所有层进行可视化。为此,我不再重复:

# the parameters are a list of [weights, biases]
filters = net.params['conv1'][0].data
vis_square(filters.transpose(0, 2, 3, 1))
更改图层名称时,我尝试使用如下循环:

 for layer_name, param in net.params.iteritems():
    # the parameters are a list of [weights, biases]
    filters = net.params[layer_name][0].data
    vis_square(filters.transpose(0, 2, 3, 1))
现在,它可以在第一层正常工作,但出现此错误并停止运行:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-16-cf7d5999a45c> in <module>()
      2     # the parameters are a list of [weights, biases]
      3     filters = net.params[layer_name][0].data
----> 4     vis_square(filters.transpose(0, 2, 3, 1))

ValueError: axes don't match array
这里怎么了?

如果有人能帮我一把,我将不胜感激

对于后续层,通道数>64。例如,如果第一层中有
num\u output:64
,第二层中也有
num\u output:64
,则存储权重的4D矩阵的形状为
64 x 64 x高x宽
。进行转置后,它将是高度x宽度x 64

您的函数无法处理64层对象,尽管它非常适合处理3层对象


我只需执行
n=int(np.ceil(np.sqrt(data.shape[0]*data.shape[3]))
并将整个对象重塑为一层对象。我不认为将卷积内核可视化为RGB会给您带来任何见解。

对于任何有类似问题的人(“轴与数组不匹配”错误):在转置之前,我将数据放入一个变量中,给出确切的大小。如果我的数据是大小为10*12*15的数据:

DataI = Data [0:9, 0:11, 0:14]
DataII = np.transpose(DataI,(0,2,1))
这对我有用

DataI = Data [0:9, 0:11, 0:14]
DataII = np.transpose(DataI,(0,2,1))