np.random.choice 可以用于随机抽取一定batch_size的下标:
mask = np.random.choice(X_train,batch_size,replace=True)
参考连接
数据集转换
torchvision.transforms.Compose()
可以囊括多个变换:
transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
张量操作
tensor.ndimension()
返回维度的数量
a.ndimension()
Out[11]: 3
tensor.data
返回tensor的拷贝
>>> a.data
tensor([[ 0.6519, -0.6082],
[-0.5330, 0.1412],
[ 1.2613, 0.4818]])
tensor.grad
返回tensor的梯度
>>> print(a.grad)
None
torch.cat
可以拼接tensor。
a
Out[64]:
tensor([[-0.1757, -0.6009, 0.2321],
[-0.8813, 0.1093, 1.0315]])
torch.cat((a,a),0)
Out[65]:
tensor([[-0.1757, -0.6009, 0.2321],
[-0.8813, 0.1093, 1.0315],
[-0.1757, -0.6009, 0.2321],
[-0.8813, 0.1093, 1.0315]])
torch.max
返回(max_values, max_indices)
的元组:
>>> a = torch.randn(4, 4)
>>> a
tensor([[-1.2360, -0.2942, -0.1222, 0.8475],
[ 1.1949, -1.1127, -2.2379, -0.6702],
[ 1.5717, -0.9207, 0.1297, -1.8768],
[-0.6172, 1.0036, -0.6060, -0.2432]])
>>> torch.max(a, 1)
torch.return_types.max(values=tensor([0.8475, 1.1949, 1.5717, 1.0036]), indices=tensor([3, 0, 0, 1]))
torch.argmax(input,dim=1)
返回所选维度最大值的下标:
torch.flatten(input,start_dim=0,end_dim=-1)
可以用来展平tensor
start_dim
和 end_dim
表示扩展维度的范围。
In[3]:a = torch.randn(2,3,4)
In[4]:a
Out[4]:
tensor([[[ 1.0730, -0.9822, -0.6728, -0.5907],
[-0.9147, -0.7416, -0.4955, -0.4844],
[-0.2957, -1.1425, 0.0435, -0.6442]],
[[-0.6957, 0.6853, -0.1966, 1.5853],
[ 1.3964, 2.2612, -2.2373, 0.3656],
[ 0.5788, -1.4469, -0.8203, -0.4059]]])
In[5]: a.shape
Out[5]: torch.Size([2, 3, 4])
In[6]: a.size()
Out[6]: torch.Size([2, 3, 4])
In[7]: a.flatten(start_dim=1).shape
Out[7]: torch.Size([2, 12])
In[8]: a.flatten().shape
Out[8]: torch.Size([24])In[3]:a = torch.randn(2,3,4)
In[4]:a
Out[4]:
tensor([[[ 1.0730, -0.9822, -0.6728,