본문 바로가기

반응형

딥러닝 학습

(27)
7장 여러개를 분류 - 다중 분류 (3) 7-1 텐서플로와 케라스를 사용하여 신경망 만들기 - 케라스(Kears API) 딥러닝 패키지를 편리하게 사용하기 위해 만들어진 래퍼(Wrapper) 패키지 - 텐서플로 신경망 구현 # 훈련할 가중치 변수 선언 w = tf.Variable(tf.zeros(shape=(1))) b = tf.Variable(tf.zeros(shape=(1))) # 경사하강법 옵티마이저 설정 optimizer = tf.optimizers.SGD(lr = 0.01) #에포크 횟수만큼 훈련 num_epochs = 10 for step in range(num_epochs): # 자동 미분을 위한 연산 과정 기록 with tf.GradientTape() as tape: z_net = w * x_train + b z_net = tf...
7장 여러개를 분류 - 다중 분류 (2) - 의류 이미지 분류 (패션 MNIST) - 의류 데이터 준비 ※ 텐서플로 최신 버전 설치 !pip install tensorflow_gpu==2.6.0 1. 텐서플로 임포트 import tensorflow as tf 2. 텐서플로 버전 확인 tf.__version__ ##출력: '2.6.0' 3. 패션 MNIST 데이터 세트 불러오기 (x_train_all, y_train_all), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data() 4. 훈련 세트의 크기 확인 print(x_train_all.shape, y_train_all.shape) ##출력: (60000, 28, 28) (60000,) 5. imshow() 함수로 샘플 이미지 확인 i..
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 # 학습률..
6장 2개의 층을 연결 - 다층 신경망 (2) 6-2 2개의 층을 가진 신경망 구현 - 하나의 층에 여러개 뉴런 사용 - 출력을 하나로 모으기 - 은닉층이 추가된 신경망 - 다층 신경망 개념 정리 n개의 입력이 m개의 뉴런으로 입력 은닉층을 통과한 값들은 출력층으로 모임 활성화 함수는 층마다 다를 수 있지만 한 층에서는 같아야 함 모든 뉴런이 연결되어 있으면 완전 연결 신경망 - 다층 신경망에 경사 하강법 적용 ※ 해당 내용은 의 내용을 토대로 학습하며 정리한 내용입니다.
6장 2개의 층을 연결 - 다층 신경망 (1) 6-1 신경망 알고리즘을 벡터화하여 한 번에 전체 샘플 사용 - 벡터화 벡터화(vectorization)된 연산을 사용하면 알고리즘의 성능을 높일 수 있음 - 벡터 연산과 행렬 연산 - SingleLayer 클래스에 배치 경사 하강법 적용 1. 넘파이와 맷플롯립 임포트 import numpy as np import matplotlib.pyplot as plt 2. 위스콘신 유방암 데이터 세트를 훈련, 검증, 테스트 세트로 나누기 from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split cancer = load_breast_cancer() x = cancer.data y = cance..
5장 훈련 노하우 배우기 (3) - 로지스틱 회귀에 규제 적용 1. 그레이디언트 업데이트 수식에 페널티 항 반영 def __init__(self, learning_rate=0.1, l1=0, l2=0): self.w = None self.b = None self.losses = [] self.val_losses = [] self.w_history = [] self.lr = learning_rate self.l1 = l1 self.l2 = l2 2. fit() 메서드에서 역방향 계산 수행 시 그레이디언트에 페널티 항의 미분값 더함 def fit(self, x, y, epochs=100, x_val=None, y_val=None): self.w = np.ones(x.shape[1]) # 가중치를 초기화합니다. self.b = 0 # 절편을..
5장 훈련 노하우 배우기 (2) 5-2 과대적합과 과소적합 - 학습 곡선을 통한 과대적합과 과소적합 알아보기 과대적합(overfitting): 모델이 훈련 세트에서는 좋은 성능을 내지만 검증 세트에서는 낮은 성능을 내는 경우 과소적합(underfitting): 훈련 세트와 검증 세트의 성능에는 차이가 크지 않지만 모두 낮은 성능을 내는 경우 훈련 세트의 크기와 과대적합, 과소적합 분석 첫번째 곡선: 과대적합 (분산이 크다: high variance) 두번째 곡선: 과소적합 (편향이 크다: high bias) 세번째 곡선: 과대적합과 과소적합 사이 절충점 찾은 것 에포크와 손실 함수 그래프로 과대적합과 과소적합 분석 왼쪽 그래프: 검증 세트의 손실과 훈련 세트의 손실 (최적점 이후에도 계속해서 훈련세트로 모델을 학습시키면 모델이 과대적합..
5장 훈련 노하우 배우기 (1) 5-1 검증 세트를 나누고 전처리 과정 배우기 - 테스트 세트로 모델 튜닝 로지스틱 회귀로 모델 훈련하고 평가 1) cancer 데이터 세트를 읽어 들여 훈련 세트와 테스트 세트로 나눔 from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split cancer = load_breast_cancer() x = cancer.data y = cancer.target x_train_all, x_test, y_train_all, y_test = train_test_split(x, y, stratify = y, test_size=0.2, random_state=42) 2) SGDClassifier ..

반응형