对一个tensor或narray进行局部区域赋值是in-place操作,需要特别小心

程序示例:

import torch
from PIL import Image
import torchvision.transforms as transforms

def cutout(input):
    input[:, 100:200, 100:200] = 0.0   # 注意:这是in-place操作,不仅会改变形参input的值,
                                       # 而且会改变实参img的值。
    return input

img = Image.open('C:/Users/admin/Desktop/bird.jpg')
to_tensor = transforms.ToTensor()
to_PILimage = transforms.ToPILImage()
img = to_tensor(img)

img_cut = cutout(img)    

如果把img_cut和img展示出来,则结果是:

 

posted @ 2021-12-16 11:08  Picassooo  阅读(261)  评论(0编辑  收藏  举报