>  기사  >  기술 주변기기  >  PyTorch를 사용하여 간단한 신경망을 만드는 방법

PyTorch를 사용하여 간단한 신경망을 만드는 방법

WBOY
WBOY앞으로
2024-01-25 09:27:06665검색

PyTorch를 사용하여 간단한 신경망을 만드는 방법

PyTorch는 다양한 신경망 구축을 위한 Python 기반 딥 러닝 프레임워크입니다. 이 기사에서는 PyTorch를 사용하여 간단한 신경망을 구축하고 코드 예제를 제공하는 방법을 보여줍니다.

먼저 PyTorch를 설치해야 합니다. 다음 명령줄에서 설치할 수 있습니다:

pip install torch

다음으로 PyTorch를 사용하여 이진 분류 작업을 위한 간단하고 완전히 연결된 신경망을 구축하겠습니다. 이 신경망에는 각각 10개의 뉴런이 있는 2개의 숨겨진 레이어가 있습니다. 시그모이드 활성화 함수와 교차 엔트로피 손실 함수를 사용하겠습니다.

전체 코드는 다음과 같습니다.

import torch
import torch.nn as nn
import torch.optim as optim

# 定义神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(2, 10)  # 第一个隐藏层
        self.fc2 = nn.Linear(10, 10)  # 第二个隐藏层
        self.fc3 = nn.Linear(10, 1)  # 输出层

    def forward(self, x):
        x = torch.sigmoid(self.fc1(x))
        x = torch.sigmoid(self.fc2(x))
        x = torch.sigmoid(self.fc3(x))
        return x

# 创建数据集
X = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=torch.float32)
y = torch.tensor([[0], [1], [1], [0]], dtype=torch.float32)

# 创建神经网络实例
net = Net()

# 定义损失函数和优化器
criterion = nn.BCELoss()
optimizer = optim.SGD(net.parameters(), lr=0.1)

# 训练神经网络
for epoch in range(10000):
    optimizer.zero_grad()
    output = net(X)
    loss = criterion(output, y)
    loss.backward()
    optimizer.step()

    # 打印训练损失
    if epoch % 1000 == 0:
    print('Epoch {}: loss = {}'.format(epoch, loss.item()))

# 使用训练好的神经网络进行预测
with torch.no_grad():
    output = net(X)
    predicted = (output > 0.5).float()
    print('Predicted: {}\n'.format(predicted))

먼저 nn.Module에서 상속되는 Net이라는 클래스를 정의합니다. 이 클래스에는 신경망의 모든 계층이 포함되어 있습니다. 이 예에서는 세 개의 완전히 연결된 레이어를 정의합니다. 그 중 처음 두 개는 숨겨진 레이어이고 마지막 레이어는 출력 레이어입니다.

Net 클래스에서는 신경망의 순방향 전파 과정을 설명하기 위한 순방향 메서드를 정의하는 것 외에도 시그모이드 활성화 함수를 사용하여 각 숨겨진 계층의 출력을 다음 계층으로 전달합니다.

다음으로 우리는 각 샘플에 2개의 특징이 있는 4개의 샘플이 포함된 데이터 세트를 만들었습니다. 또한 net이라는 신경망 인스턴스를 정의하고 BCELoss를 손실 함수로, SGD를 최적화 프로그램으로 선택했습니다.

그런 다음 신경망 훈련을 시작합니다. 각 반복에서 먼저 최적화 프로그램의 기울기를 0으로 만든 다음 데이터 세트 X를 신경망에 전달하여 출력을 얻습니다. 손실을 계산하고 역전파를 수행한 후 마지막으로 옵티마이저를 사용하여 네트워크 매개변수를 업데이트합니다. 또한 1000번의 반복마다 훈련 손실을 인쇄했습니다.

훈련이 완료된 후 no_grad 컨텍스트 관리자를 사용하여 데이터세트에 대한 예측을 수행합니다. 우리는 네 가지 예측을 출력하고 인쇄할 것입니다.

이것은 PyTorch를 사용하여 기본 신경망을 구축하는 방법을 보여주는 간단한 예입니다. PyTorch는 신경망을 보다 쉽게 ​​구축하고 훈련하는 데 도움이 되는 다양한 도구와 기능을 제공합니다.

위 내용은 PyTorch를 사용하여 간단한 신경망을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 163.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제