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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











시계열 데이터에서는 관측값 간에 종속성이 있으므로 서로 독립적이지 않습니다. 그러나 기존 신경망은 각 관측값을 독립적인 것으로 취급하므로 시계열 데이터를 모델링하는 모델의 기능이 제한됩니다. 이 문제를 해결하기 위해 네트워크의 데이터 포인트 간의 종속성을 설정하여 시계열 데이터의 동적 특성을 캡처하는 메모리 개념을 도입한 RNN(Recurrent Neural Network)이 도입되었습니다. RNN은 반복 연결을 통해 이전 정보를 현재 관찰에 전달하여 미래 값을 더 잘 예측할 수 있습니다. 이는 RNN을 시계열 데이터와 관련된 작업을 위한 강력한 도구로 만듭니다. 그러나 RNN은 어떻게 이런 종류의 메모리를 달성합니까? RNN은 신경망의 피드백 루프를 통해 메모리를 구현합니다. 이것이 RNN과 기존 신경망의 차이점입니다.

양방향 LSTM 모델은 텍스트 분류에 사용되는 신경망입니다. 다음은 텍스트 분류 작업에 양방향 LSTM을 사용하는 방법을 보여주는 간단한 예입니다. 먼저 필요한 라이브러리와 모듈을 가져와야 합니다. importosimportnumpyasnpfromkeras.preprocessing.textimportTokenizerfromkeras.preprocessing.sequenceimportpad_sequencesfromkeras.modelsimportSequentialfromkeras.layersimportDense,Em

FLOPS는 컴퓨터 성능 평가 표준 중 하나로 초당 부동 소수점 연산 횟수를 측정하는 데 사용됩니다. 신경망에서 FLOPS는 모델의 계산 복잡성과 컴퓨팅 리소스 활용도를 평가하는 데 자주 사용됩니다. 컴퓨터의 컴퓨팅 성능과 효율성을 측정하는 데 사용되는 중요한 지표입니다. 신경망은 데이터 분류, 회귀, 클러스터링과 같은 작업을 수행하는 데 사용되는 여러 계층의 뉴런으로 구성된 복잡한 모델입니다. 신경망의 훈련 및 추론에는 수많은 행렬 곱셈, 컨볼루션 및 기타 계산 작업이 필요하므로 계산 복잡성이 매우 높습니다. FLOPS(FloatingPointOperationsperSecond)는 신경망의 계산 복잡성을 측정하여 모델의 계산 리소스 사용 효율성을 평가하는 데 사용할 수 있습니다. 실패

SqueezeNet은 높은 정확도와 낮은 복잡성 사이의 적절한 균형을 유지하는 작고 정밀한 알고리즘으로, 리소스가 제한된 모바일 및 임베디드 시스템에 이상적입니다. 2016년 DeepScale, University of California, Berkeley 및 Stanford University의 연구원들은 작고 효율적인 CNN(컨볼루션 신경망)인 SqueezeNet을 제안했습니다. 최근 몇 년 동안 연구원들은 SqueezeNetv1.1 및 SqueezeNetv2.0을 포함하여 SqueezeNet에 대한 몇 가지 개선 사항을 적용했습니다. 두 버전 모두의 개선으로 정확도가 향상될 뿐만 아니라 계산 비용도 절감됩니다. ImageNet 데이터 세트에서 SqueezeNetv1.1의 정확도

퍼지 신경망은 퍼지 논리와 신경망을 결합하여 기존 신경망으로 처리하기 어려운 퍼지 또는 불확실한 문제를 해결하는 하이브리드 모델입니다. 그 디자인은 인간 인지의 모호함과 불확실성에서 영감을 얻어 제어 시스템, 패턴 인식, 데이터 마이닝 및 기타 분야에서 널리 사용됩니다. 퍼지 신경망의 기본 아키텍처는 퍼지 하위 시스템과 신경 하위 시스템으로 구성됩니다. 퍼지 하위 시스템은 퍼지 논리를 사용하여 입력 데이터를 처리하고 이를 퍼지 세트로 변환하여 입력 데이터의 퍼지 및 불확실성을 표현합니다. 신경 하위 시스템은 신경망을 사용하여 분류, 회귀 또는 클러스터링과 같은 작업을 위한 퍼지 세트를 처리합니다. 퍼지 하위 시스템과 신경 하위 시스템 간의 상호 작용으로 인해 퍼지 신경망은 더욱 강력한 처리 능력을 갖게 되며 다음과 같은 작업을 수행할 수 있습니다.

컨벌루션 신경망은 이미지 노이즈 제거 작업에서 좋은 성능을 발휘합니다. 학습된 필터를 활용하여 노이즈를 필터링하고 원본 이미지를 복원합니다. 본 논문에서는 컨볼루셔널 신경망을 기반으로 한 이미지 노이즈 제거 방법을 자세히 소개합니다. 1. 합성곱 신경망 개요 합성곱 신경망은 다중 합성곱 레이어, 풀링 레이어 및 완전 연결 레이어의 조합을 사용하여 이미지 특징을 학습하고 분류하는 딥러닝 알고리즘입니다. 컨볼루션 레이어에서는 컨볼루션 연산을 통해 이미지의 국소적 특징을 추출하여 이미지의 공간적 상관관계를 포착합니다. 풀링 레이어는 특징 차원을 줄여 계산량을 줄이고 주요 특징을 유지합니다. 완전 연결 계층은 학습된 특징과 레이블을 매핑하여 이미지 분류 또는 기타 작업을 구현하는 역할을 합니다. 이 네트워크 구조의 설계는 컨볼루션 신경망을 이미지 처리 및 인식에 유용하게 만듭니다.

Dilated Convolution과 Dilated Convolution은 Convolutional Neural Network에서 일반적으로 사용되는 작업입니다. 이 기사에서는 차이점과 관계를 자세히 소개합니다. 1. 확장 컨볼루션 확장 컨볼루션 또는 확장 컨볼루션이라고도 알려진 확장 컨볼루션은 컨볼루션 신경망의 작업입니다. 전통적인 컨볼루션 연산을 기반으로 한 확장으로 컨볼루션 커널에 홀을 삽입하여 컨볼루션 커널의 수용 필드를 늘립니다. 이러한 방식으로 네트워크는 더 넓은 범위의 기능을 더 잘 포착할 수 있습니다. Dilated Convolution은 이미지 처리 분야에서 널리 사용되며 매개변수 수와 계산량을 늘리지 않고도 네트워크 성능을 향상시킬 수 있습니다. 확장된 컨볼루션은 컨볼루션 커널의 수용 필드를 확장함으로써 이미지의 전역 정보를 더 잘 처리할 수 있으므로 특징 추출 효과가 향상됩니다. 확장 컨볼루션의 주요 아이디어는 다음과 같은 몇 가지를 도입하는 것입니다.

인과 컨벌루션 신경망(Causal Convolutional Neural Network)은 시계열 데이터의 인과성 문제를 위해 설계된 특수 컨벌루션 신경망입니다. 기존 합성곱 신경망과 비교하여 인과 합성곱 신경망은 시계열의 인과 관계를 유지하는 데 고유한 장점이 있으며 시계열 데이터의 예측 및 분석에 널리 사용됩니다. 인과 컨볼루션 신경망의 핵심 아이디어는 컨볼루션 연산에 인과성을 도입하는 것입니다. 기존 컨벌루션 신경망은 현재 시점 이전과 이후의 데이터를 동시에 인식할 수 있지만, 시계열 예측에서는 이로 인해 정보 유출 문제가 발생할 수 있습니다. 왜냐하면 현재 시점의 예측 결과는 미래 시점의 데이터에 의해 영향을 받기 때문입니다. 인과 컨벌루션 신경망은 이 문제를 해결합니다. 현재 시점과 이전 데이터만 인식할 수 있지만 미래 데이터는 인식할 수 없습니다.
