EMNIST dalam PyTorch

Barbara Streisand
Barbara Streisandasal
2024-12-10 00:33:10875semak imbas

Beli Saya Kopi☕

*Siaran saya menerangkan EMNIST.

EMNIST() boleh menggunakan set data EMNIST seperti yang ditunjukkan di bawah:

*Memo:

  • Argumen pertama ialah root(Required-Type:str or pathlib.Path). *Laluan mutlak atau relatif boleh dilakukan.
  • Argumen ke-2 dipecahkan(Jenis-Diperlukan:str). *"byclass", "bymerge", "balanced", "huruf", "digit" atau "mnist" boleh ditetapkan padanya.
  • Terdapat hujah kereta api(Pilihan-Lalai:Jenis-Salah:terapung): *Memo:
    • Untuk split="byclass" dan split="byclass", jika ia Benar, data kereta api(697,932 imej) digunakan manakala jika Palsu, data ujian(116,323 imej) digunakan.
    • Untuk split="balanced", jika ia Benar, data kereta api(112,800 imej) digunakan manakala jika Palsu, data ujian(188,00 imej) digunakan.
    • Untuk split="letters", jika ia Benar, data kereta api(124,800 imej) digunakan manakala jika Palsu, data ujian(20,800 imej) digunakan.
    • Untuk split="digit", jika ia Benar, data kereta api(240,000 imej) digunakan manakala jika Palsu, data ujian(40,000 imej) digunakan.
    • Untuk split="mnist", jika ia Benar, data kereta api(60,000 imej) digunakan manakala jika Palsu, data ujian(10,000 imej) digunakan.
  • Terdapat argumen transformasi(Pilihan-Lalai:Tiada-Jenis:boleh dipanggil).
  • Terdapat argumen target_transform(Pilihan-Lalai:Tiada-Jenis:boleh dipanggil).
  • Terdapat hujah muat turun(Optional-Default:False-Type:bool): *Memo:
    • Jika Benar, set data dimuat turun dari internet dan diekstrak (dibuka zip) ke akar.
    • Jika ia Benar dan set data sudah dimuat turun, ia akan diekstrak.
    • Jika ia Benar dan set data sudah dimuat turun dan diekstrak, tiada apa yang berlaku.
    • Ia sepatutnya Palsu jika set data sudah dimuat turun dan diekstrak kerana ia lebih pantas.
    • Anda boleh memuat turun dan mengekstrak set data secara manual dari sini ke mis. data/EMNIST/mentah/.
  • Terdapat pepijat yang mana imej diterbalikkan dan diputar 90 darjah melawan arah jam secara lalai supaya imej tersebut harus diubah.
from torchvision.datasets import EMNIST

train_data = EMNIST(
    root="data",
    split="byclass"
)

train_data = EMNIST(
    root="data",
    split="byclass",
    train=True,
    transform=None,
    target_transform=None,
    download=False
)

test_data = EMNIST(
    root="data",
    split="byclass",
    train=False
)

len(train_data), len(test_data)
# 697932 116323

train_data
# Dataset EMNIST
#     Number of datapoints: 697932
#     Root location: data
#     Split: Train

train_data.root
# 'data'

train_data.split
# 'byclass'

train_data.train
# True

print(train_data.transform)
# None

print(train_data.target_transform)
# None

train_data.download
# <bound method EMNIST.download of Dataset EMNIST
#     Number of datapoints: 697932
#     Root location: data
#     Split: Train>

train_data[0]
# (<PIL.Image.Image image mode=L size=28x28>, 35)

train_data[1]
# (<PIL.Image.Image image mode=L size=28x28>, 36)

train_data[2]
# (<PIL.Image.Image image mode=L size=28x28>, 6)

train_data[3]
# (<PIL.Image.Image image mode=L size=28x28>, 3)

train_data[4]
# (<PIL.Image.Image image mode=L size=28x28>, 22)

train_data.classes
# ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
#  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
#  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
#  'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
#  'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
from torchvision.datasets import EMNIST

train_data = EMNIST(
    root="data",
    split="byclass",
    train=True
)

test_data = EMNIST(
    root="data",
    split="byclass",
    train=False
)

import matplotlib.pyplot as plt

def show_images(data):
    plt.figure(figsize=(12, 2))
    col = 5
    for i, (image, label) in enumerate(data, 1):
        plt.subplot(1, col, i)
        plt.title(label)
        plt.imshow(image)
        if i == col:
            break
    plt.show()

show_images(data=train_data)
show_images(data=test_data)

EMNIST in PyTorch

from torchvision.datasets import EMNIST
from torchvision.transforms import v2

train_data = EMNIST(
    root="data",
    split="byclass",
    train=True,
    transform=v2.Compose([
        v2.RandomHorizontalFlip(p=1.0),
        v2.RandomRotation(degrees=(90, 90))
    ])
)

test_data = EMNIST(
    root="data",
    split="byclass",
    train=False,
    transform=v2.Compose([
        v2.RandomHorizontalFlip(p=1.0),
        v2.RandomRotation(degrees=(90, 90))
    ])
)

import matplotlib.pyplot as plt

def show_images(data):
    plt.figure(figsize=(12, 2))
    col = 5
    for i, (image, label) in enumerate(data, 1):
        plt.subplot(1, col, i)
        plt.title(label)
        plt.imshow(image)
        if i == col:
            break
    plt.show()

show_images(data=train_data)
show_images(data=test_data)

EMNIST in PyTorch

Atas ialah kandungan terperinci EMNIST dalam PyTorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn