gpt4 book ai didi

python - 如何用 Skorch 预测单张图像?

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:26 25 4
gpt4 key购买 nike

我刚刚使用 Skorch 创建了一个神经网络来检测图片上的飞机,并使用形状为 (40000, 64, 64, 3) 的训练数据集对其进行训练。 .

然后我用 (15000, 64, 64, 3) 的测试数据集对其进行了测试.

module = nn.Sequential(
nn.Conv2d(3, 64, 3),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Conv2d(64, 64, 3),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Conv2d(64, 64, 3),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Flatten(),
nn.Linear(6 * 6 * 64, 256),
nn.Linear(256, 256),
nn.ReLU(),
nn.Linear(256, 2),
nn.Softmax(),
)

early_stopping = EarlyStopping(monitor='valid_loss', lower_is_better=True)
net = NeuralNetClassifier(
module,
max_epochs=20,
lr=1e-4,
callbacks=[early_stopping],
# Shuffle training data on each epoch
iterator_train__shuffle=True,
device="cuda" if torch.cuda.is_available() else "cpu",
optimizer=optim.Adam
)
net.fit(
train_images_balanced.transpose((0, 3, 1, 2)).astype(np.float32),
train_labels_balanced
)

现在我需要在512*512的图片上测试它,所以我有一个新的数据集(30, 512, 512, 3) .
所以我采用了滑动窗口代码,它允许我将图片分成 64*64 部分。

def sliding_window(image, stepSize, windowSize):
# slide a window across the image
for y in range(0, image.shape[0], stepSize):
for x in range(0, image.shape[1], stepSize):
# yield the current window
yield (x, y, image[y:y + windowSize[1], x:x + windowSize[0]])

现在我希望能够预测每个 64*64 图像是否包含飞机,但我不知道该怎么做,如 net.predict()采用数据集作为参数(arg:dim 4)

最佳答案

net.predict() takes a dataset as an argument (arg : dim 4)

net.predict接受多种数据格式,其中包括数据集。然而,对于你的情况来说,如果它接受 torch 张量或 numpy 数组,那将是最好的 - 事实确实如此!只需将 64x64 block 传递给 net.predict,如下所示:

# (n, 512, 512, 3)
X = my_data
# (n, 4096, 64, 64, 3)
X = sliding_window(X, 64, 64)
# (n * 4096, 64, 64, 3)
X = X.reshape(-1, 64, 64, 3)
y = net.predict(X)

关于python - 如何用 Skorch 预测单张图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com