python神经网络模型代码教学
时间: 2024-03-10 07:42:49 浏览: 77
当涉及到神经网络模型的代码教学时,Python是一个非常流行和强大的编程语言。下面是一个简单的示例,展示了如何使用Python和PyTorch库来构建一个基本的神经网络模型:
```python
import torch
import torch.nn as nn
# 定义神经网络模型
class NeuralNetwork(nn.Module):
def __init__(self, input_size, hidden_size, num_classes):
super(NeuralNetwork, self).__init__()
self.layer1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.layer2 = nn.Linear(hidden_size, num_classes)
def forward(self, x):
out = self.layer1(x)
out = self.relu(out)
out = self.layer2(out)
return out
# 设置超参数
input_size = 784 # 输入特征的大小(MNIST数据集中的图像大小为28x28)
hidden_size = 500 # 隐藏层的大小
num_classes = 10 # 输出类别的数量(MNIST数据集中有10个数字类别)
# 创建模型实例
model = NeuralNetwork(input_size, hidden_size, num_classes)
# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001)
# 训练模型
num_epochs = 5
batch_size = 100
for epoch in range(num_epochs):
for i in range(0, len(train_dataset), batch_size):
images = train_dataset[i:i+batch_size]
labels = train_labels[i:i+batch_size]
# 前向传播
outputs = model(images)
loss = criterion(outputs, labels)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}')
# 使用模型进行预测
with torch.no_grad():
correct = 0
total = 0
for images, labels in test_dataset:
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
accuracy = correct / total
print(f'Accuracy on test images: {accuracy}')
```
这个示例展示了一个简单的全连接神经网络模型,用于对MNIST手写数字数据集进行分类。代码中包含了模型的定义、损失函数和优化器的设置、训练过程以及使用模型进行预测的过程。
阅读全文