Pytorch 핵심 사항을 개선하고 옵티마이저를 개선해보세요!
안녕하세요 샤오좡이에요!
오늘은 Pytorch의 옵티마이저에 대해 이야기하겠습니다.
옵티마이저의 선택은 딥러닝 모델의 훈련 효과와 속도에 직접적인 영향을 미칩니다. 다양한 최적화 프로그램은 다양한 문제에 적합하며 성능 차이로 인해 모델이 더 빠르고 안정적으로 수렴되거나 특정 작업에서 더 나은 성능을 발휘할 수 있습니다. 따라서 옵티마이저를 선택할 때에는 특정 문제의 특성을 고려하여 절충과 결정을 내려야 합니다.
따라서 딥 러닝 모델을 튜닝하려면 올바른 최적화 프로그램을 선택하는 것이 중요합니다. 옵티마이저의 선택은 모델 성능뿐만 아니라 훈련 프로세스의 효율성에도 큰 영향을 미칩니다.
PyTorch는 신경망을 훈련하고 모델 가중치를 업데이트하는 데 사용할 수 있는 다양한 최적화 도구를 제공합니다. 이러한 최적화 프로그램에는 공통 SGD, Adam, RMSprop 등이 포함됩니다. 각 최적화 프로그램에는 고유한 특성과 적용 가능한 시나리오가 있습니다. 적절한 최적화 프로그램을 선택하면 모델 수렴을 가속화하고 훈련 결과를 향상시킬 수 있습니다. 옵티마이저를 사용할 때는 학습률, 가중치 감소 등의 하이퍼파라미터를 설정하고 손실 함수 및 모델 매개변수를 정의해야 합니다.
공통 옵티마이저
먼저 PyTorch에서 일반적으로 사용되는 옵티마이저를 나열하고 이에 대해 간략하게 소개하겠습니다.
SGD(확률적 경사하강법)가 어떻게 작동하는지 이해해 보겠습니다. SGD는 기계 학습 모델의 매개 변수를 해결하는 데 일반적으로 사용되는 최적화 알고리즘입니다. 작은 배치의 샘플을 무작위로 선택하여 기울기를 추정하고 기울기의 음수 방향을 사용하여 매개변수를 업데이트합니다. 이를 통해 모델의 성능은 반복 프로세스 중에 점진적으로 최적화될 수 있습니다. SGD의 장점은 계산 효율성이 높다는 것입니다. 특히
에 적합합니다. 확률적 경사하강법(Stochastic Gradient Descent)은 손실 함수를 최소화하기 위해 일반적으로 사용되는 최적화 알고리즘입니다. 이는 손실 함수에 대한 가중치의 기울기를 계산하고 기울기의 음수 방향으로 가중치를 업데이트하는 방식으로 작동합니다. 이 알고리즘은 머신러닝과 딥러닝에 널리 사용됩니다.
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
(2) Adam
Adam은 AdaGrad와 RMSProp의 아이디어를 결합한 적응형 학습률 최적화 알고리즘입니다. 전통적인 경사하강법 알고리즘과 비교하여 Adam은 다양한 매개변수의 특성에 더 잘 적응하기 위해 각 매개변수에 대해 서로 다른 학습률을 계산할 수 있습니다. Adam은 학습 속도를 적응적으로 조정하여 모델의 수렴 속도와 성능을 향상시킬 수 있습니다.
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
(3) Adagrad
Adagrad는 매개변수의 과거 기울기를 기반으로 학습률을 조정하는 적응형 학습률 최적화 알고리즘입니다. 그러나 학습률이 점차 감소함에 따라 훈련이 조기에 중단될 수 있습니다.
optimizer = torch.optim.Adagrad(model.parameters(), lr=learning_rate)
(4) RMSProp
RMSProp은 기울기의 슬라이딩 평균을 고려하여 학습률을 조정하는 적응형 학습률 알고리즘이기도 합니다.
optimizer = torch.optim.RMSprop(model.parameters(), lr=learning_rate)
(5) Adadelta
Adadelta는 적응형 학습률 최적화 알고리즘이자 RMSProp의 개선된 버전으로, 기울기의 이동 평균과 매개변수의 이동 평균을 고려하여 학습률을 동적으로 조정합니다.
optimizer = torch.optim.Adadelta(model.parameters(), lr=learning_rate)
전체 사례
여기서 PyTorch를 사용하여 필기 숫자 인식을 위한 간단한 CNN(컨볼루션 신경망)을 훈련하는 방법에 대해 이야기해 보겠습니다.
이 사례에서는 MNIST 데이터 세트를 사용하고 Matplotlib 라이브러리를 사용하여 손실 곡선과 정확도 곡선을 그립니다.
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport matplotlib.pyplot as plt# 设置随机种子torch.manual_seed(42)# 定义数据转换transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])# 下载和加载MNIST数据集train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)test_loader = DataLoader(test_dataset, batch_size=1000, shuffle=False)# 定义简单的卷积神经网络模型class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)self.relu = nn.ReLU()self.pool = nn.MaxPool2d(kernel_size=2, stride=2)self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1)self.fc1 = nn.Linear(64 * 7 * 7, 128)self.fc2 = nn.Linear(128, 10)def forward(self, x):x = self.conv1(x)x = self.relu(x)x = self.pool(x)x = self.conv2(x)x = self.relu(x)x = self.pool(x)x = x.view(-1, 64 * 7 * 7)x = self.fc1(x)x = self.relu(x)x = self.fc2(x)return x# 创建模型、损失函数和优化器model = CNN()criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练模型num_epochs = 5train_losses = []train_accuracies = []for epoch in range(num_epochs):model.train()total_loss = 0.0correct = 0total = 0for inputs, labels in train_loader:optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()total_loss += loss.item()_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / totaltrain_losses.append(total_loss / len(train_loader))train_accuracies.append(accuracy)print(f"Epoch {epoch+1}/{num_epochs}, Loss: {train_losses[-1]:.4f}, Accuracy: {accuracy:.4f}")# 绘制损失曲线和准确率曲线plt.figure(figsize=(10, 5))plt.subplot(1, 2, 1)plt.plot(train_losses, label='Training Loss')plt.title('Training Loss')plt.xlabel('Epoch')plt.ylabel('Loss')plt.legend()plt.subplot(1, 2, 2)plt.plot(train_accuracies, label='Training Accuracy')plt.title('Training Accuracy')plt.xlabel('Epoch')plt.ylabel('Accuracy')plt.legend()plt.tight_layout()plt.show()# 在测试集上评估模型model.eval()correct = 0total = 0with torch.no_grad():for inputs, labels in test_loader:outputs = model(inputs)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / totalprint(f"Accuracy on test set: {accuracy * 100:.2f}%")
위 코드에서는 교차 엔트로피 손실과 Adam 옵티마이저를 사용하여 훈련된 간단한 CNN(컨볼루션 신경망)을 정의합니다.
훈련 과정에서 각 에포크의 손실과 정확도를 기록하고 Matplotlib 라이브러리를 사용하여 손실 곡선과 정확도 곡선을 그렸습니다.
샤오좡입니다, 다음에 만나요!
위 내용은 Pytorch 핵심 사항을 개선하고 옵티마이저를 개선해보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제









이 사이트는 10월 22일에 올해 3분기에 iFlytek이 전년 대비 81.86% 감소한 2,579만 위안의 순이익을 달성했다고 보도했습니다. 전년 대비 76.36% 감소했습니다. iFlytek 부사장 Jiang Tao는 3분기 실적 보고에서 iFlytek이 2023년 초 Huawei Shengteng과 특별 연구 프로젝트를 시작했으며 Huawei와 고성능 연산자 라이브러리를 공동 개발하여 중국 일반 인공 지능의 새로운 기반을 마련했다고 밝혔습니다. 이 아키텍처는 독립적인 혁신적인 소프트웨어 및 하드웨어를 기반으로 합니다. 그는 Huawei Ascend 910B의 현재 기능이 기본적으로 Nvidia의 A100과 비슷하다고 지적했습니다. 다가오는 iFlytek 1024 글로벌 개발자 페스티벌에서 iFlytek과 Huawei는 인공 지능 컴퓨팅 기반에 대한 추가 공동 발표를 할 예정입니다. 그는 또한 다음과 같이 언급했습니다.

PyCharm은 강력한 통합 개발 환경(IDE)이고, PyTorch는 딥 러닝 분야에서 인기 있는 오픈 소스 프레임워크입니다. 머신러닝과 딥러닝 분야에서 PyCharm과 PyTorch를 개발에 활용하면 개발 효율성과 코드 품질을 크게 향상시킬 수 있습니다. 이 기사에서는 PyCharm에서 PyTorch를 설치 및 구성하는 방법을 자세히 소개하고 독자가 이 두 가지의 강력한 기능을 더 잘 활용할 수 있도록 특정 코드 예제를 첨부합니다. 1단계: PyCharm 및 Python 설치

자연어 생성 작업에서 샘플링 방법은 생성 모델에서 텍스트 출력을 얻는 기술입니다. 이 기사에서는 5가지 일반적인 방법을 논의하고 PyTorch를 사용하여 구현합니다. 1. GreedyDecoding 그리디 디코딩에서는 생성 모델이 시간 단위로 입력 시퀀스를 기반으로 출력 시퀀스의 단어를 예측합니다. 각 시간 단계에서 모델은 각 단어의 조건부 확률 분포를 계산한 다음, 현재 시간 단계의 출력으로 조건부 확률이 가장 높은 단어를 선택합니다. 이 단어는 다음 시간 단계의 입력이 되며 지정된 길이의 시퀀스 또는 특수 종료 표시와 같은 일부 종료 조건이 충족될 때까지 생성 프로세스가 계속됩니다. GreedyDecoding의 특징은 매번 현재 조건부 확률이 가장 좋다는 것입니다.

DDPM(Denoising Diffusion Probabilistic Model)의 작동 원리를 자세히 이해하기 전에 먼저 DDPM의 기초 연구 중 하나인 생성 인공 지능(Generative Artificial Intelligence)의 개발에 대해 먼저 이해해 보겠습니다. VAEVAE는 인코더, 확률적 잠재 공간 및 디코더를 사용합니다. 훈련 중에 인코더는 각 이미지의 평균과 분산을 예측하고 가우스 분포에서 이러한 값을 샘플링합니다. 샘플링 결과는 디코더로 전달되어 입력 이미지를 출력 이미지와 유사한 형태로 변환합니다. KL 발산은 손실을 계산하는 데 사용됩니다. VAE의 중요한 장점은 다양한 이미지를 생성할 수 있다는 것입니다. 샘플링 단계에서는 가우스 분포에서 직접 샘플링하고 디코더를 통해 새로운 이미지를 생성할 수 있습니다. GAN은 단 1년 만에 VAE(변형 자동 인코더) 분야에서 큰 발전을 이루었습니다.

강력한 딥 러닝 프레임워크인 PyTorch는 다양한 머신 러닝 프로젝트에서 널리 사용됩니다. 강력한 Python 통합 개발 환경인 PyCharm은 딥 러닝 작업을 구현할 때에도 훌륭한 지원을 제공할 수 있습니다. 이 기사에서는 PyCharm에 PyTorch를 설치하는 방법을 자세히 소개하고 독자가 딥 러닝 작업에 PyTorch를 사용하여 빠르게 시작할 수 있도록 구체적인 코드 예제를 제공합니다. 1단계: PyCharm 설치 먼저 다음 사항을 확인해야 합니다.

딥러닝은 인공지능 분야에서 중요한 분야로 최근 몇 년간 점점 더 많은 주목을 받고 있습니다. 딥 러닝 연구 및 응용을 수행하려면 이를 달성하는 데 도움이 되는 일부 딥 러닝 프레임워크를 사용해야 하는 경우가 많습니다. 이번 글에서는 딥러닝에 PHP와 PyTorch를 활용하는 방법을 소개하겠습니다. 1. PyTorch란 무엇입니까? PyTorch는 Facebook에서 개발한 오픈 소스 머신 러닝 프레임워크로, 딥 러닝 모델을 빠르게 생성하고 훈련하는 데 도움이 됩니다. 파이톡

안녕하세요 여러분, 저는 Kite입니다. 2년 전에는 오디오 및 비디오 파일을 텍스트 콘텐츠로 변환하는 작업이 어려웠지만 이제는 단 몇 분만에 쉽게 해결할 수 있습니다. 훈련 데이터를 얻기 위해 일부 회사에서는 Douyin, Kuaishou 등 짧은 비디오 플랫폼에서 비디오를 완전히 크롤링한 다음 비디오에서 오디오를 추출하고 이를 텍스트 형식으로 변환하여 빅데이터 모델의 훈련 코퍼스로 사용했다고 합니다. . 비디오 또는 오디오 파일을 텍스트로 변환해야 하는 경우 현재 제공되는 이 오픈 소스 솔루션을 사용해 볼 수 있습니다. 예를 들어, 영화나 TV 프로그램의 대화가 나오는 특정 시점을 검색할 수 있습니다. 더 이상 고민하지 않고 요점을 살펴보겠습니다. Whisper는 OpenAI의 오픈 소스 Whisper입니다. 물론 Python으로 작성되었습니다. 몇 가지 간단한 설치 패키지만 있으면 됩니다.

설치 단계: 1. PyCharm을 열고 새 Python 프로젝트를 생성합니다. 2. PyCharm 하단 상태 표시줄에서 "터미널" 아이콘을 클릭하여 터미널 창을 엽니다. 3. 터미널 창에서 pip 명령을 사용하여 PyTorch를 설치합니다. , 시스템 및 요구 사항에 따라 다양한 설치 방법을 선택할 수 있습니다. 4. 설치가 완료된 후 PyCharm에 코드를 작성하고 PyTorch 라이브러리를 가져와 사용할 수 있습니다.
