본문 바로가기

전체 글

(270)
딥러닝 / 오차역전파, Affine 계층 구현 ㅇ역전파 1단계 시그모이드 함수의 계산 그래프 순전파일때는 x값이 필요하지만 역전파일때는 y값이 필요하므로 y로 치환함. ㅇ역전파 2단계 - p.168 덧셈노드는 상류의 값을 여과없이 그대로 하류로 내려보내는게 전부 ㅇ역전파 3단계 - p.168 ㅇ역전파 4단계 - p.169 곱셈 노드의 역전파는 순전파일때 상대편쪽에서 보냈던 값을 곱해주는 것. 순전파일때는 입력값 x가 필요했지만 역전파일때는 y값이 필요하므로 x를 y로 치환해야 함. 지금까지 만든 계산 그래프로 구현한 계층 2가지 1. 렐루함수 계층 2. 시그모이드 함수 계층 -------------------------------------------------------- 앞으로 구현할 것 3. Affine 계층 4. softmax 함수 계층 11..
딥러닝 / 오차역전파를 이용한 2층 신경망 구현 ㅇ복습 1장. numpy와 matplotlib 2장. 퍼셉트론(가중치가 왜 갱신되어야 하는지 원리 이해) 3장. 3층 신경망 구현(저자가 만들어온 가중치를 신경망에 세팅해서 구현) 4장. 2층 신경망 구현(날코딩 -> 수치미분 이용) 5장. 2층 신경망 구현(날코딩 -> 오차 역전파 이용) 5장. 오차역전파를 이용한 2층 신경망 구현 4장에서 수치미분을 이용한 신경망을 생성해서 mnist 필기체 데이터를 학습 시켰는데 학습이 너무 느려서 우리가 끝까지 학습 시키지 않았음. 수치미분이 너무 느리므로 신경망을 학습 시킬때는 오차 역전파를 이용해서 학습 시킴. 수치미분으로 기울기를 구하는 함수(numerical_gradient) vs 오차 역전파로 기울기를 구하는 함수(gradient) 1 오차역전파로 기울기..
딥러닝 / 패션 mnist 신경망에 사진을 넣고 잘 예측하는지 확인하기(+구글 코랩) 11 패션 mnist 신경망에 사진을 넣고 잘 예측하는지 확인하기 패션 mnist 데이터는 옷과 신발, 가방과 같은 데이터셋인데 28x28의 흑백이미지 데이터입니다. 문제81. 패션 mnist 데이터를 불러와서 이미지 하나를 시각화하시오. # 1. 패션 mnist 데이터를 불러오는 코드 import tensorflow as tf from tensorflow.keras.datasets.fashion_mnist import load_data (x_train, y_train), (x_test, y_test) = load_data() print(x_train.shape) #(60000,28,28) #2. 시각화 하는 코드 import matplotlib.pyplot as plt aa = x_train[0].re..
딥러닝 / 날코딩으로 2층 신경망 클래스 구현 10 파이썬 날코딩으로 2층 신경망 클래스 구현하기 - p.137 1. 텐서플로우를 이용했을 때 -> 구현이 쉽고 빠름 2. 텐서플로우를 이용하지 않았을 때 -> 신경망을 만드는게 어렵지만 원리를 이해하는데 좋음 아래와 같이 신경망 설계도를 클래스로 생성하는 이유는? -> 객체로 찍어내기 편해서 #1. 필요한 패키지를 불러옵니다 import sys, os sys.path.append(os.pardir) import numpy as np from common.functions import softmax, cross_entropy_error #필요한 패키지(common)를 홈디렉토리에 미리 가져다 놔야함 #2. 단층신경망 클래스 생성 class simpleNet: def __init__(self): self..
딥러닝 / 경사하강법, 러닝 레이트 8 경사하강법 - p.129 오차가 최소화 되는 지점을 찾아가기 위해 global minimum 으로 내려오는 방법들 ㅇ경사하강법의 종류 ? 1. SGD(Stochastic Gradient Descent) 2. momentum 3. Adagrade 4. Adam 1.SGD(stochastic gradient descent) : 확률적 경사하강법 GD(gradient descent)는 학습 데이터를 다 입력하고 한 걸음 이동하는 경사감소법입니다. 그래서 GD는 학습하는데 시간이 많이 걸립니다. 일부 표본을 뽑아서 입력하는데 어제 배운 미니배치에 GD를 결합한 방법으로 학습하는데 확률적 경사하강법입니다. SGD는 아래로 내려올 때 심하게 지그재그로 내려옵니다. 배치의 크기가 크면 지그재그의 정도가 덜한데, ..
딥러닝 / 텐서플로우로 신경망 구현하기 7 텐서플로우로 2층 신경망 구현하기 - p.137 필기체 데이터를 학습 시키는 2층 신경망을 책과 똑같이 구성 #1. 필요한 패키지를 불러옵니다 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten import numpy as np tf.random.set_seed(777) #2. 모델 구성 model = Sequential() model.add(Flatten(input_shape=(784,))) #입력층(0층) model.add(Dense(100,activation = 'sigmoid')) #은닉층(1층) model.add(Dense(10..
딥러닝 / 미니배치, 수치미분, 편미분, 신경망에서 기울기 3 미니배치 - p.115 훈련 데이터중에 일부만 골라서 학습하는 방법 표본을 뽑아서 학습 시킴 ex1. 6만장을 한번에 신경망에 넣어서 학습시키는게 가능한가? 수학적으로는 가능하지만 컴퓨터로는 불가능. 컴퓨터 메모리가 초과하면서 out of memory 에러 남. ex2. 6만장 중에 1장씩 뽑아서 학습 시키는 것은 가능한가? 학습은 되지만 시간이 너무 오래 걸림 ex3. 6만장 중에 100장씩 뽑아서 학습시킨다면? 데이터 6만장을 100장 단위로 입력. 학습을 빠르게 할 수 있음.(행렬계산에 최적화된 numpy모듈이 있기 때문) 이때 100장의 데이터는 랜덤으로 추출(복원 추출)된다. 100장씩 600번을 학습시키면 그게 바로 1epoch. 예제1. 숫자 1 ~ 60000까지의 숫자들 중에서 무작위로..
딥러닝 / 크로스엔트로피 오차함수, 평균 제곱 오차함수 4장의 학습내용 : 신경망을 학습 시키기 위해서 알아야 하는 내용 3가지 1. 오차함수 : 신경망이 뭘 잘못하고 있는지 깨닫게 해주는 함수 오차함수에 정답 데이터와 예측 데이터를 넣어서 오차가 어떻게 되는지 확인합니다. 2. 미니배치 : 학습할 때 데이터를 한꺼번에 신경망에 넣는게 아니라 몇백장씩 조금씩 신경망에 넣고 학습시키는 것 3. 수치미분 : 모델의 기울기를 구해서 기울기만큼 가중치를 갱신할 때 필요 1 크로스 엔트로피 오차함수 - p.111 오차함수는 신경망이 뭘 잘못하고 있는지 깨닫게 해주는 함수 1. 평균 제곱 오차함수(mean squared error) : 회귀분석할 때 사용 2. 교차 엔트로피 오차함수(cross entropy error) : 분류할 때 사용 문제52. 위의 그림처럼 단층..
딥러닝 / 배치처리 14 배치처리 - p.102 mnist 필기체 데이터의 경우 훈련 데이터가 6만장이나 되므로 6만장을 한번에 신경망에 넣고 학습을 시키게 되면 컴퓨터 메모리가 초과해서 수행되지 않는다고 하면서 수행이 안됩니다. ex. 사람도 책을 볼 때 한장씩 읽으면서 봐야하듯이 컴퓨터도 한권 책(6만장)을 한번에 볼 수 없습니다. 위와 같이 한장씩 학습 시키면 메모리 부족 오류는 나지 않는데 시간이 너무 오래 걸립니다. 컴퓨터의 능력을 충분히 활용하려면 다음과 같이 배치처리를 해야합니다. 배치단위는 주로 100개씩 처리하는데 100개씩 처리하면 신경망 학습할 때 600번을 반복하면 60000장을 다 학습할 수 있게 됩니다. 100개씩 600번 학습해서 6만장을 다 학습한 것을 1에폭(epoch)이라고 합니다. 코드 예..
딥러닝 / 손글씨 필기체 인식하는 신경망 만들기 ㅇ 신경망에 들어가는 함수 3가지 1. 활성화 함수 : 은닉층의 뉴런에 들어가는 함수이고 신호를 다음 뉴런으로 보낼때 신호의 정도를 결정하는 함수 - 계단함수, 시그모이드, 렐루, 하이퍼볼릭 탄젠트 함수 2. 출력층 함수 : 은닉층에서 보내온 신호들을 좋바해서 결론을 내주는 함수(확률벡터로 결론을 내줌) - 소프트맥수(분류용), 항등함수(회귀분석용) 3. 오차함수 : 신경망의 잘못을 깨닫게 해주는 함수 - 크로스엔트로피 함수(분류용), 평균제곱 오차(회귀분석용) ex. 이미분 분류가 실생활에서 사용되는 예 물품검색대에서 위반 물품 적발, 암여부 악성/양성 판별 11 손글씨 필기체 숫자를 인식하는 신경망 만들기 - p.96 mnist데이터는 숫자 0~9까지의 숫자 이미지로 구성되어 있고 훈련 데이터가 6만..

반응형