목차
(2) torch.linspace(-1, 1, 101, require_grad; =False)는 간격 내에서 균일한 간격의 값 집합을 생성하도록 지정하는 데 사용됩니다. 이 함수는 시작 값, 종료 값 및 요소 수의 세 가지 매개 변수를 허용하고 지정된 수의 균일한 간격 값을 포함하는 텐서를 반환합니다.
(4) 다른 단계는 손실 함수, 경사 하강 최적화 프로그램을 정의하고, 배치_크기를 통해 훈련 세트를 분할하고, 훈련을 위해 100번 반복하는 것입니다. (모델 .parameters(), lr=0.01, 모멘텀=0.9)은 확률적 경사하강법(SGD) 최적화 알고리즘을 구현할 수 있습니다
4、神经网络
기술 주변기기 일체 포함 기계 학습 | PyTorch 간결한 튜토리얼 1부

기계 학습 | PyTorch 간결한 튜토리얼 1부

Nov 02, 2023 pm 05:25 PM
기계 학습 pytorch

이전 글에서는 기능 정규화와 텐서에 대해 소개했습니다. 다음으로는 PyTorch의 간단한 실습을 주로 소개하는 두 가지 간결한 PyTorch 튜토리얼을 작성하겠습니다.

1 그림 1

import torcha = torch.tensor([2, 3, 4])b = torch.tensor([3, 4, 5])print("a + b: ", (a + b).numpy())print("a - b: ", (a - b).numpy())print("a * b: ", (a * b).numpy())print("a / b: ", (a / b).numpy())
로그인 후 복사

(1) 기본 함수로 시작합니다. torch.manual_seed(42)는 생성된 난수 시퀀스가 ​​매번 동일하도록 난수 생성기의 시드를 설정하는 데 사용됩니다. run. 이 함수는 정수 매개변수를 시드로 받아들이며 결과의 반복성을 보장하기 위해 신경망 훈련과 같은 난수가 필요한 시나리오에서 사용할 수 있습니다.

(2) torch.linspace(-1, 1, 101, require_grad; =False)는 간격 내에서 균일한 간격의 값 집합을 생성하도록 지정하는 데 사용됩니다. 이 함수는 시작 값, 종료 값 및 요소 수의 세 가지 매개 변수를 허용하고 지정된 수의 균일한 간격 값을 포함하는 텐서를 반환합니다.

(3) build_model1의 내부 구현:

torch.nn.Sequential(torch.nn.Linear(1, 1,bias=False))은 nn.Sequential 클래스의 생성자를 사용하고 선형 레이어를 다음과 같이 전달합니다. 선형 레이어를 포함하는 신경망 모델 机器学习 | PyTorch简明教程上篇build_model2에는 add_module() 메서드를 사용하여 선형이라는 하위 모듈을 추가하는 등의 기능이 있습니다. (4) torch.nn.MSELoss; (reductinotallow='mean')은 손실 함수를 정의합니다.

optim.SGD(model.parameters(), lr=0.01, Momentum=0.9)를 사용하여 SGD(확률적 경사하강법) 최적화 알고리즘을 구현합니다

훈련 세트를 넣습니다. 배치 크기 분할을 통해 100회 반복

(7) 다음은 신경망 모델을 훈련하는 데 사용되는 훈련 함수입니다. 특히 이 함수는 다음 매개변수를 허용합니다.

    model: 일반적으로 신경망 모델입니다. nn.Module 클래스의 인스턴스에서 상속됨 ​​
  • loss: 모델의 예측 값과 실제 값 사이의 차이를 계산하는 데 사용됨
  • optimizer: 모델의 매개변수를 업데이트하는 데 사용됨;

x: 입력 데이터는 torch.Tensor 유형의 텐서입니다.

y: 대상 데이터는 torch.Tensor 유형의 텐서입니다.

(8) train은 PyTorch 훈련 과정에서 일반적으로 사용되는 방법입니다. 그 단계는 다음과 같습니다:

    모델을 훈련 모드로 설정합니다. 즉, 드롭아웃 및 배치 정규화와 같은 훈련 중에 사용되는 특수 작업을 활성화합니다.
  • 새로운 경사 계산 라운드를 위해 최적화 프로그램의 경사 캐시를 지웁니다.
  • 입력 데이터를 모델에 전달하고, 모델의 예측값을 계산하고, 예측값과 목표 데이터를 손실 함수에 전달하여 손실값을 계산합니다.
  • 손실값을 역전파하고 모델 매개변수의 기울기를 계산합니다.
  • 최적화 프로그램을 사용하여 모델 매개변수를 업데이트하여 손실 값을 변환합니다.
  • 손실 값의 스칼라 값을 반환합니다.

(9) print("Round = %d, loss value = %s" % (i + 1, 비용 / num_batches)) 마지막으로 현재 훈련 라운드 및 손실 값을 인쇄합니다. 위 코드 출력은 다음과 같습니다.
    a + b:[5 7 9]a - b:[-1 -1 -1]a * b:[ 6 12 20]a / b:[0.6666667 0.750.8]
    로그인 후 복사
  • 3. 로지스틱 회귀
  • 로지스틱 회귀는 그림에 표시된 것처럼 여러 개별 점의 궤적을 대략적으로 나타냅니다. :
  • 그림 2
  • import torchfrom torch import optimdef build_model1():return torch.nn.Sequential(torch.nn.Linear(1, 1, bias=False))def build_model2():model = torch.nn.Sequential()model.add_module("linear", torch.nn.Linear(1, 1, bias=False))return modeldef train(model, loss, optimizer, x, y):model.train()optimizer.zero_grad()fx = model.forward(x.view(len(x), 1)).squeeze()output = loss.forward(fx, y)output.backward()optimizer.step()return output.item()def main():torch.manual_seed(42)X = torch.linspace(-1, 1, 101, requires_grad=False)Y = 2 * X + torch.randn(X.size()) * 0.33print("X: ", X.numpy(), ", Y: ", Y.numpy())model = build_model1()loss = torch.nn.MSELoss(reductinotallow='mean')optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)batch_size = 10for i in range(100):cost = 0.num_batches = len(X) // batch_sizefor k in range(num_batches):start, end = k * batch_size, (k + 1) * batch_sizecost += train(model, loss, optimizer, X[start:end], Y[start:end])print("Epoch = %d, cost = %s" % (i + 1, cost / num_batches))w = next(model.parameters()).dataprint("w = %.2f" % w.numpy())if __name__ == "__main__":main()
    로그인 후 복사
  • (1) 위에 소개된 torch.manual_seed(42)의 주요 기능부터 시작하세요. 여기에서는 건너뛰세요.
  • (2) load_mnist는 mnist 데이터 세트를 직접 다운로드하는 것입니다. trX 및 teX를 입력 데이터로 반환합니다. trY 및 teY는 라벨 데이터입니다.

    (3) build_model의 내부 구현: torch.nn.Sequential(torch.nn.Linear(input_dim,output_dim,bias=False))는 다음과 같이 사용됩니다. 선형 레이어를 포함하는 신경망 모델을 구축합니다. 모델의 입력 기능 수는 input_dim이고 출력 기능 수는 output_dim이며 선형 레이어에는 편향 항이 없습니다. 여기서 n_classes=10은 10개의 카테고리를 출력함을 의미합니다. 다시 작성한 후: (3) build_model의 내부 구현: torch.nn.Sequential(torch.nn.Linear(input_dim,output_dim,bias=False))을 사용하여 선형 레이어를 포함하는 신경망 모델을 구축합니다. 모델의 입력 기능 수는 다음과 같습니다. input_dim. 출력 특징의 수는 output_dim이고 선형 레이어에는 바이어스 항이 없습니다. 그중 n_classes=10은 10개의 범주를 출력한다는 의미입니다.

    (4) 다른 단계는 손실 함수, 경사 하강 최적화 프로그램을 정의하고, 배치_크기를 통해 훈련 세트를 분할하고, 훈련을 위해 100번 반복하는 것입니다. (모델 .parameters(), lr=0.01, 모멘텀=0.9)은 확률적 경사하강법(SGD) 최적화 알고리즘을 구현할 수 있습니다

    (6) 각 훈련 라운드 후에 예측 기능을 실행하여 예측을 해야 합니다. 이 함수는 두 개의 매개변수인 model(훈련된 모델)과 teX(예측해야 하는 데이터)를 받아들입니다. 구체적인 단계는 다음과 같습니다:

    • model.eval()模型设置为评估模式,这意味着模型将不会进行训练,而是仅用于推理;
    • 将output转换为NumPy数组,并使用argmax()方法获取每个样本的预测类别;

    (7)print("Epoch %d, cost = %f, acc = %.2f%%" % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))最后打印当前训练的轮次,损失值和acc,上述的代码输出如下(执行很快,但是准确率偏低):

    ...Epoch 91, cost = 0.252863, acc = 92.52%Epoch 92, cost = 0.252717, acc = 92.51%Epoch 93, cost = 0.252573, acc = 92.50%Epoch 94, cost = 0.252431, acc = 92.50%Epoch 95, cost = 0.252291, acc = 92.52%Epoch 96, cost = 0.252153, acc = 92.52%Epoch 97, cost = 0.252016, acc = 92.51%Epoch 98, cost = 0.251882, acc = 92.51%Epoch 99, cost = 0.251749, acc = 92.51%Epoch 100, cost = 0.251617, acc = 92.51%
    로그인 후 복사

    4、神经网络

    一个经典的LeNet网络,用于对字符进行分类,如图:

    机器学习 | PyTorch简明教程上篇图3

    • 定义一个多层的神经网络
    • 对数据集的预处理并准备作为网络的输入
    • 将数据输入到网络
    • 计算网络的损失
    • 反向传播,计算梯度
    import numpy as npimport torchfrom torch import optimfrom data_util import load_mnistdef build_model(input_dim, output_dim):return torch.nn.Sequential(torch.nn.Linear(input_dim, 512, bias=False),torch.nn.Sigmoid(),torch.nn.Linear(512, output_dim, bias=False))def train(model, loss, optimizer, x_val, y_val):model.train()optimizer.zero_grad()fx = model.forward(x_val)output = loss.forward(fx, y_val)output.backward()optimizer.step()return output.item()def predict(model, x_val):model.eval()output = model.forward(x_val)return output.data.numpy().argmax(axis=1)def main():torch.manual_seed(42)trX, teX, trY, teY = load_mnist(notallow=False)trX = torch.from_numpy(trX).float()teX = torch.from_numpy(teX).float()trY = torch.tensor(trY)n_examples, n_features = trX.size()n_classes = 10model = build_model(n_features, n_classes)loss = torch.nn.CrossEntropyLoss(reductinotallow='mean')optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)batch_size = 100for i in range(100):cost = 0.num_batches = n_examples // batch_sizefor k in range(num_batches):start, end = k * batch_size, (k + 1) * batch_sizecost += train(model, loss, optimizer,trX[start:end], trY[start:end])predY = predict(model, teX)print("Epoch %d, cost = %f, acc = %.2f%%"% (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))if __name__ == "__main__":main()
    로그인 후 복사

    (1)以上这段神经网络的代码与逻辑回归没有太多的差异,区别的地方是build_model,这里是构建一个包含两个线性层和一个Sigmoid激活函数的神经网络模型,该模型包含一个输入特征数量为input_dim,输出特征数量为output_dim的线性层,一个Sigmoid激活函数,以及一个输入特征数量为512,输出特征数量为output_dim的线性层;

    (2)print("Epoch %d, cost = %f, acc = %.2f%%" % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))最后打印当前训练的轮次,损失值和acc,上述的代码输入如下(执行时间比逻辑回归要长,但是准确率要高很多):

    第91个时期,费用= 0.054484,准确率= 97.58%第92个时期,费用= 0.053753,准确率= 97.56%第93个时期,费用= 0.053036,准确率= 97.60%第94个时期,费用= 0.052332,准确率= 97.61%第95个时期,费用= 0.051641,准确率= 97.63%第96个时期,费用= 0.050964,准确率= 97.66%第97个时期,费用= 0.050298,准确率= 97.66%第98个时期,费用= 0.049645,准确率= 97.67%第99个时期,费用= 0.049003,准确率= 97.67%第100个时期,费用= 0.048373,准确率= 97.68%
    로그인 후 복사


    위 내용은 기계 학습 | PyTorch 간결한 튜토리얼 1부의 상세 내용입니다. 자세한 내용은 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 옷 제거제

    Video Face Swap

    Video Face Swap

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

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

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

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

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

    이 기사에서는 SHAP: 기계 학습을 위한 모델 설명을 이해하도록 안내합니다. 이 기사에서는 SHAP: 기계 학습을 위한 모델 설명을 이해하도록 안내합니다. Jun 01, 2024 am 10:58 AM

    기계 학습 및 데이터 과학 분야에서 모델 해석 가능성은 항상 연구자와 실무자의 초점이었습니다. 딥러닝, 앙상블 방법 등 복잡한 모델이 널리 적용되면서 모델의 의사결정 과정을 이해하는 것이 특히 중요해졌습니다. explainable AI|XAI는 모델의 투명성을 높여 머신러닝 모델에 대한 신뢰와 확신을 구축하는 데 도움이 됩니다. 모델 투명성을 향상시키는 것은 여러 복잡한 모델의 광범위한 사용은 물론 모델을 설명하는 데 사용되는 의사 결정 프로세스와 같은 방법을 통해 달성할 수 있습니다. 이러한 방법에는 기능 중요도 분석, 모델 예측 간격 추정, 로컬 해석 가능성 알고리즘 등이 포함됩니다. 특성 중요도 분석은 모델이 입력 특성에 미치는 영향 정도를 평가하여 모델의 의사결정 과정을 설명할 수 있습니다. 모델 예측 구간 추정

    학습 곡선을 통해 과적합과 과소적합 식별 학습 곡선을 통해 과적합과 과소적합 식별 Apr 29, 2024 pm 06:50 PM

    이 글에서는 학습 곡선을 통해 머신러닝 모델에서 과적합과 과소적합을 효과적으로 식별하는 방법을 소개합니다. 과소적합 및 과적합 1. 과적합 모델이 데이터에 대해 과도하게 훈련되어 데이터에서 노이즈를 학습하는 경우 모델이 과적합이라고 합니다. 과적합된 모델은 모든 예를 너무 완벽하게 학습하므로 보이지 않거나 새로운 예를 잘못 분류합니다. 과대적합 모델의 경우 완벽/거의 완벽에 가까운 훈련 세트 점수와 형편없는 검증 세트/테스트 점수를 얻게 됩니다. 약간 수정됨: "과적합의 원인: 복잡한 모델을 사용하여 간단한 문제를 해결하고 데이터에서 노이즈를 추출합니다. 훈련 세트로 사용되는 작은 데이터 세트는 모든 데이터를 올바르게 표현하지 못할 수 있기 때문입니다."

    투명한! 주요 머신러닝 모델의 원리를 심층적으로 분석! 투명한! 주요 머신러닝 모델의 원리를 심층적으로 분석! Apr 12, 2024 pm 05:55 PM

    일반인의 관점에서 보면 기계 학습 모델은 입력 데이터를 예측된 출력에 매핑하는 수학적 함수입니다. 보다 구체적으로, 기계 학습 모델은 예측 출력과 실제 레이블 사이의 오류를 최소화하기 위해 훈련 데이터로부터 학습하여 모델 매개변수를 조정하는 수학적 함수입니다. 기계 학습에는 로지스틱 회귀 모델, 의사결정 트리 모델, 지원 벡터 머신 모델 등 다양한 모델이 있습니다. 각 모델에는 적용 가능한 데이터 유형과 문제 유형이 있습니다. 동시에, 서로 다른 모델 간에는 많은 공통점이 있거나 모델 발전을 위한 숨겨진 경로가 있습니다. 연결주의 퍼셉트론을 예로 들면, 퍼셉트론의 은닉층 수를 늘려 심층 신경망으로 변환할 수 있습니다. 퍼셉트론에 커널 함수를 추가하면 SVM으로 변환할 수 있다. 이 하나

    우주탐사 및 인간정주공학 분야 인공지능의 진화 우주탐사 및 인간정주공학 분야 인공지능의 진화 Apr 29, 2024 pm 03:25 PM

    1950년대에는 인공지능(AI)이 탄생했다. 그때 연구자들은 기계가 사고와 같은 인간과 유사한 작업을 수행할 수 있다는 것을 발견했습니다. 이후 1960년대에 미국 국방부는 인공 지능에 자금을 지원하고 추가 개발을 위해 실험실을 설립했습니다. 연구자들은 우주 탐사, 극한 환경에서의 생존 등 다양한 분야에서 인공지능의 응용 분야를 찾고 있습니다. 우주탐험은 지구를 넘어 우주 전체를 포괄하는 우주에 대한 연구이다. 우주는 지구와 조건이 다르기 때문에 극한 환경으로 분류됩니다. 우주에서 생존하려면 많은 요소를 고려해야 하며 예방 조치를 취해야 합니다. 과학자와 연구자들은 우주를 탐험하고 모든 것의 현재 상태를 이해하는 것이 우주가 어떻게 작동하는지 이해하고 잠재적인 환경 위기에 대비하는 데 도움이 될 수 있다고 믿습니다.

    C++에서 기계 학습 알고리즘 구현: 일반적인 과제 및 솔루션 C++에서 기계 학습 알고리즘 구현: 일반적인 과제 및 솔루션 Jun 03, 2024 pm 01:25 PM

    C++의 기계 학습 알고리즘이 직면하는 일반적인 과제에는 메모리 관리, 멀티스레딩, 성능 최적화 및 유지 관리 가능성이 포함됩니다. 솔루션에는 스마트 포인터, 최신 스레딩 라이브러리, SIMD 지침 및 타사 라이브러리 사용은 물론 코딩 스타일 지침 준수 및 자동화 도구 사용이 포함됩니다. 실제 사례에서는 Eigen 라이브러리를 사용하여 선형 회귀 알고리즘을 구현하고 메모리를 효과적으로 관리하며 고성능 행렬 연산을 사용하는 방법을 보여줍니다.

    당신이 모르는 머신러닝의 5가지 학교 당신이 모르는 머신러닝의 5가지 학교 Jun 05, 2024 pm 08:51 PM

    머신 러닝은 명시적으로 프로그래밍하지 않고도 컴퓨터가 데이터로부터 학습하고 능력을 향상시킬 수 있는 능력을 제공하는 인공 지능의 중요한 분야입니다. 머신러닝은 이미지 인식, 자연어 처리, 추천 시스템, 사기 탐지 등 다양한 분야에서 폭넓게 활용되며 우리의 삶의 방식을 변화시키고 있습니다. 기계 학습 분야에는 다양한 방법과 이론이 있으며, 그 중 가장 영향력 있는 5가지 방법을 "기계 학습의 5개 학교"라고 합니다. 5개 주요 학파는 상징학파, 연결주의 학파, 진화학파, 베이지안 학파, 유추학파이다. 1. 상징주의라고도 알려진 상징주의는 논리적 추론과 지식 표현을 위해 상징을 사용하는 것을 강조합니다. 이 사고 학교는 학습이 기존을 통한 역연역 과정이라고 믿습니다.

    Flash Attention은 안정적인가요? Meta와 Harvard는 모델 중량 편차가 ​​수십 배로 변동한다는 사실을 발견했습니다. Flash Attention은 안정적인가요? Meta와 Harvard는 모델 중량 편차가 ​​수십 배로 변동한다는 사실을 발견했습니다. May 30, 2024 pm 01:24 PM

    MetaFAIR는 대규모 기계 학습을 수행할 때 생성되는 데이터 편향을 최적화하기 위한 새로운 연구 프레임워크를 제공하기 위해 Harvard와 협력했습니다. 대규모 언어 모델을 훈련하는 데는 수개월이 걸리고 수백 또는 수천 개의 GPU를 사용하는 것으로 알려져 있습니다. LLaMA270B 모델을 예로 들면, 훈련에는 총 1,720,320 GPU 시간이 필요합니다. 대규모 모델을 교육하면 이러한 워크로드의 규모와 복잡성으로 인해 고유한 체계적 문제가 발생합니다. 최근 많은 기관에서 SOTA 생성 AI 모델을 훈련할 때 훈련 프로세스의 불안정성을 보고했습니다. 이는 일반적으로 손실 급증의 형태로 나타납니다. 예를 들어 Google의 PaLM 모델은 훈련 과정에서 최대 20번의 손실 급증을 경험했습니다. 수치 편향은 이러한 훈련 부정확성의 근본 원인입니다.

    설명 가능한 AI: 복잡한 AI/ML 모델 설명 설명 가능한 AI: 복잡한 AI/ML 모델 설명 Jun 03, 2024 pm 10:08 PM

    번역기 | 검토자: Li Rui | Chonglou 인공 지능(AI) 및 기계 학습(ML) 모델은 오늘날 점점 더 복잡해지고 있으며 이러한 모델에서 생성되는 출력은 이해관계자에게 설명할 수 없는 블랙박스입니다. XAI(Explainable AI)는 이해관계자가 이러한 모델의 작동 방식을 이해할 수 있도록 하고, 이러한 모델이 실제로 의사 결정을 내리는 방식을 이해하도록 하며, AI 시스템의 투명성, 이 문제를 해결하기 위한 신뢰 및 책임을 보장함으로써 이 문제를 해결하는 것을 목표로 합니다. 이 기사에서는 기본 원리를 설명하기 위해 다양한 설명 가능한 인공 지능(XAI) 기술을 살펴봅니다. 설명 가능한 AI가 중요한 몇 가지 이유 신뢰와 투명성: AI 시스템이 널리 수용되고 신뢰되려면 사용자가 의사 결정 방법을 이해해야 합니다.

    See all articles