在这个页面(https://pytorch.org/vision/stable/models.html)中,它说“所有预训练的模型都期望以相同的方式标准化输入图像,即小批量的 3 通道 RGB 图像形状 (3 x H x W),其中 H 和 W 预计至少为 224。图像必须加载到 [0, 1] 的范围内,然后使用mean = [0.485, 0.456, 0.406]和std = [0.229, 0.224, 0.225]“进行归一化。
如果不是平时mean和std正常化是[0.5, 0.5, 0.5]和[0.5, 0.5, 0.5]?为什么要设置这么奇怪的值?
我以第三种方式失败了.t3还在CPU上.不知道为什么.
a = np.random.randn(1, 1, 2, 3)
t1 = torch.tensor(a)
t1 = t3.to(torch.device('cuda'))
t2 = torch.tensor(a)
t2 = t2.cuda()
t3 = torch.tensor(a, device=torch.device('cuda'))
Run Code Online (Sandbox Code Playgroud) 我通过网络制作了几个面具。这些掩码存储在一个torch.tensor变量中。我想cv2.dilate在tensor.
我知道有一种方法可以使用循环将其转换tensor为numpy.ndarray然后应用于cv2.dilate每个通道for。但是由于大约有 32 个通道,这种方法可能会减慢网络中的前向操作。
在Pytorch 1.0.0中,我发现一个tensor变量占用的内存很小。我不知道它如何存储这么多数据。这是代码。
a = np.random.randn(1, 1, 128, 256)
b = torch.tensor(a, device=torch.device('cpu'))
a_size = sys.getsizeof(a)
b_size = sys.getsizeof(b)
Run Code Online (Sandbox Code Playgroud)
a_size是262288。b_size是72。
我想传递一个参数来控制产生的数据的大小。例如,
class Something:
def __init__(self):
self.all_data = list(range(23))
def __iter__(self, size):
random.shuffle(self.all_data)
batch = list()
for i in self.all_data:
batch.append(i)
if len(batch) >= size:
yield batch
batch = list()
a = Something()
for i in a: # TypeError: __iter__() missing 1 required positional argument: 'size'
print(i)
for i in a(5): # TypeError: 'Something' object is not callable
print(i)
Run Code Online (Sandbox Code Playgroud)