> 백엔드 개발 > PHP 튜토리얼 > PHP와 PyTorch를 사용한 딥 러닝

PHP와 PyTorch를 사용한 딥 러닝

WBOY
풀어 주다: 2023-06-19 14:48:01
원래의
1326명이 탐색했습니다.

딥러닝은 인공지능 분야에서 중요한 분야로 최근 몇 년간 점점 더 많은 관심과 관심을 받고 있습니다. 딥 러닝 연구 및 응용을 수행하려면 이를 달성하는 데 도움이 되는 일부 딥 러닝 프레임워크를 사용해야 하는 경우가 많습니다. 이번 글에서는 딥러닝에 PHP와 PyTorch를 활용하는 방법을 소개하겠습니다.

1. PyTorch란 무엇입니까

PyTorch는 Facebook에서 개발한 오픈 소스 기계 학습 프레임워크로, 딥 러닝 모델을 빠르게 생성하고 훈련하는 데 도움이 됩니다. PyTorch의 특징은 동적 컴퓨팅 그래프를 사용하여 모델 훈련 및 최적화를 달성한다는 것입니다. 이 방법을 사용하면 복잡한 딥 러닝 모델을 보다 유연하게 만들 수 있습니다. 동시에 PyTorch는 사전 훈련된 풍부한 모델과 알고리즘을 제공하여 딥 러닝 연구와 애플리케이션을 보다 편리하게 수행하는 데 도움이 됩니다.

2. PHP와 PyTorch를 사용하는 이유

다른 프로그래밍 언어에 비해 Python은 딥러닝 분야에서 매우 인기 있고 널리 사용되는 언어입니다. Python에는 딥 러닝 모델을 쉽게 사용하고 배포할 수 있는 풍부한 타사 라이브러리와 오픈 소스 도구가 있습니다. 한편, PHP는 웹 애플리케이션 및 웹 사이트 개발에 널리 사용되는 또 다른 프로그래밍 언어입니다. PHP와 PyTorch를 사용하면 웹 애플리케이션과 웹사이트에 딥 러닝 모델을 적용하여 다양한 지능형 기능을 달성하는 데 도움이 될 수 있습니다. 예를 들어 딥러닝 모델을 웹 애플리케이션에 내장해 얼굴 인식, 이미지 분류 등의 기능을 구현하고, PHP를 통해 프런트엔드와 상호작용해 사용자에게 더 나은 경험을 제공할 수 있습니다.

3. 딥러닝에 PHP와 PyTorch를 사용하세요

아래에서는 딥러닝에 PHP와 PyTorch를 사용하는 방법을 소개하겠습니다.

  1. PyTorch 설치

시작하기 전에 먼저 PyTorch 라이브러리를 설치해야 합니다. 설치에 대한 PyTorch 공식 문서(https://pytorch.org/get-started/locally/)를 참조할 수 있습니다.

  1. Python 스크립트 작성

다음으로 간단한 Python 스크립트를 작성하여 딥 러닝 모델을 생성하고 훈련하겠습니다. 이 모델은 손으로 쓴 숫자를 분류하는 데 사용됩니다.

먼저 PyTorch 라이브러리와 기타 필수 라이브러리를 가져와야 합니다.

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
로그인 후 복사

그런 다음 신경망 모델을 정의합니다.

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.dropout = nn.Dropout2d()
        self.fc1 = nn.Linear(320, 50)
        self.fc2 = nn.Linear(50, 10)

    def forward(self, x):
        x = nn.functional.relu(nn.functional.max_pool2d(self.conv1(x), 2))
        x = nn.functional.relu(nn.functional.max_pool2d(self.dropout(self.conv2(x)), 2))
        x = x.view(-1, 320)
        x = nn.functional.relu(self.fc1(x))
        x = nn.functional.dropout(x, training=self.training)
        x = self.fc2(x)
        return nn.functional.log_softmax(x, dim=1)
로그인 후 복사

이 신경망 모델에는 2개의 컨볼루션 레이어와 2개의 완전 연결 레이어가 포함되어 있습니다. 그 중 Convolutional Layer는 입력 영상의 특징을 추출하는 데 사용되고, Fully Connected Layer는 분류 결과를 출력하는 데 사용됩니다. 순방향 전파 중에는 ReLU를 활성화 함수로 사용하고 최대 풀링 및 드롭아웃을 사용하여 모델이 더 잘 일반화되도록 돕습니다.

다음으로 몇 가지 하이퍼 매개변수와 훈련 매개변수를 정의해야 합니다.

batch_size = 64
learning_rate = 0.01
momentum = 0.5
epochs = 10
로그인 후 복사

이 예에서는 간단한 배치 확률적 경사하강법 알고리즘(SGD)을 사용하여 모델을 최적화합니다. 각 시대마다 훈련 데이터를 배치로 나누고 각 배치를 훈련하고 최적화합니다. 훈련 과정에서 우리는 훈련 세트와 테스트 세트의 손실과 정확도를 계산하고 기록합니다.

train_loader = DataLoader(
    datasets.MNIST('./data', train=True, download=True, transform=transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])),
    batch_size=batch_size, shuffle=True)
test_loader = DataLoader(
    datasets.MNIST('./data', train=False, transform=transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])),
    batch_size=batch_size, shuffle=True)

model = Net()
optimizer = optim.SGD(model.parameters(), lr=learning_rate, momentum=momentum)

train_loss_history = []
train_acc_history = []
test_loss_history = []
test_acc_history = []

for epoch in range(1, epochs + 1):
    # Train
    model.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = model(data)
        loss = nn.functional.nll_loss(output, target)
        loss.backward()
        optimizer.step()
        if batch_idx % 10 == 0:
            print('Epoch [{}/{}], Train Batch: [{}/{}], Train Loss: {:.6f}'.format(epoch, epochs, batch_idx, len(train_loader), loss.item()))
    # Evaluate
    model.eval()
    train_loss = 0
    train_correct = 0
    test_loss = 0
    test_correct = 0
    with torch.no_grad():
        for data, target in train_loader:
            output = model(data)
            train_loss += nn.functional.nll_loss(output, target, reduction='sum').item()
            pred = output.argmax(dim=1, keepdim=True)
            train_correct += pred.eq(target.view_as(pred)).sum().item()
        train_loss /= len(train_loader.dataset)
        train_acc = 100. * train_correct / len(train_loader.dataset)
        train_loss_history.append(train_loss)
        train_acc_history.append(train_acc)
        for data, target in test_loader:
            output = model(data)
            test_loss += nn.functional.nll_loss(output, target, reduction='sum').item()
            pred = output.argmax(dim=1, keepdim=True)
            test_correct += pred.eq(target.view_as(pred)).sum().item()
        test_loss /= len(test_loader.dataset)
        test_acc = 100. * test_correct / len(test_loader.dataset)
        test_loss_history.append(test_loss)
        test_acc_history.append(test_acc)
        print('Epoch {}: Train Loss: {:.6f}, Train Acc: {:.2f}%, Test Loss: {:.6f}, Test Acc: {:.2f}%'.format(epoch, train_loss, train_acc, test_loss, test_acc))
로그인 후 복사
  1. PHP를 사용하여 Python 스크립트 호출

간단한 딥러닝 모델의 생성 및 학습을 완료했으므로 다음으로 PHP를 사용하여 Python 스크립트를 호출하고 학습된 모델을 실제로 사용하는 방법을 소개하겠습니다. 애플리케이션.

PHP의 exec 함수를 사용하여 Python 스크립트를 호출할 수 있습니다. 예를 들면 다음과 같습니다.

$output = exec("python train.py 2>&1", $output_array);
로그인 후 복사

이 명령은 train.py 스크립트를 실행하고 출력 결과를 $output_array 배열에 저장합니다. 교육 과정에 시간이 많이 걸리는 경우 PHP의 플러시 기능을 사용하여 실시간 출력을 얻을 수 있습니다. 예:

echo '
';
$output = exec("python train.py 2>&1", $output_array);
foreach ($output_array as $o) {
    echo $o . '
'; flush(); } echo '
';
로그인 후 복사

이러한 방식으로 딥 러닝 모델을 PHP 애플리케이션에 통합하고 이를 사용하여 다양한 지능형 기능을 제공할 수 있습니다. 기능.

4. 요약

이 글에서는 간단한 필기 숫자 분류 모델 생성 및 학습을 포함하여 딥 러닝에 PHP와 PyTorch를 사용하는 방법과 이 모델을 PHP 애플리케이션에 포함시키는 방법을 소개합니다. 이러한 방식으로 다양한 웹 애플리케이션과 웹사이트에 딥러닝 모델을 적용해 보다 지능적인 기능과 서비스를 제공할 수 있습니다.

위 내용은 PHP와 PyTorch를 사용한 딥 러닝의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿