Lesson 12 / 12

総合演習と修了

このレッスンで学ぶこと

  • コード読解の着眼点(shape・処理順・API)を横断的に総点検する
  • コース全体で学んだ実装の地図を振り返る
  • 力試し(実践模試)と次の学習ステップを決める
🎓

コース修了おめでとうございます!

全12レッスン、PyTorchのコード読解、ここまで本当にお疲れさまでした。

1. コード読解の着眼点(総まとめ)

このコースを貫いてきたのは、たった3つの着眼点でした。どんなコード問題も、結局はここに帰着します。

① shape を追う……全結合は最後の次元だけ変える/活性化は形を変えない/Conv2dは (H+2P−K)/S+1 /flattenは C×H×W

② 処理の順序……学習は zero_grad → 順伝播 → 損失 → backward → step。評価前は eval()no_grad

③ API の意味と引数……nn.Linear(in,out)Conv2d(in_ch,out_ch,K)CrossEntropyLossはsoftmax内包・MultiheadAttentionはembed_dimをnum_headsで割り切る。

2. 学んだことの地図

Unit 1: 土台(L01〜L03)

  • コード読解の着眼点
  • NumPyで順伝播(行列積・活性化)
  • NumPyで逆伝播(連鎖律・勾配チェック)

Unit 2: PyTorch基礎(L04〜L06)

  • Tensor・autograd・backward
  • nn.Module・Linear・損失関数
  • 学習ループ・最適化・正則化・DataLoader

Unit 3: 深層学習の実装(L07〜L09)

  • CNN(畳み込み・出力サイズ・im2col)
  • 学習・評価・転移学習・ResNet
  • RNN/LSTM・Self-Attention・Transformer

Unit 4: 機械学習・環境(L10〜L12)

  • パターン認識・距離・評価指標・交差検証
  • Docker・モデル軽量化・GPU/TPU
  • 総合演習・次のステップ

3. 総合演習(横断確認)

これまでの内容を横断する問題です。着眼点を思い出しながら解いてみましょう。

総合 1

CNNの出力 shape を最後まで追う

入力 (8, 3, 32, 32)Conv2d(3, 16, 3, padding=1)MaxPool2d(2) に通すと、出力 shape はどれですか。

  • A. (8, 16, 32, 32)
  • B. (8, 16, 16, 16)
  • C. (8, 3, 16, 16)
答えと解説を見る

正解:B. (8, 16, 16, 16)

Conv2d でチャネル 3→16、H/Wは (32+2−3)/1+1=32(pad=1で維持)。 MaxPool2d(2) で 32→16。よって (8, 16, 16, 16)

総合 2

学習ループのバグを見つける

次の学習ループには問題があります。どれですか。

buggy.py
for x, y in loader:
    out = model(x)
    loss = loss_fn(out, y)
    loss.backward()
    optimizer.step()
  • A. optimizer.zero_grad() が無く、勾配が累積してしまう
  • B. model(x) の順番が間違っている
  • C. 損失関数が不要
答えと解説を見る

正解:A

各ステップの先頭に optimizer.zero_grad() が必要。無いと勾配が前のステップ分に足され続け、学習が壊れます。

総合 3

CrossEntropyLoss の前に softmax は?

分類モデルで nn.CrossEntropyLoss を使うとき、モデルの最後に softmax を付けるべきですか。

  • A. 付けるべき
  • B. 付けない(CrossEntropyLossが内部でlog-softmaxを行うため)
  • C. どちらでもよい
答えと解説を見る

正解:B

CrossEntropyLoss は内部で log-softmax を行うので、モデル出力はロジットのまま渡します。 softmax を付けると二重適用になり学習が崩れます。

総合 4

Self-Attention のスコア shape

Q, K がともに (seq=6, d=16) のとき、Q @ K.T の shape はどれですか。

  • A. (6, 6)
  • B. (16, 16)
  • C. (6, 16)
答えと解説を見る

正解:A. (6, 6)

(6,16)@(16,6)=(6,6)。系列の各要素どうしの関連度なので (seq, seq) です。

総合 5

自動微分:x.grad はいくつ?

次のコードを実行すると、x.grad は何になりますか。

autograd.py
x = torch.tensor([3.0], requires_grad=True)
y = x ** 2
y.backward()
print(x.grad)
  • A. tensor([3.])
  • B. tensor([9.])
  • C. tensor([6.])
答えと解説を見る

正解:C. tensor([6.])

y = x² の微分は dy/dx = 2xx=3 なので 2×3 = 6backward() がこれを x.grad に入れます(L04)。

総合 6

評価関数のバグを見つける

次の評価関数には問題があります。正しくするにはどうしますか。

evaluate.py
def evaluate(model, loader):
    model.train()
    correct = 0
    for xb, yb in loader:
        correct += (model(xb).argmax(1) == yb).sum().item()
    return correct / len(loader.dataset)
  • A. model.train()model.eval() にし、torch.no_grad() で囲む
  • B. argmaxsum に変える
  • C. 問題ない
答えと解説を見る

正解:A

評価では model.eval()(dropout/BatchNormを評価用に)+ with torch.no_grad()(勾配を止める)が定石。train() のままだと結果がブレます(L08)。

総合 7

畳み込み層のパラメータ数

nn.Conv2d(3, 32, kernel_size=3) のパラメータ数(重み+バイアス)はいくつですか。

  • A. 864
  • B. 896
  • C. 288
答えと解説を見る

正解:B. 896

(in_ch×K×K + 1)×out_ch = (3×3×3 + 1)×32 = 28×32 = 896864 はバイアス(+1)の数え忘れ(L07)。

総合 8

この MultiheadAttention は動く?

次の行を実行するとどうなりますか。

mha.py
mha = nn.MultiheadAttention(embed_dim=20, num_heads=8)
  • A. 正常に動く
  • B. batch 次元が足りずエラー
  • C. embed_dim=20num_heads=8 で割り切れずエラー
答えと解説を見る

正解:C

各ヘッドは embed_dim/num_heads 次元を担当するので、割り切れる必要があります。20÷8 は割り切れずエラー(L09)。

総合 9

マンハッタン距離はいくつ?

次のコードの d はいくつですか。

distance.py
a = np.array([1.0, 4.0, 2.0])
b = np.array([3.0, 1.0, 2.0])
d = np.abs(a - b).sum()
print(d)
  • A. 5.0
  • B. 7.0
  • C. 3.0
答えと解説を見る

正解:A. 5.0

差は [-2, 3, 0]、絶対値は [2, 3, 0]、合計 5.0(マンハッタン距離)。ユークリッドなら √13≈3.61(L10)。

4. 力試しと次のステップ

読み解く力がついたら、次は本番形式で力試し理論の総仕上げへ。とくに注目は、このコース直結の「コーディング特化模試」(近日公開)です。

COMING SOON

🆕 E資格 実践模試(コーディング特化)

まさにこのコースで磨いたコード読解力を本番形式で力試し。コード問題に特化した実践模試を準備中です。shape・処理順・API を問う実戦的な問題+解説で、本番の「読んで答える」に直結します。

販売開始予定
2026.7.6
準備中

そのほかの学習の道も用意しています。

力試し

E資格 実践模試(100問)

本番形式の実践模試で、知識・理論の実力をチェック。数式・選択問題の解説つきで、弱点を洗い出せます(理論メインの模試)。
※ note にて販売中(有料)。

実践模試を見る →
理論を固める

E資格対策ページ

本コースは「実装の読み解き」に特化しました。合格には線形代数・確率統計・深層学習の理論も必要です。E資格対策ページで理論を重ねれば、実装感覚と両輪がそろいます。

E資格対策を見る →
土台の復習

Python / 機械学習コース

Python・NumPy・機械学習の基礎に不安が残るなら、土台のコースで固め直すと、この先の実装がぐっと楽になります。
✓ いずれも公開中・無料

機械学習入門を見る →

5. 最後に

このコースで身についたこと

  • NumPyで順伝播・逆伝播を実装し、自動微分の中身を理解した
  • PyTorchでモデルを組み、学習ループ・正則化を読めるようになった
  • CNN・RNN/LSTM・Transformer の実装と shape を追えるようになった
  • シラバス範囲の機械学習(パターン認識・評価・交差検証)を動かせるようになった
  • Docker・モデル軽量化・GPU/TPU の基礎を押さえた
  • そして何より、コードを「読んで答える」3つの着眼点が身についた

コードが読めれば、E資格のコード問題は怖くありません。ここで身につけた感覚を、ぜひ本番でも活かしてください。お疲れさまでした!

完了するとコース一覧に進捗が記録されます