はじめに

Gal Curious

プログラミングでニューラルネットワークっていうのがあるらしいけど、シンプルなものってどうやって作れるの?🧠

Geek Smiling

ニューラルネットワークはディープラーニングの基盤だね。PythonとPyTorchを使ってシンプルなものを作ってみよう!

Gal Happy

楽しそう!さっそく始めよう!🚀

ステップ1: ライブラリのインポート

Gal Eager

どんなライブラリが必要なの?

Geek Nodding

この例では、PyTorchとtorchvisionを使うよ。

import torch
import torch.nn as nn
import torchvision

ステップ2: ニューラルネットワークの定義

Gal Excited

さあ、ニューラルネットワークを作ろう!

Geek Smiling

1つの隠れ層を持つシンプルなフィードフォワードニューラルネットワークを作るよ。

class SimpleNeuralNetwork(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(SimpleNeuralNetwork, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        out = self.fc1(x)
        out = self.relu(out)
        out = self.fc2(out)
        return out

ステップ3: ニューラルネットワークのインスタンス作成

Gal Wondering

ニューラルネットワークってどう使うの?

Geek Happy

まず、目的の入力サイズ、隠れ層サイズ、出力サイズを指定してインスタンスを作成するよ。

input_size = 784
hidden_size = 100
output_size = 10

model = SimpleNeuralNetwork(input_size, hidden_size, output_size)

ステップ4: 損失関数と最適化関数の定義

Gal Curious

次は何をするの?

Geek Smiling

ネットワークを訓練するために、損失関数と最適化関数を定義する必要があるよ。

loss_function = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

ステップ5: ニューラルネットワークの訓練

Gal Excited

訓練の時間だね!🏋️‍♀️

Geek Nodding

MNISTのようなデータセットを使ってニューラルネットワークを訓練するよ。簡単のため、ここではデータセットのロードコードは含めないね。

num_epochs = 5

for epoch in range(num_epochs):
    for i, (images, labels) in enumerate(train_loader):
        images = images.view(-1, 28*28)

        # Forward pass
        outputs = model(images)
        loss = loss_function(outputs, labels)

        # Backward pass
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

おわりに

お疲れ様!PythonとPyTorchを使ってシンプルなニューラルネットワークを作成できたね。ネットワークを定義し、インスタンスを作成し、損失関数と最適化関数を定義し、ネットワークを訓練しました。ニューラルネットワークをもっと探求して楽しもう!🎉