#创建Tensor实例的一个未解决问题:
为何可以向ToTensor实例传递一个图片
已知查看ToTensor类没有构造函数,只有一个参数为pic的成员函数__call__()
tensor_trans_tool=torchvision.transforms.ToTensor()①
tensor_img=tensor_trans_tool(img)②
tensor_img=tensor_trans_tool.call(img)③
语句②不理解,感觉正确的调用方法是语句③啊??
求解
#创建Tensor实例的一个未解决问题:
为何可以向ToTensor实例传递一个图片
已知查看ToTensor类没有构造函数,只有一个参数为pic的成员函数__call__()
tensor_trans_tool=torchvision.transforms.ToTensor()①
tensor_img=tensor_trans_tool(img)②
tensor_img=tensor_trans_tool.call(img)③
语句②不理解,感觉正确的调用方法是语句③啊??
求解
这里是把类对象变成可调用对象,语句1是类的实例化,__init__(self)就是构造函数,只是ToTensor类没有定义成员变量,此时tensor_trans_tool可以被当作是函数来调用。语句2就是函数调用的语法,实际上是调用了__call__(self, pic), 然后调用functional.to_tensor(pic),这里才是真正把图片变成tensor。语句3写成tensor_img=tensor_trans_tool.__call__(img)的话也是对的。tensor_trans_tool(img)和tensor_trans_tool.__call__(img)是一样的。