我得到一个error '_GeneratorContextManager'对象不可订阅'的错误 试图使用contextmanager时,我产生的图像的新功能 这占用了太多的内存,所以我试图在函数调用结束时释放内存
@contextmanager
def generate_image(self, img, i):
#print("=================generate image=============================")
img = Variable(img, requires_grad=True)
#image_PIL = transforms.ToPILImage()(img[0])
#image_PIL.save('result/test{}.jpg'.format(i))
self.net._modules.get(self.finalconv_name).register_forward_hook(self.hook_feature)
img_tensor = img.to(self.device)
logit , _ = self.net(img_tensor)
h_x = F.softmax(logit, dim=1).data.squeeze()
weight_softmaxtemp = self.weight_softmax
feature_blobstemp = self.feature_blobs[0]
probs, idx = h_x.sort(0, True)
idx_temp = [idx[0]]
output_cam = self.returnCAM(self.feature_blobs[0],self.weight_softmax,[idx[0].item()])
height, width = 28,28
heatmap = cv2.applyColorMap(cv2.resize(output_cam[0], (width, height)), cv2.COLORMAP_JET)
heatmap2 = cv2.resize(output_cam[0],(width,height))
img =img.detach().numpy()
img2 = img[0]
img2 = np.transpose(img2,axes=(1,2,0))
img2=cv2.resize(img2,(28,28))
#TODO erase
img2 = cv2.applyColorMap(cv2.resize(output_cam[0], (width, height)), cv2.COLORMAP_JET)
camsresult = np.array(list(map(resize_image, heatmap, img2)))
del img_tensor,output_cam,heatmap2,img2,img
gc.collect()
result = zip(camsresult, heatmap, probs.detach().cpu().numpy(), idx.detach().cpu().numpy())
with self.generate_image(img,idx) as result:
sal_maps_b, heat_map_b, probs_b, preds_b = result
我收到一条错误信息 问题来源StackOverflow 地址:/questions/59384137/error-generatorcontextmanager-object-is-not-subscriptable
不知道为什么这里需要contextmanager装饰器,但是它看起来像
result = zip(camsresult, heatmap, probs.detach().cpu().numpy(), idx.detach().cpu().numpy())
您应该放弃它,让contextmanager在幕后发挥作用。
yield zip(camsresult, heatmap, probs.detach().cpu().numpy(), idx.detach().cpu().numpy())
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。