【问题标题】:dict_keys object does not support indexingdict_keys 对象不支持索引
【发布时间】:2019-02-06 22:44:34
【问题描述】:

我不知道这里有什么问题:

net.blobs['data'].reshape(*(1, 3, imageToTest_padded.shape[0], imageToTest_padded.shape[1]))
#net.forward() # dry run
net.blobs['data'].data[...] = np.transpose(np.float32(imageToTest_padded[:,:,:,np.newaxis]), (3,2,0,1))/256 - 0.5;
start_time = time.time()
output_blobs = net.forward()
print('At scale %d, The CNN took %.2f ms.' % (m, 1000 * (time.time() - start_time)))

# extract outputs, resize, and remove padding
heatmap = np.transpose(np.squeeze(net.blobs[output_blobs.keys()[1]].data), (1,2,0))  # output 1 is heatmaps
heatmap = cv.resize(heatmap, (0,0), fx=model['stride'], fy=model['stride'], interpolation=cv.INTER_CUBIC)
heatmap = heatmap[:imageToTest_padded.shape[0]-pad[2], :imageToTest_padded.shape[1]-pad[3], :]
heatmap = cv.resize(heatmap, (oriImg.shape[1], oriImg.shape[0]), interpolation=cv.INTER_CUBIC)

收到错误 TypeError: 'dict_keys' 对象不支持行内索引

heatmap = np.transpose(np.squeeze(net.blobs[output_blobs.keys()[1]].data), (1,2,0))  # output 1 is heatmaps

原码:https://github.com/ZheC/Realtime_Multi-Person_Pose_Estimation

有什么建议吗?谢谢。

【问题讨论】:

  • dict.keys() 返回一个列表时,听起来原始代码来自旧的python 2。尝试list(output_blobs.keys())[1] 用于 python 3(未经测试)。

标签: python typeerror


【解决方案1】:

您可以尝试遍历字典的键:

for key in output_blobs.keys():
    heatmap = np.transpose(np.squeeze(net.blobs[output_blobs[key].data), (1,2,0))

我无法测试这是否适合您,并且可能有比循环更好的方法。

【讨论】:

  • 这将循环遍历所有键,因此如果您想跳过某些键,则必须使用此方法通过逻辑指定它们...
猜你喜欢
  • 2017-09-20
  • 2013-06-23
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 2019-11-12
相关资源
最近更新 更多