工具/软件:
import torch
import torch.nn as nn
import torch.optim as optim
import onnx
import onnxruntime as ort
torch.manual_seed(42)
X = torch.linspace(0, 10, 100).reshape(-1, 1)
y = 2 * X + torch.randn(X.size()) * 0.5
class LinearRegression(nn.Module):
def __init__(self):
super(LinearRegression, self).__init__()
self.linear = nn.Linear(1, 1)
def forward(self, x):
return self.linear(x)
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
epochs = 1000
for epoch in range(epochs):
outputs = model(X)
loss = criterion(outputs, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (epoch+1) % 100 == 0:
print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}')
model.eval()
dummy_input = torch.tensor([[3.0]])
torch.onnx.export(
model,
dummy_input,
"linear_model.onnx",
export_params=True,
opset_version=11,
input_names=['input'],
output_names=['output'],
dynamic_axes={
'input': {0: 'batch_size'},
'output': {0: 'batch_size'}
}
)
我使用 PyTorch 训练了一个线性回归模型(y=2x)、并导出了 onnx 模型。 使用 TVM 工具时、该参数应用于28P55、但在该模型中输入2个时、CCS 的输出与 PyTorch 的结果不一致。 我想问原因是什么?

