---
title: "CNN全体のサイズ遷移まとめ（入力→出力）"
description: "CNN全体のサイズ遷移まとめ（入力→出力）について、G検定で問われる画像認識・CNN分野の観点から、画像タスクでの役割、特徴抽出の流れ、代表モデルとの関係を整理します。暗記だけでなく、似た概念との混同を避ける見分け方や、選択肢を切るためのポイントも確認します。"
canonical_url: "https://stemtazoo.github.io/gk/cnn-size-flow/"
section: "gk"
---

## まず結論

* **CNNは層ごとに「空間サイズ」と「チャネル数」がどう変わるかを見る**
* 計算問題では

  * Conv：サイズ計算あり／パラメータあり
  * Pooling：サイズ計算あり／パラメータなし
* **流れで追えると計算ミスが激減する**

---

## CNNで見るべき2つの軸

CNNの各層では、次の2点だけを追います。

1. **空間サイズ（縦×横）**
2. **チャネル数（depth）**

👉 この2つ以外は見ない

---

## 典型的なCNN構成

```
入力画像
  ↓ Conv
  ↓ Pooling
  ↓ Conv
  ↓ Pooling
  ↓ Flatten
  ↓ 全結合層
  ↓ 出力
```

---

## サイズ遷移の具体例

### 入力

* 画像サイズ：32 × 32
* チャネル数：3（RGB）

---

### ① 畳み込み層（Conv）

* カーネル：3 × 3
* パディング：1
* ストライド：1
* 出力チャネル：16

#### 空間サイズ

```
(32 + 2×1 − 3) ÷ 1 + 1 = 32
```

👉 **32 × 32（変わらない）**

#### チャネル数

* **16 に増える**

---

### ② Pooling層

* プーリング：2 × 2
* ストライド：2

#### 空間サイズ

```
(32 − 2) ÷ 2 + 1 = 16
```

👉 **16 × 16**

#### チャネル数

* **変わらない（16）**

---

### ③ 畳み込み層（Conv）

* 出力チャネル：32
* その他条件は同じ

#### 空間サイズ

* **16 × 16（維持）**

#### チャネル数

* **32 に増える**

---

### ④ Pooling層

* 2 × 2, ストライド2

👉 **8 × 8 × 32**

---

### ⑤ Flatten

```
8 × 8 × 32 = 2048
```

👉 **1次元ベクトルに変換**

---

### ⑥ 全結合層（FC）

* 入力：2048
* 出力：10

👉 **10クラス分類**

---

## よくある計算ミス（G検定）

* ❌ Poolingでチャネル数を減らす
* ❌ Convで空間サイズが必ず減ると思う
* ❌ Flatten前のサイズを間違える

---

## 超短縮チェック手順（試験中）

1. 今のサイズを書く（H×W×C）
2. Conv → サイズ計算＋C変更
3. Pooling → サイズ計算のみ
4. Flatten → 掛け算

---

## まとめ（試験直前用）

* CNNは **H×W×C を追うだけ**
* Conv：Cが変わる
* Pooling：Cは変わらない
* Flattenで一気に1次元

👉 次は **CNN計算とTransformerの対比** に進むと差が明確になる
