[신경망] 3층 신경망 구현해보기

2026. 1. 13. 22:20·AI/이론
반응형

👋 들어가기 전

 

이전 시간에 배웠던 Numpy의 행렬곱을 통해서, 3층 신경망을 직접 구현해보자.

 


🏁 학습할 내용

  • 표기법
  • 3층 신경망 구현

🔎표기법

 

먼저 간단한 표기법을 정리하고 가자.

 

  • l : 층(레이어) 번호
  • j : 앞층 뉴런 인덱스
  • i : 다음층 뉴런 인덱스

 

해석하면, 1층에서 2층으로 갈 때 사용되는 가중치이며, 이전 2번째 뉴런에서, 다음 1층 뉴런에 대해 사용됨 

 

i,j의 위치는 다른데서는 반대로 표기할 수 있음!, 나도 이전 뉴런 인덱스가 왼쪽에 있는게 편한 것 같음..

 

왜 반대로 쓰지??

 

또한 편향 = b ,가중치곱의 합 + 편향(a) ,활성화함수(z)는 모두 l과 i만 있음, j는 없음


3️⃣3층 신경망 만들어보기

 

🎯 목표 신경망

 

1️⃣ 1층 수식

2️⃣ 2층 수식

3️⃣ 3층 (출력층)

🤖 코드

import numpy as np
import matplotlib.pylab as plt

def sigmoid(x):
    return 1 / (1+ np.exp(-x))

def init_network():
    network = {}
    network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) # 2x3, 1층 가중치
    network['b1'] = np.array([0.1, 0.2, 0.3]) # 1x3 1층 편향
    network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]]) # 3x2, 2층 가중치
    network['b2'] = np.array([0.1, 0.2]) # 1x2 2층 편향
    network['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]]) # 2x2, 3층 가중치
    network['b3'] = np.array([0.1, 0.2]) # 1x2 3층 편향
    
    return network
    
    
def forward(network, x):
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']
    
    
    a1 = np.dot(x,W1) + b1 # 1층 행렬곱 + 편향
    z1 = sigmoid(a1) # 1층 활성화 함수 = sigmoid
    a2 = np.dot(z1,W2) + b2 # 2층 행렬곱 + 편향
    z2 = sigmoid(a2) # 2층 활성화 함수 = sigmoid
    a3 = np.dot(z2, W3) + b3 # 3층 행렬곱 + 편향 
    y = a3 # 3층 활성화 함수 = 항등 함수
    
    return y

network = init_network()
x = np.array([1.0, 0.5])
y = forward(network,x)
print(y)

출처

반응형

'AI > 이론' 카테고리의 다른 글

[신경망-학습] 학습이란?  (0) 2026.01.24
[신경망-MNIST] MNIST 데이터셋  (1) 2026.01.22
[신경망-활성화 함수] 소프트맥스 함수  (1) 2026.01.14
[신경망-활성화 함수] 활성화 함수  (0) 2026.01.12
퍼셉트론  (0) 2026.01.10
'AI/이론' 카테고리의 다른 글
  • [신경망-MNIST] MNIST 데이터셋
  • [신경망-활성화 함수] 소프트맥스 함수
  • [신경망-활성화 함수] 활성화 함수
  • 퍼셉트론
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (325) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (133) N
        • UIKit (37)
        • Combine (1)
        • SwiftUI (33) N
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (20)
        • 어노테이션 (6)
        • 튜토리얼 (13)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (9)
        • 이론 (9)
        • MCP (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    lifecycle
    dp
    dispatch
    Swift
    UIKit
    GIT
    IOS
    투포인터
    protocol
    백준
    Tuist
    boostcamp
    property
    프로그래머스
    AVFoundation
    concurrency
    SwiftUI
    dfs
    CS
    Spring
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
[신경망] 3층 신경망 구현해보기
상단으로

티스토리툴바