pytorch 神经网络拟合sinx
时间: 2023-04-10 17:04:41 浏览: 251
可以使用pytorch构建一个神经网络来拟合sinx函数。以下是一个简单的代码示例:
```python
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# 定义神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(1, 10)
self.fc2 = nn.Linear(10, 1)
def forward(self, x):
x = torch.sin(self.fc1(x))
x = self.fc2(x)
return x
# 生成训练数据
x_train = np.linspace(-np.pi, np.pi, 200)
y_train = np.sin(x_train)
# 转换为张量
x_train = torch.Tensor(x_train).unsqueeze(1)
y_train = torch.Tensor(y_train).unsqueeze(1)
# 定义模型、损失函数和优化器
net = Net()
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
# 训练模型
for epoch in range(1000):
optimizer.zero_grad()
output = net(x_train)
loss = criterion(output, y_train)
loss.backward()
optimizer.step()
# 测试模型
x_test = torch.Tensor(np.linspace(-np.pi, np.pi, 100)).unsqueeze(1)
y_test = net(x_test).detach().numpy()
# 绘制结果
plt.plot(x_train.numpy(), y_train.numpy(), 'o')
plt.plot(x_test.numpy(), y_test, '-')
plt.show()
```
这个模型使用一个具有10个隐藏单元的全连接层来拟合sinx函数。在训练过程中,使用均方误差损失函数和随机梯度下降优化器来优化模型参数。最终,我们可以使用训练好的模型来预测新的输入,并将结果可视化。
阅读全文