본문 바로가기

반응형

전체 글

(291)
7장 여러개를 분류 - 다중 분류 (1) 7-1 여러 개의 이미지를 분류하는 다층 신경망 다층 신경망을 만들기 위해 소프트맥스(softmax) 함수, 크로스 엔트로피(cross-entropy) 손실 함수를 알아야함 - 다중 분류 신경망 - 다중 분류의 문제점과 소프트맥스 함수 활성화 출력의 합이 1이 아니면 비교하기 어려움 소프트맥스 함수 적용하여 출력 강도 정규화 소프트맥스 함수 : 출력층의 출력 강도를 정규화(전체 출력값의 합을 1로 만듬) - 크로스 엔트로피 손실 함수의 도입 - 크로스 엔트로피 손실 함수 미분 - 다중 분류 신경망 구현 1. 소프트맥스 함수 추가 def sigmoid(self, z): z = np.clip(z, -100, None) # 안전한 np.exp() 계산을 위해 a = 1 / (1 + np.exp(-z)) # 시..
6장 2개의 층을 연결 - 다층 신경망 (4) 6-3 미니 배치를 사용하여 모델 훈련 - 미니 배치 경사 하강법 에포크마다 전체 데이터를 사용하는 것이 아니라 조금씩 나누어 정방향 계산을 수행하고, 그레이디언트를 구하여 가중치 업데이트 작게 나눈 미니 배치만큼 가중치를 업데이트 보통 16,32,64 등 2의 배수 사용 - 미니 배치 경사 하강법 구현 1. MinibatchNetwork 클래스 구현 class MinibatchNetwork(RandomInitNetwork): def __init__(self, units=10, batch_size=32, learning_rate=0.1, l1=0, l2=0): super().__init__(units, learning_rate, l1, l2) self.batch_size = batch_size # 배치 ..
6장 2개의 층을 연결 - 다층 신경망 (3) - 2개의 층을 가진 신경망 구현 1. SingleLayer 클래스를 상속한 DualLayer 클래스 만들기 class DualLayer(SingleLayer): def __init__(self, units=10, learning_rate=0.1, l1=0, l2=0): self.units = units # 은닉층의 뉴런 개수 self.w1 = None # 은닉층의 가중치 self.b1 = None # 은닉층의 절편 self.w2 = None # 출력층의 가중치 self.b2 = None # 출력층의 절편 self.a1 = None # 은닉층의 활성화 출력 self.losses = [] # 훈련 손실 self.val_losses = [] # 검증 손실 self.lr = learning_rate # 학습률..

반응형