Web 3.0 supports new business and social models. Web 3.0 provides building blocks for new applications and supports new business models, such as NFT monetization; Applications running based on smart contracts eliminate centralized mediation and management costs; Tokens or cryptocurrencies provide power for the new business model and economic system of Web 3.0, which is embedded in the blockchain protocol.
将PyTorch模型转换为ONNX模型,通常是使用torch.onnx.export()函数来转换的,基本的思路是:
加载PyTorch模型,可以选择只加载模型结构;也可以选择加载模型结构和权重。
最后使用torch.onnx.export()函数来转换,生产xxx.onnx模型。
下面有一个简单的例子:
import torch
import torch.onnx
#加载PyTorch模型
model=...
#设置模型输入,包括:通道数,分辨率等
dummy_input=torch.randn(1,3,224,224,device='cpu')
#转换为ONNX模型
torch.onnx.export(model,dummy_input,"model.onnx",export_params=True)
1.1转换为ONNX模型且加载权重
这里举一个resnet18的例子,基本思路是:
首先加载了一个预训练的ResNet18模型;
然后将其设置为评估模式。接下来定义一个与模型输入张量形状相同的输入张量,并使用torch.randn()函数生成了一个随机张量。
最后,使用onnx.export()函数将PyTorch模型转换为ONNX格式,并将其保存到指定的输出文件中。
import torch
import torchvision.models as models
#加载预训练的ResNet18模型
model=models.resnet18(pretrained=True)
#将模型设置为评估模式
model.eval()
#定义输入张量,需要与模型的输入张量形状相同
input_shape=(1,3,224,224)
x=torch.randn(input_shape)
#需要指定输入张量,输出文件路径和运行设备
#默认情况下,输出张量的名称将基于模型中的名称自动分配
device=torch.device("cuda"if torch.cuda.is_available()else"cpu")
#将PyTorch模型转换为ONNX格式
output_file="resnet18.onnx"
torch.onnx.export(model,x.to(device),output_file,export_params=True)