본문 바로가기

Study

(259)
딥러닝 / 2층 신경망을 텐서 플로우로 구현 문제133. 2층 신경망을 텐서 플로우로 구현하시오. # 1. 필요한 패키지 가져오는 코드 import tensorflow as tf # 텐써 플로우 2.0 from tensorflow.keras.datasets.mnist import load_data # 텐써플로우에 내장되어있는 # mnist 데이터를 가져온다. from tensorflow.keras.models import Sequential # 모델을 구성하기 위한 모듈 from tensorflow.keras.layers import Dense # 완전 연결계층을 구성하기 위한 모듈 from tensorflow.keras.layers import Flatten from tensorflow.keras.utils import to_categorical..
딥러닝 / 파이썬 날코딩으로 2층 신경망 전체 코드 구현 ㅇ복습 1장. numpy와 matplotlib 2장. 퍼셉트론 3장. 저자가 만들어온 가중치로 3층 신경망을 생성 4장. 우리가 직접 학습이 가능한 2층 신경망을 생성(수치미분) 5장. 우리가 직접 학습이 가능한 2층 신경망을 생성(오차역전파) 14 파이썬 날코딩으로 2층 신경망 전체 코드 구현 - p180 문제120. 어제 만들었던 2층 신경망 설계도(클래스)를 가지고 net이라는 객체를 만드시오. import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 from common.functions import * from common.gradient import numerical_gradient class TwoLayerNet: def _..
딥러닝 / 오차역전파, 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. 위의 그림처럼 단층..

반응형