백엔드 개발 파이썬 튜토리얼 PyTorch로 신경망을 빠르게 구축하고 저장 및 추출하는 방법에 대한 자세한 설명

PyTorch로 신경망을 빠르게 구축하고 저장 및 추출하는 방법에 대한 자세한 설명

Apr 28, 2018 am 10:56 AM
pytorch 신경망

이 글에서는 신경망을 빠르게 구축하기 위한 PyTorch를 주로 소개하고 저장 및 추출 방법에 대한 자세한 설명을 공유하고 참고하겠습니다. 함께 살펴보겠습니다

때때로 우리는 모델을 훈련시켰고 다음번 훈련에 시간을 들이지 않고 직접 사용할 수 있도록 저장하고 싶을 때가 있습니다. 이 섹션에서는 PyTorch를 사용하여 신경망을 빠르게 구축하는 방법과 저장 방법을 설명하겠습니다.

1. PyTorch로 빠르게 신경망을 구축하는 방법

먼저 실험 코드를 살펴보세요.

import torch 
import torch.nn.functional as F 
 
# 方法1,通过定义一个Net类来建立神经网络 
class Net(torch.nn.Module): 
  def __init__(self, n_feature, n_hidden, n_output): 
    super(Net, self).__init__() 
    self.hidden = torch.nn.Linear(n_feature, n_hidden) 
    self.predict = torch.nn.Linear(n_hidden, n_output) 
 
  def forward(self, x): 
    x = F.relu(self.hidden(x)) 
    x = self.predict(x) 
    return x 
 
net1 = Net(2, 10, 2) 
print('方法1:\n', net1) 
 
# 方法2 通过torch.nn.Sequential快速建立神经网络结构 
net2 = torch.nn.Sequential( 
  torch.nn.Linear(2, 10), 
  torch.nn.ReLU(), 
  torch.nn.Linear(10, 2), 
  ) 
print('方法2:\n', net2) 
# 经验证,两种方法构建的神经网络功能相同,结构细节稍有不同 
 
''''' 
方法1: 
 Net ( 
 (hidden): Linear (2 -> 10) 
 (predict): Linear (10 -> 2) 
) 
方法2: 
 Sequential ( 
 (0): Linear (2 -> 10) 
 (1): ReLU () 
 (2): Linear (10 -> 2) 
) 
'''
로그인 후 복사

이전에 신경망을 구축하는 방법을 다음과 같이 정의했습니다. Net 클래스에서 먼저 super를 전달합니다. 이 함수는 torch.nn.Module 모듈의 구성 방법을 상속한 다음 속성을 추가하여 신경망의 각 계층의 구조 정보를 구축하고 각 계층 간의 연결 정보를 향상시킵니다. 신경망을 순방향 메소드로 정의한 다음 Net 클래스 객체를 정의하여 신경망 구조의 구성을 완료합니다.

빠른 구축 방법이라고도 할 수 있는 신경망을 구축하는 또 다른 방법은 torch.nn.Sequential을 통해 직접 신경망 구축을 완료하는 것입니다.

두 가지 방법으로 구성한 신경망 구조는 완전히 동일하며, 인쇄 기능을 통해 네트워크 정보를 출력할 수 있지만 인쇄 결과는 조금씩 다릅니다.

2. PyTorch 신경망 저장 및 추출

딥러닝을 학습하고 연구할 때 특정 기간의 훈련을 거쳐 더 나은 모델을 얻으면 당연히 이 모델을 사용하기를 바라며 모델 매개변수는 저장됩니다. 나중에 사용하려면 신경망을 저장하고 모델 매개변수를 추출하고 다시 로드해야 합니다.

먼저 네트워크 구조와 모델 매개변수를 저장해야 하는 신경망의 정의 및 훈련 부분 이후에 torch.save()를 통해 네트워크 구조와 모델 매개변수를 저장해야 합니다. 저장 방법에는 두 가지가 있는데, 하나는 전체 신경망의 구조 정보와 모델 매개변수 정보를 저장하는 것이고, 다른 하나는 신경망의 훈련 모델 매개변수만 저장하는 것이고, 저장 객체는 net.state_dict()이며, 저장된 결과는 .pkl 파일 형태로 저장됩니다.

위의 두 가지 저장 방법에 해당하며, 다시 로드하는 방법도 두 가지가 있습니다. 첫 번째 완전한 네트워크 구조 정보에 해당하여, 다시 로드할 때 torch.load('.pkl')을 통해 새로운 신경망 객체를 직접 초기화할 수 있습니다. 모델 매개변수 정보만 저장하는 두 번째 방법에 해당하면 먼저 동일한 신경망 구조를 구축하고 net.load_state_dict(torch.load('.pkl'))를 통해 모델 매개변수 다시 로드를 완료해야 합니다. 네트워크 규모가 상대적으로 큰 경우 첫 번째 방법을 사용하면 시간이 더 오래 걸립니다.

코드 구현:

import torch 
from torch.autograd import Variable 
import matplotlib.pyplot as plt 
 
torch.manual_seed(1) # 设定随机数种子 
 
# 创建数据 
x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) 
y = x.pow(2) + 0.2*torch.rand(x.size()) 
x, y = Variable(x, requires_grad=False), Variable(y, requires_grad=False) 
 
# 将待保存的神经网络定义在一个函数中 
def save(): 
  # 神经网络结构 
  net1 = torch.nn.Sequential( 
    torch.nn.Linear(1, 10), 
    torch.nn.ReLU(), 
    torch.nn.Linear(10, 1), 
    ) 
  optimizer = torch.optim.SGD(net1.parameters(), lr=0.5) 
  loss_function = torch.nn.MSELoss() 
 
  # 训练部分 
  for i in range(300): 
    prediction = net1(x) 
    loss = loss_function(prediction, y) 
    optimizer.zero_grad() 
    loss.backward() 
    optimizer.step() 
 
  # 绘图部分 
  plt.figure(1, figsize=(10, 3)) 
  plt.subplot(131) 
  plt.title('net1') 
  plt.scatter(x.data.numpy(), y.data.numpy()) 
  plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5) 
 
  # 保存神经网络 
  torch.save(net1, '7-net.pkl')           # 保存整个神经网络的结构和模型参数 
  torch.save(net1.state_dict(), '7-net_params.pkl') # 只保存神经网络的模型参数 
 
# 载入整个神经网络的结构及其模型参数 
def reload_net(): 
  net2 = torch.load('7-net.pkl') 
  prediction = net2(x) 
 
  plt.subplot(132) 
  plt.title('net2') 
  plt.scatter(x.data.numpy(), y.data.numpy()) 
  plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5) 
 
# 只载入神经网络的模型参数,神经网络的结构需要与保存的神经网络相同的结构 
def reload_params(): 
  # 首先搭建相同的神经网络结构 
  net3 = torch.nn.Sequential( 
    torch.nn.Linear(1, 10), 
    torch.nn.ReLU(), 
    torch.nn.Linear(10, 1), 
    ) 
 
  # 载入神经网络的模型参数 
  net3.load_state_dict(torch.load('7-net_params.pkl')) 
  prediction = net3(x) 
 
  plt.subplot(133) 
  plt.title('net3') 
  plt.scatter(x.data.numpy(), y.data.numpy()) 
  plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5) 
 
# 运行测试 
save() 
reload_net() 
reload_params()
로그인 후 복사

실험 결과:

관련 권장 사항:

PyTorch에서 CNN을 구현하는 방법

PyT에 대한 자세한 설명 orch 배치 훈련 및 최적화 비교

Pytorch 소개 - mnist 분류 예제

위 내용은 PyTorch로 신경망을 빠르게 구축하고 저장 및 추출하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

iFlytek: Huawei의 Ascend 910B의 기능은 기본적으로 Nvidia의 A100과 비슷하며, 우리 나라의 일반 인공 지능을 위한 새로운 기반을 만들기 위해 협력하고 있습니다. iFlytek: Huawei의 Ascend 910B의 기능은 기본적으로 Nvidia의 A100과 비슷하며, 우리 나라의 일반 인공 지능을 위한 새로운 기반을 만들기 위해 협력하고 있습니다. Oct 22, 2023 pm 06:13 PM

이 사이트는 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과 PyTorch의 완벽한 조합: 자세한 설치 및 구성 단계 PyCharm과 PyTorch의 완벽한 조합: 자세한 설치 및 구성 단계 Feb 21, 2024 pm 12:00 PM

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

YOLO는 불멸이다! YOLOv9 출시: 성능과 속도 SOTA~ YOLO는 불멸이다! YOLOv9 출시: 성능과 속도 SOTA~ Feb 26, 2024 am 11:31 AM

오늘날의 딥러닝 방법은 모델의 예측 결과가 실제 상황에 가장 가깝도록 가장 적합한 목적 함수를 설계하는 데 중점을 두고 있습니다. 동시에 예측을 위한 충분한 정보를 얻을 수 있도록 적합한 아키텍처를 설계해야 합니다. 기존 방법은 입력 데이터가 레이어별 특징 추출 및 공간 변환을 거치면 많은 양의 정보가 손실된다는 사실을 무시합니다. 이 글에서는 딥 네트워크를 통해 데이터를 전송할 때 중요한 문제, 즉 정보 병목 현상과 가역 기능을 살펴보겠습니다. 이를 바탕으로 다중 목표를 달성하기 위해 심층 네트워크에서 요구되는 다양한 변화에 대처하기 위해 PGI(Programmable Gradient Information) 개념을 제안합니다. PGI는 목적 함수를 계산하기 위해 대상 작업에 대한 완전한 입력 정보를 제공할 수 있으므로 네트워크 가중치를 업데이트하기 위한 신뢰할 수 있는 기울기 정보를 얻을 수 있습니다. 또한 새로운 경량 네트워크 프레임워크가 설계되었습니다.

자율 주행을 위한 세 가지 주류 칩 아키텍처 개요를 한 기사로 살펴보세요. 자율 주행을 위한 세 가지 주류 칩 아키텍처 개요를 한 기사로 살펴보세요. Apr 12, 2023 pm 12:07 PM

현재 주류 AI 칩은 크게 GPU, FPGA, ASIC 세 가지 범주로 나뉜다. GPU와 FPGA는 모두 초기 단계에서 상대적으로 성숙한 칩 아키텍처이며 범용 칩입니다. ASIC은 특정 AI 시나리오에 맞게 맞춤화된 칩입니다. 업계에서는 CPU가 AI 컴퓨팅에 적합하지 않지만 AI 애플리케이션에도 필수적이라는 점을 확인했다. GPU와 CPU의 GPU 솔루션 아키텍처 비교 CPU는 von Neumann 아키텍처를 따르며, 그 핵심은 프로그램/데이터 저장 및 직렬 순차 실행입니다. 따라서 CPU 아키텍처는 저장 장치(Cache)와 제어 장치(Control)를 배치하는 데 많은 공간이 필요한 반면, 컴퓨팅 장치(ALU)는 작은 부분만 차지하므로 CPU가 대규모 작업을 수행합니다. 병렬 컴퓨팅.

자연어 생성 작업의 5가지 샘플링 방법 및 Pytorch 코드 구현 소개 자연어 생성 작업의 5가지 샘플링 방법 및 Pytorch 코드 구현 소개 Feb 20, 2024 am 08:50 AM

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

'Bilibili UP의 소유자는 세계 최초의 레드스톤 기반 신경망을 성공적으로 만들었습니다. 이는 소셜 미디어에서 센세이션을 일으켰고 Yann LeCun의 칭찬을 받았습니다.' 'Bilibili UP의 소유자는 세계 최초의 레드스톤 기반 신경망을 성공적으로 만들었습니다. 이는 소셜 미디어에서 센세이션을 일으켰고 Yann LeCun의 칭찬을 받았습니다.' May 07, 2023 pm 10:58 PM

마인크래프트에서 레드스톤은 매우 중요한 아이템이다. 스위치, 레드스톤 횃불, 레드스톤 블록은 게임 내 고유한 재료로 전선이나 물체에 전기와 같은 에너지를 공급할 수 있습니다. 레드스톤 회로는 다른 기계를 제어하거나 활성화하기 위한 구조물을 만드는 데 사용할 수 있습니다. 이 회로 자체는 플레이어의 수동 활성화에 응답하도록 설계할 수도 있고, 반복적으로 신호를 출력하거나 생물체 움직임과 같은 비플레이어에 의한 변경에 응답할 수도 있습니다. 아이템 낙하, 식물 성장, 낮과 밤 등. 따라서 내 세계에서 레드스톤은 자동문, 조명 스위치, 스트로보 전원 공급 장치와 같은 단순한 기계부터 거대한 엘리베이터, 자동 농장, 소형 게임 플랫폼, 심지어 게임 내 컴퓨터까지 매우 다양한 유형의 기계를 제어할 수 있습니다. . 최근 B 스테이션 UP 메인@

PyTorch를 사용하여 노이즈 제거 확산 모델 구현 PyTorch를 사용하여 노이즈 제거 확산 모델 구현 Jan 14, 2024 pm 10:33 PM

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

PyTorch와 함께 PyCharm을 설치하는 방법에 대한 튜토리얼 PyTorch와 함께 PyCharm을 설치하는 방법에 대한 튜토리얼 Feb 24, 2024 am 10:09 AM

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

See all articles