반응형
입력층 3, 은닉층 4, 출력층 2인 경우

레이어 개수
→ 입력층(1) + 은닉층(1) + 출력층(1) = 3개
은닉층 개수
→ 1개
은닉층 노드 수
→ 4개 (1개의 은닉층에 4개의 뉴런)
파라미터 수 (가중치 + 편향)
입력층(3) → 은닉층(4):
- 가중치 : 3 × 4 = 12
- 편향 : 4
은닉층(4) → 출력층(2)
- 가중치 : 4 × 2 = 8
- 편향 : 2
총 파라미터 수 = 12 + 4 + 8 + 2 = 26
입력층 4, 은닉층 5 / 3 / 2, 출력층 1인 경우

입력층 → 은닉층1
- 가중치 : 4×5=20
- 편향 : 5
- 합 = 25
은닉층1 → 은닉층2
- 가중치 : 5×3=15
- 편향 : 3
- 합 = 18
은닉층2 → 은닉층3
- 가중치 : 3×2=6
- 편향 : 2
- 합 = 8
은닉층3 → 출력층
- 가중치 : 2×1=2
- 편향 : 1
- 합 = 3
→ 54개
→ 편향이 없는 경우는 43개 (4x5 + 5x3 + 3x2 + 2x1)
입력층 4, 은닉층 6 / 6 / 6, 출력층 4인 경우

입력층 → 은닉층1
- 가중치 : 4×6=24
- 편향 : 6
- 합 = 30
은닉층1 → 은닉층2
- 가중치 : 6×6=36
- 편향 : 6
- 합 = 42
은닉층2 → 은닉층3
- 가중치 : 6×6=36
- 편향 : 6
- 합 = 42
은닉층3 → 출력층
- 가중치 : 6×4=24
- 편향 : 4
- 합 = 28
→ 142개
→ 편향이 없는 경우는 120개 (4x6 + 6x6 + 6x6 + 6x4)
import matplotlib.pyplot as plt
import networkx as nx
# 각 층의 노드 개수
layers = [4, 5, 3, 2, 1]
# 노드 위치 계산
pos = {}
layer_gap = 3
node_gap = 1
for i, num_nodes in enumerate(layers):
for j in range(num_nodes):
pos[(i, j)] = (i * layer_gap, j * node_gap - (num_nodes-1)*node_gap/2)
# 그래프 생성
G = nx.DiGraph()
for i in range(len(layers)-1):
for j in range(layers[i]):
for k in range(layers[i+1]):
G.add_edge((i,j), (i+1,k))
# 그림 그리기
plt.figure(figsize=(12,6))
nx.draw(G, pos, with_labels=False, node_size=600, node_color="skyblue", arrows=False)
# 층 이름 추가
layer_names = ["Input (4)", "Hidden1 (6)", "Hidden2 (6)", "Hidden3 (6)", "Output (4)"]
for i, name in enumerate(layer_names):
x = i * layer_gap
y = (layers[i]-1) * node_gap / 2 + 1.5
plt.text(x, y, name, ha="center", fontsize=12, fontweight="bold")
plt.axis("off")
plt.show()반응형
'개발 > Python' 카테고리의 다른 글
| 이상치 탐지 vs 특이치 탐지 (0) | 2025.10.20 |
|---|---|
| 합성곱 신경망 (Feature Map) (0) | 2025.10.20 |
| 차트 (0) | 2025.10.14 |
| Ridge, Lasso, Elastic Net (2) | 2025.10.11 |
| 스케일링 (0) | 2025.10.11 |
댓글