PyTorch の MovingMNIST

Linda Hamilton
リリース: 2024-12-17 04:35:25
オリジナル
176 人が閲覧しました

コーヒー買ってきて☕

*私の投稿では Moving MNIST について説明しています。

MovingMNIST() は、以下に示すように Moving MNIST データセットを使用できます。

*メモ:

  • 最初の引数は root(Required-Type:str または pathlib.Path) です。 *絶対パスまたは相対パスが可能です。
  • 2番目の引数はsplit(Optional-Default:None-Type:str)です: *メモ:
    • なし。「トレーニング」または「テスト」を設定できます。
    • None の場合、split_ratio を無視して、各ビデオの 20 フレーム (画像) すべてが返されます。
  • 3 番目の引数は、split_ratio(Optional-Default:10-Type:int) です。 *メモ:
    • split が "train" の場合、data[:, :split_ratio] が返されます。
    • split が "test" の場合、data[:, Split_ratio:] が返されます。
    • split が None の場合、無視されます。 Split_ratio を無視します。
  • 4 番目の引数は、transform(Optional-Default:None-Type:callable) です。
  • 5 番目の引数は download(Optional-Default:False-Type:bool) です。 *メモ:
    • True の場合、データセットはインターネットからルートにダウンロードされます。
    • これが True で、データセットが既にダウンロードされている場合、データセットは抽出されます。
    • これが True で、データセットが既にダウンロードされている場合は、何も起こりません。
    • データセットが既にダウンロードされている場合は、高速であるため False にする必要があります。
    • ここからデータセットを手動でダウンロードして抽出できます。データ/MovingMNIST/.
from torchvision.datasets import MovingMNIST

all_data = MovingMNIST(
    root="data"
)

all_data = MovingMNIST(
    root="data",
    split=None,
    split_ratio=10,
    download=False,
    transform=None
)

train_data = MovingMNIST(
    root="data",
    split="train"
)

test_data = MovingMNIST(
    root="data",
    split="test"
)

len(all_data), len(train_data), len(test_data)
# (10000, 10000, 10000)

len(all_data[0]), len(train_data[0]), len(test_data[0])
# (20, 10, 10)

all_data
# Dataset MovingMNIST
#     Number of datapoints: 10000
#     Root location: data

all_data.root
# 'data'

print(all_data.split)
# None

all_data.split_ratio
# 10

all_data.download
# <bound method MovingMNIST.download of Dataset MovingMNIST
#     Number of datapoints: 10000
#     Root location: data>

print(all_data.transform)
# None

from torchvision.datasets import MovingMNIST

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 3))

plt.subplot(1, 3, 1)
plt.title("all_data")
plt.imshow(all_data[0].squeeze()[0])

plt.subplot(1, 3, 2)
plt.title("train_data")
plt.imshow(train_data[0].squeeze()[0])

plt.subplot(1, 3, 3)
plt.title("test_data")
plt.imshow(test_data[0].squeeze()[0])

plt.show()
ログイン後にコピー

MovingMNIST in PyTorch

from torchvision.datasets import MovingMNIST

all_data = MovingMNIST(
    root="data",
    split=None
)

train_data = MovingMNIST(
    root="data",
    split="train"
)

test_data = MovingMNIST(
    root="data",
    split="test"
)

def show_images(data, main_title=None):
    plt.figure(figsize=(10, 8))
    plt.suptitle(t=main_title, y=1.0, fontsize=14)
    for i, image in enumerate(data, start=1):
        plt.subplot(4, 5, i)
        plt.tight_layout(pad=1.0)
        plt.title(i)
        plt.imshow(image)
    plt.show()

show_images(data=all_data[0].squeeze(), main_title="all_data")
show_images(data=train_data[0].squeeze(), main_title="train_data")
show_images(data=test_data[0].squeeze(), main_title="test_data")
ログイン後にコピー

MovingMNIST in PyTorch

MovingMNIST in PyTorch

MovingMNIST in PyTorch

from torchvision.datasets import MovingMNIST

all_data = MovingMNIST(
    root="data",
    split=None
)

train_data = MovingMNIST(
    root="data",
    split="train"
)

test_data = MovingMNIST(
    root="data",
    split="test"
)

import matplotlib.pyplot as plt

def show_images(data, main_title=None):
    plt.figure(figsize=(10, 8))
    plt.suptitle(t=main_title, y=1.0, fontsize=14)
    col = 5
    for i, image in enumerate(data, start=1):
        plt.subplot(4, 5, i)
        plt.tight_layout(pad=1.0)
        plt.title(i)
        plt.imshow(image.squeeze()[0])
        if i == col:
            break
    plt.show()

show_images(data=all_data, main_title="all_data")
show_images(data=train_data, main_title="train_data")
show_images(data=test_data, main_title="test_data")
ログイン後にコピー

MovingMNIST in PyTorch

from torchvision.datasets import MovingMNIST
import matplotlib.animation as animation

all_data = MovingMNIST(
    root="data"
)

import matplotlib.pyplot as plt
from IPython.display import HTML

figure, axis = plt.subplots()

# ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ `ArtistAnimation()` ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
images = []
for image in all_data[0].squeeze():
    images.append([axis.imshow(image)])
ani = animation.ArtistAnimation(fig=figure, artists=images,
                                interval=100)
# ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ `ArtistAnimation()` ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

# ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ `FuncAnimation()` ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
# def animate(i):
#     axis.imshow(all_data[0].squeeze()[i])
#
# ani = animation.FuncAnimation(fig=figure, func=animate,
#                               frames=20, interval=100)
# ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ `FuncAnimation()` ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

# ani.save('result.gif') # Save the animation as a `.gif` file

plt.ioff() # Hide a useless image

# ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Show animation ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
HTML(ani.to_jshtml()) # Animation operator
# HTML(ani.to_html5_video()) # Animation video
# ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Show animation ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

# ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Show animation ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
# plt.rcParams["animation.html"] = "jshtml" # Animation operator
# plt.rcParams["animation.html"] = "html5" # Animation video
# ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Show animation ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
ログイン後にコピー

MovingMNIST in PyTorch

MovingMNIST in PyTorch

from torchvision.datasets import MovingMNIST
from ipywidgets import interact, IntSlider

all_data = MovingMNIST(
    root="data"
)

import matplotlib.pyplot as plt
from IPython.display import HTML

def func(i):
    plt.imshow(all_data[0].squeeze()[i])

interact(func, i=(0, 19, 1))
# interact(func, i=IntSlider(min=0, max=19, step=1, value=0))
# ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Set the start value ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
plt.show()
ログイン後にコピー

MovingMNIST in PyTorch

MovingMNIST in PyTorch

以上がPyTorch の MovingMNISTの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート