Pytorch:如何将图像块转换为特征向量矩阵?
Pytorch: How to transform image patches into matrix of feature vectors?
为了在神经网络中用作输入,我想从图像块中获取特征向量矩阵。我正在使用 Fashion-MNIST 数据集(28x28 图像)并使用 Tensor.unfold 通过以下方式获取补丁(16 7x7 补丁):
#example on one image
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True, transform=transforms.Compose([transforms.ToTensor()]), download=True)
x = mnist_train[0][0][-1, :, :]
x = x.unfold(0, 7, 7).unfold(1, 7, 7)
x.shape
>>> torch.Size([4, 4, 7, 7])
这里我最终得到一个 7x7 补丁的 4x4 张量,但是我想对每个补丁进行矢量化以获得矩阵 X维度(16:补丁数 x d:特征向量的维度)。我不确定是否可以在这里使用 flatten() 以及我将如何使用它。
为了结束这个,把评论的内容移到这里:
#example on one image
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True,
transform=transforms.Compose([transforms.ToTensor()]), download=True)
x = mnist_train[0][0][-1, :, :]
x = x.unfold(0, 7, 7).unfold(1, 7, 7)
x.shape
输出:
>>> torch.Size([4, 4, 7, 7])
然后:
x.reshape(-1,7,7)
x.shape
输出:
torch.Size([16,7,7])
为了在神经网络中用作输入,我想从图像块中获取特征向量矩阵。我正在使用 Fashion-MNIST 数据集(28x28 图像)并使用 Tensor.unfold 通过以下方式获取补丁(16 7x7 补丁):
#example on one image
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True, transform=transforms.Compose([transforms.ToTensor()]), download=True)
x = mnist_train[0][0][-1, :, :]
x = x.unfold(0, 7, 7).unfold(1, 7, 7)
x.shape
>>> torch.Size([4, 4, 7, 7])
这里我最终得到一个 7x7 补丁的 4x4 张量,但是我想对每个补丁进行矢量化以获得矩阵 X维度(16:补丁数 x d:特征向量的维度)。我不确定是否可以在这里使用 flatten() 以及我将如何使用它。
为了结束这个,把评论的内容移到这里:
#example on one image
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True,
transform=transforms.Compose([transforms.ToTensor()]), download=True)
x = mnist_train[0][0][-1, :, :]
x = x.unfold(0, 7, 7).unfold(1, 7, 7)
x.shape
输出:
>>> torch.Size([4, 4, 7, 7])
然后:
x.reshape(-1,7,7)
x.shape
输出:
torch.Size([16,7,7])