使用PyTorch来拟合函数的方式
在本文中,我们将介绍如何使用PyTorch来拟合函数。我们将提供两个示例,一个是使用线性函数,另一个是使用非线性函数。
示例1:使用线性函数
以下是使用PyTorch拟合线性函数的示例代码:
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# Generate random data
np.random.seed(0)
x = np.linspace(-1, 1, 100)
y = 2 * x + np.random.randn(*x.shape) * 0.3
# Convert data to tensors
inputs = torch.from_numpy(x).float().view(-1, 1)
targets = torch.from_numpy(y).float().view(-1, 1)
# Define neural network model
model = nn.Sequential(
nn.Linear(1, 1)
)
# Define loss function
criterion = nn.MSELoss()
# Define optimizer
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Train the model
num_epochs = 1000
for epoch in range(num_epochs):
# Forward pass
outputs = model(inputs)
loss = criterion(outputs, targets)
# Backward and optimize
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Print progress
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# Plot the results
predicted = model(inputs).detach().numpy()
plt.plot(x, y, 'ro', label='Original data')
plt.plot(x, predicted, label='Fitted line')
plt.legend()
plt.show()
在这个示例中,我们首先生成了一些随机数据。然后,我们将数据转换为PyTorch张量,并定义了一个名为model的神经网络模型。接下来,我们定义了损失函数和优化器,并使用它们训练模型。最后,我们绘制了原始数据和拟合线。
示例2:使用非线性函数
以下是使用PyTorch拟合非线性函数的示例代码:
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# Generate random data
np.random.seed(0)
x = np.linspace(-1, 1, 100)
y = np.sin(5 * np.pi * x) + np.random.randn(*x.shape) * 0.3
# Convert data to tensors
inputs = torch.from_numpy(x).float().view(-1, 1)
targets = torch.from_numpy(y).float().view(-1, 1)
# Define neural network model
model = nn.Sequential(
nn.Linear(1, 10),
nn.ReLU(),
nn.Linear(10, 1)
)
# Define loss function
criterion = nn.MSELoss()
# Define optimizer
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Train the model
num_epochs = 1000
for epoch in range(num_epochs):
# Forward pass
outputs = model(inputs)
loss = criterion(outputs, targets)
# Backward and optimize
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Print progress
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# Plot the results
predicted = model(inputs).detach().numpy()
plt.plot(x, y, 'ro', label='Original data')
plt.plot(x, predicted, label='Fitted line')
plt.legend()
plt.show()
在这个示例中,我们首先生成了一些随机数据。然后,我们将数据转换为PyTorch张量,并定义了一个名为model的神经网络模型。接下来,我们定义了损失函数和优化器,并使用它们训练模型。最后,我们绘制了原始数据和拟合线。
总结
在本文中,我们介绍了如何使用PyTorch来拟合函数,并提供了两个示例说明。这些技术对于在深度学习模型中使用回归非常有用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Pytorch来拟合函数方式 - Python技术站