我想使用带有 Pytorch 的预训练模型 ResNet50 对图像进行分类。我面临着将数据从数据集传输到模型的问题。
据我所知,需要在张量中传输图像进行训练,维度如下:(N, 4, 512,512),其中 N 是图像数,4 是通道数,512是图片的宽度和高度。而且您还需要将“目标”作为数组传递。现在我有一个带有“图像”、“标签”列的 Pandas DataFrame。在“图像”列中,我有一个尺寸列表(512、512、4)。 我尝试将数据写入数组,但时间太长,占用大量内存。有没有其他方法可以做到这一点? 所以,我的问题是“如何将数据传输到模型中?”
这是我数据库的一部分:
数字 | 图片 | 标签 |
---|---|---|
0 | [[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0... |
0 |
1 | [[[4, 3, 0, 18], [82, 0, 0, 27], [11, 4, 0, 20... |
14 |
2 | [[[2, 2, 0, 0], [1, 5, 0, 1], [0, 5, 0, 0], [2... |
14 |
3 | [[[7, 1, 0, 24], [31, 0, 0, 14], [23, 3, 0, 13... |
3 |
... | ... | ... |
我尝试通过以下方式做到这一点:
x_train = []
y_train = []
for data in range(N):
x_train.append(train_df['Image'].iloc[data])
y_train.append(train_df['Label'].iloc[data])
x_train = torch.tensor(x_train)
y_train = torch.tensor(y_train)
y_train = y_train.view(-1)
x_train = x_train.permute(0, 3, 1, 2)