Python 如何使用PyTorch模型进行预测?
我创建了一个pyTorch模型来对图像进行分类。 我通过state_dict和整个模型保存了一次,如下所示:Python 如何使用PyTorch模型进行预测?,python,pytorch,conv-neural-network,torch,Python,Pytorch,Conv Neural Network,Torch,我创建了一个pyTorch模型来对图像进行分类。 我通过state_dict和整个模型保存了一次,如下所示: torch.save(model.state_dict(), "model1_statedict") torch.save(model, "model1_complete") 我如何使用这些模型? 我想用一些图片检查一下,看它们是否好 我正在为模型加载以下内容: model = torch.load(path_model) model.eval(
torch.save(model.state_dict(), "model1_statedict")
torch.save(model, "model1_complete")
我如何使用这些模型?
我想用一些图片检查一下,看它们是否好
我正在为模型加载以下内容:
model = torch.load(path_model)
model.eval()
这工作正常,但我不知道如何使用它来预测新图片。pytorch模型是一个函数。您为它提供了适当定义的输入,它将返回一个输出。如果您只想目视检查给定特定输入图像的输出,只需将其称为:
model.eval()
输出=模型(示例\图像)
网络是VGG-19,参考我的源代码
像这样的架构:
class VGG(object):
def __init__(self):
...
def train(self, train_images, valid_images):
train_dataset = torch.utils.data.Dataset(train_images)
valid_dataset = torch.utils.data.Dataset(valid_images)
trainloader = torch.utils.data.DataLoader(train_dataset)
validloader = torch.utils.data.DataLoader(valid_dataset)
self.optimizer = Adam(...)
self.criterion = CrossEntropyLoss(...)
for epoch in range(0, epochs):
...
self.evaluate(validloader, model=self, criterion=self.criterion)
...
def evaluate(self, dataloader, model, criterion):
model.eval()
for i, sample in enumerate(dataloader):
...
def predict(self, test_images):
...
if __name__ == "__main__":
network = VGG()
trainset, validset = get_dataset() # abstract function for showing
testset = get_test_dataset()
network.train(trainset, validset)
result = network.predict(testset)
我编辑了你的问题,因为这里不允许询问资源,例如教程。好的,对不起,我不知道,谢谢编辑
class VGG(object):
def __init__(self):
...
def train(self, train_images, valid_images):
train_dataset = torch.utils.data.Dataset(train_images)
valid_dataset = torch.utils.data.Dataset(valid_images)
trainloader = torch.utils.data.DataLoader(train_dataset)
validloader = torch.utils.data.DataLoader(valid_dataset)
self.optimizer = Adam(...)
self.criterion = CrossEntropyLoss(...)
for epoch in range(0, epochs):
...
self.evaluate(validloader, model=self, criterion=self.criterion)
...
def evaluate(self, dataloader, model, criterion):
model.eval()
for i, sample in enumerate(dataloader):
...
def predict(self, test_images):
...
if __name__ == "__main__":
network = VGG()
trainset, validset = get_dataset() # abstract function for showing
testset = get_test_dataset()
network.train(trainset, validset)
result = network.predict(testset)