Pycharm和PyTorch:深度學習的完美組合

一、PyCharmpytorch基礎入門

PyCharmpytorch是一種開發深度學習模型的IDE(集成開發環境),採用Python編程語言。它為開發者提供了一種直觀而強大的方法來創建深度學習模型。

下面讓我們從基本的安裝開始。首先,您需要安裝Python,建議使用最新版本的Python 3。之後,在安裝PyCharmpytorch之前,需要安裝PyTorch庫。PyTorch是Facebook的深度學習框架,它是由Torch7框架轉換而來的。下面是安裝PyTorch的命令:

pip install torch

完成了PyTorch的安裝,我們來安裝PyCharmpytorch。它可以從JetBrains官網上獲得,但是需要付費使用。我們可以使用社區版,它是免費的版本。

在安裝完成後,打開PyCharmpytorch,開始創建一個新的項目。選擇Python解釋器並選擇創建一個新的虛擬環境(Virtual Environment)來管理您的依賴項。此外,我們還需要安裝PyTorch的Python介面,也稱為torchvision。建議使用以下命令:

pip install torchvision

二、數據集的準備和預處理

在創建一個深度學習模型之前,我們需要準備好數據集並進行預處理。我們可以使用以下命令從MNIST下載數據集:

import torchvision.datasets as dsets
import torchvision.transforms as transforms

train_datasets = dsets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)

test_datasets = dsets.MNIST(root='./data', train=False, transform=transforms.ToTensor())

在這裡,我們使用了ToTensor函數將圖像轉換為PyTorch張量。此外,我們還可以將數據集切分為訓練集、驗證集和測試集。以下是執行此操作的示例:

from torch.utils.data.sampler import SubsetRandomSampler
import numpy as np

# 計算數據集的數量和切分的點
dataset_size = len(train_datasets)
indices = list(range(dataset_size))
split = int(np.floor(0.2 * dataset_size))

# 隨機劃分訓練集、驗證集和測試集
np.random.shuffle(indices)
train_indices, valid_indices, test_indices = indices[2 * split:], indices[:split], indices[split:2 * split]

train_sampler = SubsetRandomSampler(train_indices)
valid_sampler = SubsetRandomSampler(valid_indices)
test_sampler = SubsetRandomSampler(test_indices)

現在我們已經準備好訓練數據集、驗證數據集和測試數據集。對於每個數據集,我們需要創建一個數據載入器,它可以將數據集包裝成PyTorch數據集對象。以下是創建數據載入器的示例:

from torch.utils.data.dataloader import DataLoader

batch_size = 64

train_loader = DataLoader(train_datasets, batch_size=batch_size, sampler=train_sampler)
valid_loader = DataLoader(train_datasets, batch_size=batch_size, sampler=valid_sampler)
test_loader = DataLoader(test_datasets, batch_size=batch_size, sampler=test_sampler)

在這裡,我們使用了數據載入器來批量處理和載入數據。batch_size是我們指定的單個批次中的圖像數量。

三、創建神經網路模型並訓練模型

現在,我們將創建一個簡單的神經網路模型,並使用訓練數據集和驗證數據集來訓練它。以下是使用PyCharmpytorch創建神經網路模型的示例:

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)
        
    def forward(self, x):
        x = x.view(-1, 784)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return F.log_softmax(x)

model = Net()

在這裡,我們創建了一個包含兩個全連接層的神經網路模型。在前向傳遞中,我們使用relu激活函數將數據從784維嵌入到128維,並使用log_softmax激活函數將其從128維嵌入到10維。我們使用CrossEntropyLoss作為我們的損失函數,並使用Adam優化演算法來進行優化:

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)

現在我們已經創建好了模型,損失函數和優化器,讓我們使用訓練數據集和驗證數據集來訓練模型。訓練過程將重複執行多個epochs,並且使用驗證數據集來評估模型性能:

num_epochs = 10

for epoch in range(num_epochs):
    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
        
    correct, total = 0, 0
    with torch.no_grad():
        for data, target in valid_loader:
            output = model(data)
            _, predicted = torch.max(output.data, 1)
            total += target.size(0)
            correct += (predicted == target).sum().item()
    print('Epoch [{}/{}], Validation Accuracy: {:.2f}%'.format(epoch+1, num_epochs, 100 * correct / total))

四、測試訓練好的模型

在完成了模型的訓練後,我們可以使用測試數據集來測試模型的性能。下面是使用測試數據集測試我們的模型的示例:

test_loss = 0
correct = 0
with torch.no_grad():
    for data, target in test_loader:
        output = model(data)
        test_loss += criterion(output, target).item()
        pred = output.data.max(1, keepdim=True)[1]
        correct += pred.eq(target.data.view_as(pred)).sum()
        
test_loss /= len(test_loader.dataset)
accuracy = 100. * correct / len(test_loader.dataset)

print('Test Average loss: {:.4f}, Test Accuracy: {}/{} ({:.0f}%)'.format(test_loss, correct, len(test_loader.dataset), accuracy))

至此,我們已經成功地創建了一個深度學習模型,使用訓練數據集訓練模型,並使用測試數據集測試模型的性能。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/253336.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 02:16
下一篇 2024-12-14 02:16

相關推薦

  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • KeyDB Java:完美的分散式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • 做Python的Flask開發,必須安裝PyCharm

    PyCharm是一款專業的Python集成開發環境(IDE),適用於Flask、Django等Web開發框架,提供了強大的代碼編輯、調試和版本控制等功能,大大提高了開發效率和代碼質…

    編程 2025-04-29
  • 深度查詢宴會的文化起源

    深度查詢宴會,是指通過對一種文化或主題的深度挖掘和探究,為參與者提供一次全方位的、深度體驗式的文化品嘗和交流活動。本文將從多個方面探討深度查詢宴會的文化起源。 一、宴會文化的起源 …

    編程 2025-04-29
  • Python下載深度解析

    Python作為一種強大的編程語言,在各種應用場景中都得到了廣泛的應用。Python的安裝和下載是使用Python的第一步,對這個過程的深入了解和掌握能夠為使用Python提供更加…

    編程 2025-04-28
  • PyCharm運行Python程序用法介紹

    本文將從多個方面詳細闡述PyCharm運行Python程序的過程,包含了環境配置、代碼編寫、調試等內容,幫助讀者更好地利用PyCharm進行Python開發。 一、安裝PyChar…

    編程 2025-04-28
  • 元字的最佳組合

    我們如何找到元字的最佳組合呢?最簡單的方法就是窮舉,但這樣的方式要求計算機計算的次數非常巨大,而且時間複雜度高達O(n^4)。本文將在代碼實現中給出更為高效的方法。 一、順序窮舉法…

    編程 2025-04-27
  • Python遞歸深度用法介紹

    Python中的遞歸函數是一個函數調用自身的過程。在進行遞歸調用時,程序需要為每個函數調用開闢一定的內存空間,這就是遞歸深度的概念。本文將從多個方面對Python遞歸深度進行詳細闡…

    編程 2025-04-27
  • 如何判斷組合詞

    在自然語言處理中,經常需要對文本中出現的詞進行判斷,判斷它們是否為組合詞,本文將從多個方面講述如何進行判斷組合詞。 一、基於詞典的判斷方法 詞典是判斷組合詞的重要依據。在構建詞典時…

    編程 2025-04-27
  • Spring Boot本地類和Jar包類載入順序深度剖析

    本文將從多個方面對Spring Boot本地類和Jar包類載入順序做詳細的闡述,並給出相應的代碼示例。 一、類載入機制概述 在介紹Spring Boot本地類和Jar包類載入順序之…

    編程 2025-04-27

發表回復

登錄後才能評論