본문 바로가기

Study/class note

(247)
딥러닝 / 정상 이파리와 질병 이파리 분류 신경망 만들기 9 RGB컬러 사진에 대한 이해 컬러 사진은 흑백과는 다르게 색조가 있는데 shape가 다음과 같이 구성되어 있음. (3, 28, 28) 3은 red, green, blue로 색으로 표현 문제195. 아이린 사진을 파이썬에서 시각화 하시오. from PIL import Image import numpy as np import matplotlib.pyplot as plt img = Image.open("c:\\deep\\아이린.jpg") #아이린 사진을 불러와서 img변수에 넣음 img_pixel = np.array(img) #img를 numpy배열로 변환 plt.imshow(img_pixel) #numpy 배열 시각화 print(img_pixel.shape) #(500,500,3) 설명: 학습 시킬때의 ..
딥러닝 / CNN구현 8 CNN구현하기 - p.250 # 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,Conv2D,MaxPooling2D, Flatten,BatchNormalization # 완전 연결계층, 합성곱층, pooling층, Flatten, 배치 from tensorflow.keras.utils import to_ca..
딥러닝 / 풀링계층 구현하기 6 풀링계층 구현하기 convolution층이 이미지의 특징을 잡아내는 역할을 한다면 pooling층은 feature map 이미지를 선명하는 만드는 역할. 말 그대로 출력값에서 일부분만 취하는 기능. convolution층이 이렇게 저렇게 헤집어 놓은 그림들을 가지고 feature map이미지의 각 부분에서 대표값들을 뽑아 사이즈가 작은 이미지를 만드는 것. 마치 사진을 축소하면 해상도가 좋아지는 듯한 효과와 비슷. ㅇ풀링(pooling)의 종류 3가지 1.최대풀링 : 피처맵에서 가장 큰 값을 대표값으로 선택, 이미지를 선명하게 하는 효과 2.평균풀링 : 피처맵에서 평균값을 대표값으로 선택, 이미지를 부드럽게 하는 효과 3.확률적 풀링 : 피쳐맵에서 임의 확률로 한 개를 선택, 운좋게 이미지를 좀 잘 ..
딥러닝 / 합성곱 convolution계층 설명 cnn층의 가중치는 필터인데 이 필터가 학습이 되면서 점점 원본 이미지를 잘 설명하는 형태로 변경되어감. 그동안 신경망 학습할 때 입력값과 가중치와의 "내적"을 했었는데 이 내적은 무슨 역할인가? 입력 신호와 가중치가 얼마나 유사한지를 나타내는 수치를 출력함 ㅇconvolution계층에서 일어나는 일 4가지 이미지의 특징을 추출하기 위해서 코드로 어떻게 구현했는가? 1. 원본 이미지를 im2col 함수로 2차원 행렬로 변경 2. filter를 넘파이의 reshape의 -1옵션을 이용해서 2차원 행렬로 변경 3. 2개의 2차원 행렬 내적 4. 내적한 결과 2차원 행렬을 다시 4차원으로 변경 class Convolution: def __init__(self, W, b, stride=1, pad=0): sel..
딥러닝 / 3차원 데이터의 합성곱 연산 convolution(이미지의 특징을 추출하는 역할) ---> pooling(이미지를 선명하게 해주는 역할) 5 3차원 데이터의 합성곱 연산 - p.235 우리가 앞에서 배운 합성곱은 그냥 합성곱이었고 지금부터 배울 합성곱은 3차원 합성곱. 이 세상의 모든 이미지들은 흑백보다는 컬러가 대부분. 컬러 이미지가 red, green, blue로 되어 있기 때문에 3차원. 문제155. 위 그림의 RGB입력 이미지와 RGB필터 이미지를 생성하시오. import numpy as np x2 =np.array([[[1,2,3,0], [0,1,2,3], [3,0,1,2], [2,3,0,1]], [[2,3,4,1], [1,2,3,4], [4,1,2,3], [3,4,1,2]], [[3,4,5,2], [2,3,4,5], [5..
딥러닝 / 합성곱 신경망(Convolution Neural Network) 1 합성곱 신경망 Convolution층과 pooling층을 포함하는 신경망 Convolution층 : 이미지의 특징을 잡아내는 역할 pooling층 : 이미지를 선명하게 만드는 역할 기존 신경망과의 차이? - 기존방법 : 입력값 -> Affine -> Relu -> Affine -> Relu -> Affine -> softmax (완전연결계층, fully connected) 문제점 : 사진을 사진 그대로 입력하지 않고 1차원으로 flatten시켜서 입력(1,784) - CNN : 입력값 -> convolution -> Relu -> pooling -> 완전연결계층 사진을 그대로 입력함(1,28,28) 2 CNN을 이용하지 않았을 때 기존층의 문제점 - p229 =>이미지 형상이 무시됨. 1. 필기체 이..
딥러닝 / 오버피팅 방지(드롭아웃, L2규제) ㅇ오버피팅 문제를 해결하는 방법 2가지 1. 드롭아웃 2. L2정규화 4 드롭아웃 - p219 오버피팅을 억제하기 위해서 뉴런을 임의로 삭제하면서 학습 시키는 방법 사공이 많으면 배가 산으로 간다는 속담 연상. 뉴런을 삭제하게 되면 훈련 데이터의 정확도와 테스트 데이터의 정확도가 비슷해지는 현상이 나타남. 그런데 뉴런을 너무 많이 삭제하면 훈련 데이터, 테스트 데이터 둘 다 정확도가 떨어질 수 잇음. ㅇ드롭아웃을 구성할 때 적용하는 방법 model = Sequential() model.add(Flatten(input_shape = (28,28))) model.add(Dense(50, activation = opt[i][1])) #은닉층(1층) model.add(BatchNormalization()) mo..
딥러닝 / 언더피팅 방지(경사하강법과 활성화 함수의 조합을 적절하게 조합하기) 3 경사하강법과 활성화 함수의 조합을 적절하게 조합하기 ㅇ경사하강법의 종류 1. SGD : 확률적 경사하강법으로 미니 배치 단위로 복원 추출한 데이터를 학습해서 경사하강하는 가장 일반적인 경사하강법 수식 : 가중치 = 가중치 - 러닝 레이트 * 기울기 class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): params[key] -= self.lr * grads[key] 2. Adam : 관성을 이용해서 local minimum을 빠져나가게 하는 모멘텀의 장점과 학습률을 자동 조절되게해서 경사하강하는 adagrade의 장점을 합친 경사하강법 momentum의 수식..
딥러닝 / 언더피팅 방지(가중치 초기값, 배치정규화) 6장 1. 언더 피팅을 방지하는 방법 - 가중치 초기값 설정 - 경사하강법의 종류 - 배치 정규화 2. 오버 피팅을 방지하는 방법 - 드롭아웃 - L2 정규화(가중치 감소) 1 가중치 초기값 - p202 신경망 초기 셋팅시 랜덤으로 생성되는 가중치 W와 바이어스 b의 초기갓을 어떻게 선정하느냐에 따라서 학습이 잘 될수도 있고 잘 안될수도 있음. 학습이 잘 되려면 가중치 초기값들의 분포가 정규분포 형태를 이루어야 함. class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01): # 가중치 초기화 self.params = {} self.params['W1'] = weight_init_std *..
딥러닝 / 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..

반응형