使用pytorch,输入随机点经过神经网络输出sin或cos图像
时间: 2024-11-09 20:22:58 浏览: 19
在PyTorch中,你可以创建一个简单的神经网络来预测正弦(sin)或余弦(cos)函数值,给定一组随机输入。这通常作为理解神经网络基础应用的一个示例。以下是如何实现这个概念的基本步骤:
1. **导入必要的库**:
```python
import torch
import torch.nn as nn
import numpy as np
```
2. **定义网络结构**:
```python
class SineCosNetwork(nn.Module):
def __init__(self, input_size, hidden_size, num_outputs):
super(SineCosNetwork, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, num_outputs)
def forward(self, x):
x = torch.sin(x) if torch.rand(1).item() < 0.5 else torch.cos(x) # 以50%的概率选择sin或cos
x = torch.relu(self.fc1(x)) # 非线性变换
x = self.fc2(x)
return x
# 创建网络
input_size = 1 # 可能的输入维度(例如,如果是单个角度)
hidden_size = 32
num_outputs = 1 # 输出一个值(sin或cos的函数值)
model = SineCosNetwork(input_size, hidden_size, num_outputs)
```
3. **生成随机输入并计算输出**:
```python
x_random = torch.randn(100, input_size) # 生成100个随机输入点
outputs = model(x_random)
```
4. **训练与优化**:
由于这是一个回归问题而不是监督学习,不需要优化器。但如果想进一步提高性能,可以添加一个均方误差损失函数,并使用SGD或其他优化器进行训练。
阅读全文