기억 저장소

클라우드 기반 인공지능 개발과 DevOps 실무

인공지능/딥러닝 16

딥러닝 : 이미지 데이터 증강시키기

이미지 데이터 증강을 하는이유 ?? 이미지 데이터를 증강을 하는 이유로는 예를 들어)) 사람의 이미지를 학습시키는 과정에서 비스듬히 있거나,누워있거나,앉아있거나,상반신만 보이는 이미지 또한 있을 것이다. 하지만 학습 시킨 사람의 이미지가 서있는 이미지 뿐이라면 인공지능은 둘은 같은 사람이라고 생각하지 않을 것이다. 그렇기 때문에 기울기,상하좌우반전,상하좌우이동, 확대,축소 등등을 통해 여러 이미지를 학습시키는 방법이라 생각하면 된다. #rotation_range = 이미지의 각도를 설정한다. # width_shift_range = 사진의 이미지를 좌 우 끝으로 이동시킨다. ex) 사람을 사진의 왼쪽,오른쪽 끝으로 옮긴다. # height_shift_range = 사진의 이미지를 상 하 끝으로 이동시킨다...

딥러닝 : callback 함수 , 콜백 함수 코드 및 사용

아래의 사진은 callback 함수를 사용한 이미지를 학습시키는 코드이다. callback 함수를 쓰는 이유는 training 시키는 과정중 epoch 을 많이 시키게 되면 train 값에 대한 정확률만 높아져 오버핏팅이 되기 때문에 입력자가 정해놓은 정확도 값 이상이 되면 학습을 멈추는 것을 뜻한다. 아래 코드를 보면 두가지 방법이 있다. 차트화 import matplotlib.pyplot as plt def plot_history(history): hist = pd.DataFrame(history.history) hist['epoch'] = history.epoch plt.figure(figsize=(8,12)) plt.subplot(2,1,1) plt.xlabel('Epoch') plt.ylabel..

딥러닝 : CNN => pooling

pooling 이란 컴볼루션(Convolution)한 데이터를 더 작은 크기의 데이터로 만들기 위해 하는 것 중 하나로 특징을 가지고 가되, 크기가 작아져 컴퓨터의 효율을 높일 수 있다. pooling에는 입력자가 사이즈를 정해 정해진 사이즈의 크기 중 Max,Min,Average 최댓값, 최솟값, 평균 값중 하나를 가져와 정해진 크기에 대입하게 하여 데이터의 사이즈 크기를 줄어들게 만드는 것 을 뜻한다. 대체적으로 ANN으로 하는 것보다 CNN으로 하는 성능의 효과가 더 좋다. 사이트 참조 : https://poloclub.github.io/cnn-explainer/

딥러닝 => CNN : convolution , kernel,feature Map

행렬 사이즈를 계산하는 방법이다 위에 있는 그림을 보고 대입하면 된다 . 아래의 그림과 같이 컴볼루션(Convolution)을 하는 과정이다. 커널(kernel)이라는 랜덤값을 (대부분은 3*3사이즈이며 사이즈 값도 입력자(하이퍼 파마미터)가 대입해준다.) 대입하여 곱해준 뒤 곱한 값끼리의 커널값을 더하여 Feature Map에 넣어주는 과정을 컴볼루션이라 한다. Activaiton 함수를 Relu 를 사용하기 때문에 - 인 음수들은 0으로 고정하게 되는 점을 알아두자

딥러닝 : CNN 이미지를 학습 시 탠서플로우 로 사용하는 코드

▶ Flatten tf.keras.layers.Flatten() CNN에서 Convolution Layer와 Pooling Layer를 반복적으로 거치면서 주요 특징만 추출되는데 이 때 추출된 주요 특징은 2차원 데이터로 이루어져 있지만 Dense와 같이 분류를 위한 학습 레이어에서는 1차원 데이터로 바꾸어서 학습이 되어야 한다. 이때 Flatten Layer가 2차원 데이터를 1차원 데이터로 바꾸는 역할을 한다. 인풋 레이어에 Flatten() 을 사용하면 컴퓨터가 알아서 이미지 사이즈를 계산하여 , 인풋 레이어를 만들어준다. 입력자가 힘들게 계산할 필요가 없다. 아웃풋 레이어의 경우 10개로 분류하는 문제이므로 (노드) units = 10로 설정하며 엑티베이션 함수인 activation을 softma..