본문 바로가기

전체 글

(53)
12. TensorFlow 2.x - Image Data Augmentation 소개 참조: https://youtu.be/RuZ7SI-Yfec?si=-UtPWHupcOi5FuFw 이번 글에서는 이미지 데이터 어그멘테이션에 대해서 설명한다. Image Data Augmentation은 하나의 이미지를 약간 변형하여 학습용 데이터의 개수를 늘려 모델이 더 많은 데이터를 학습할 수 있도록 하는 것이다. 따라서 학습에 사용할 이미지 수가 적을 수록 효과적이다. 위에서 보듯이 Keras에서는 이를 위한 함수들을 아래와 같이 제공하고 있다.  위 함수들에서 고려할 사항은, image를 그대로 사용하지 못하고 array로 변형해야 한다는 것이다.코드로 확인해 보자.  위에서 언급한 것처럼 jpg 이미지를 불러온 뒤에 array로 변환하고 정규화까지 끝내고 사용하도록 한다.원본이미지는 첨부한다. 이 ..
11. TensorFlow 2.x - CNN CIFAR 10 예제 참고: https://youtu.be/qWXHuSP2wNw?si=5SELKiCsK_6GXnKY MNIST에서 흑백 숫자 손글씨 이미지, fashion MNIST에서는 흑백 의복 이미지가 학습데이터였다면,이번에는 CIFAR 10이라는 컬러로 된 이미지들로 학습시키고 추론해보고자 한다.각 이미지는 32x32x3(RGB)로,  꽤 작은 60000개의 이미지를 이용한다. 모델은 지난 글에서 소개한 모델 그대로를 사용한다. 모델을 그대로 사용하므로 테스트 이미지를 받아오는 부분과, 그 형태만 바꿔주면 될 것이다. 입력 이미지가 32x32x3의 형태이므로 입력 형태를 바꿔주는 것 외에는 달라지지 않았다. 손실함수와 최적화 방법을 정한 후 학습시켜보자.초기 정확도는 30.6%이고, 학습의 끝에서는 81.0%가 되었다..
10. TensorFlow 2.x - CNN 소개 참고: https://youtu.be/1_70qe1XBV8?si=DS8euX9WWLW-NGg1  앞 글에서 Convolution이 무엇인지 대략적인 개념에 대해서 설명했다.이번에는 이 개념을 이용한 CNN(Convolutional Neural Network)에 대해서 알아보자.위의 슬라이드는 일반적인 신경망(NN)과 CNN을 비교한 것이다.겉으로 보기에는 동일한 구조를 가지지만, 내부의 모습이 조금 다르다.  NN에서 은닉층을 convolutio이 들어가도록 구성하고 flatten 층이 있다는 점이 다르다. CNN에서 각 은닉층(여기서는 컨볼루션층)이 conv, relu, pooling으로 이루어져 있음을 알 수 있다. conv: 입력 데이터의 특징을 추출하는 역할. 어떻게 특징을 추출하는지는 다음 글에..
9. TensorFlow 2.x - Convolution 소개 참고: https://youtu.be/63Y4tP_soXc?si=MngM7gRrS5H7IY2F  CNN 이론을 이해하기 위해서는 Convolution이 어떤 것인지 먼저 알아야하는데...비전공자들은 사실 쉽지않은 개념이다. 본인도 전공과목인 신호와 시스템에서 배웠을 때도 함수의 곱을 이해하는 것조차 쉽지않기 때문에 시간이 필요했던 것으로 기억한다. 참고: https://youtu.be/_L-GifnxJZQ?si=LCmOgPvYhMytneZS&t=1452 여기서 설명하는 convolution은 연속시간계에서 이루어지는 것이고, digital system에서는 또 다르다.위의 장표에서 보듯이 두개의 함수 f(t)와 g(t)가 있다고 하고, 각각 아래와 같이 생겼다고 가정하자.사진에서의 x(t)를 우리는 f(..
8. TensorFlow 2.x - Neural Network Fashion MNIST 예제 참고: https://youtu.be/zZm0vSBswlM?si=oEc6TqPxCDdbUUmF 지난 글에서 다룬 MNIST예제는 손글씨로 쓴 0부터 9까지의 이미지를 입력하고 그 숫자를 판독하는 것이었다. 이와 비슷하게 Fashion MNIST예제는 위의 슬라이드처럼 옷이나 구두같은 패션에 관련된 이미지를 입력하여, 그 이미지가 무엇인지 판독하게 하는 문제이다. 손글씨와 마찬가지로 학습데이터는 28x28 크기의 이미지들이 60000개가 있고 테스트 데이터는 같은 크기로 10000개가 있어서 제대로 추론 되었는지 모델을 평가해 볼 수 있다. 위 슬라이드에서 딥러닝 모델을 만드는 순서에 대해 잘 정리되어 있다. 이대로 만들어보자. 위에서 말한 대로 fashion MNIST를 다운 받아서 그 크기와 개수를 확..
7. TensorFlow 2.x - Neural Network MNIST 예제 참고: https://youtu.be/AyvicBsP8tE?si=037NR0QlKNBz2ve7  영상에서는 MNIST문제를 모든 컴퓨터 언어에서 처음 배우는 "Hello world!"와 같은 수준이라고 소개한다. ㅎㅎㅎ이미지 데이터를 입력으로 사용할 때는 하나의 이미지에서 각 픽셀마다 데이터로 생각하고 1차원적으로 쭉 펴줘야 한다. MNIST 하나의 이미지는 28x28 이므로 총 784개의 픽셀로 되어있는 1x784로 만들어 주어야 한다.  당연한 이야기이지만, 딥러닝 모델을 만들려고 할 때, 입력이 어떻게 생겼는지, 출력은 무엇으로 할지 등의 구조를 먼저 잡아야 한다. 여기서의 입력 데이터는 28x28 크기의 이미지이고, 이 이미지가 6만개가 있다고 한다.슬라이드의 설명에서 볼 수 있듯이 은닉층의 개수..
6. TensorFlow 2.x - Deep Learning 소개 참고: https://youtu.be/VVKvEL9zSqE?si=cR6uMpBlXbVDgarz 머신러닝과 딥러닝의 차이점은 을 사용했는지 안했는지이다. 머신러닝: 데이터, 학습, 예측딥러닝: 데이터, 학습, 예측, 인공 신경만(ANN) 인공 신경망(Neural Network)이라고 부르는 이유는, 인간의 뇌속에서 동작하는 신경망과 유사한 방법으로 로직을 구성하기 때문이다. (단지 모양 뿐아니라, 내부적으로도 흡사하다.) 이전 글에서 다루었던 regression 예제들을 딥러닝과 구분하자면, 머신러닝의 예로 부를 수 있겠다.딥러닝에서의 특징은 사람의 신경망 처럼 은닉층 (hidden layer)가 있다는 것이다. 이 은닉층을 물론 여러개를 둘 수 있다. 그럼 실제 코드로 구현하는 방법을 살펴보자. log..
5. TensorFlow 2.x - Logistic Regression 예제 참고: https://youtu.be/eOFShZfAsNQ?si=sbaQZBlrXOpip8aa 앞의 글에서 배운 Logistic Regression 이론은 상부 그림과 같다. 테스트 데이터를 통해 선형회귀식을 구하고 이 결과를 sigmoid 함수에 넣어서 그 확률을 테스트 데이터의 정답과 비교해서 그 오차를 줄여나가는 방식이다.이것을 Keras 에서는 아래 그림과 같이 구현한다. 그림에서 보듯이 실제 계산은 노란색 원형부분에서 다 하지만, 앞에 flatten하는 부분이 필요하다. 그럼 이를 코드로 만들어 보자. 여기서는 google colab에서 동작하였고, 샘플 데이터는 링크에서 받을 수 있다. (본인 컴퓨터에서 해도 아무 문제없다.) 입력 데이터는 피마 인디언 부족의 당뇨병 발병 여부를 조사한 데이터..