일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 상속
- 정보처리기사실기
- 컴퓨터비전
- 연습문제
- 중학수학
- 중학1-1
- CSS
- 자바스크립트
- 자바
- ChatGPT
- 정보처리기사필기
- 자바 실습
- 파이썬
- 개발일기
- JSP
- 혼공머신
- 디버깅
- html/css
- 데이터분석
- 컴퓨터구조
- 자바스크립트심화
- JSP/Servlet
- 데이터베이스
- 머신러닝
- rnn
- 딥러닝
- SQL
- 순환신경망
- c언어
- JDBC
- Today
- Total
목록인공지능/딥러닝 (99)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
이번 단원도 무척 길어서 두 개의 포스트로 나누어 작성할 예정이다. 단순한 모델 생성도 많이 어려웠는데 이번에는 복잡한 모델을 생성해 볼 것이다.텐서플로 케라스의 Functional API를 사용하면 Sequential API로 구현할 수 없는 복잡한 구조의 모델을 정의할 수 있다. 예를 들면, 각 레이어를 기준으로 입력이 2개 이상이거나 출력이 2개 이상인 모델을 만들 수 있다. 또는 중간에 있는 레이어들을 건너뛰고 뒤쪽에 있는 레이어로 출력 텐서를 전달하는 방식으로 직접 연결하는 방법도 가능하다. 데이터셋 준비필요한 라이브러리와 mnist 데이터셋을 불러와서 훈련 데이터셋과 검증 데이터셋으로 구분하여 저장한다. 원본 mnist 데이터셋은 0~9까지 숫자를 손글씨로 쓴 이미지(x)와 정답(y) 숫..
어제 공부한 시간을 체크해 보니 무려 18시간이나 되었다. 잠자는 시간을 빼고 모두 공부를 했다는 말이었다. 어제는 딱 1시간을 잤지만 오늘을 6시간을 푹 자고 일어나니 몸과 마음이 정말 개운하니 좋았다. 어제를 마지막으로 2가지를 끊어보기로 했다. 15년도 넘게 되지 않았던 부분이지만 올해가 가기 전에 반드시 이루려고 한다.기록을 초기화하려고 일부러 이틀 동안 루틴 설정을 하지 않았지만 다시 루틴과 함께 하루를 시작해 본다. 루틴 앱이 없이도 얼마나 잘할 수 있는지 스스로를 테스트해보고 싶었다. 근데 정말 잘할 수 있다는 걸 알게 되었다. 그럼 공부를 바로 시작해 볼 것이다. 모델 구조 파악모델 인스턴스에 summary() 메서드를 적용해 주면, 모델의 구조를 요약해서 보여준다. 각 레이어의 이름..
이번에는 케라스 모델을 구성할 때 사용한 mnist 손글씨 데이터셋을 가지고 간단한 구조의 합성곱 신경망 모델을 만들어본다. 데이터 로드 및 전처리먼저 텐서플로 라이브러리를 불러온다. 데이터셋을 불러오면 훈련 셋과 검증 셋으로 구분해서 튜플 형태로 정리해 준다. 훈련 셋의 개수는 60000개, 검증 셋의 개수는 10000개이다. 가로, 세로 각각 28픽셀인 손글씨 이미지와 손글씨가 나타내는 숫자 레이블(정답)이 매칭되어 있다. 훈련 셋의 첫 번째 (인덱스 0) 이미지를 출력해 본다. 숫자 5에 대한 손글씨 이미지가 보인다. 훈련 셋과 검증 셋의 이미지 픽셀을 나타내는 값의 최소값, 최댓값을 출력한다. 이미지 픽셀이 0~255 범위의 숫자로 구성된 것을 파악할 수 있다. 딥러닝 모델의 안정..
저녁을 먹고 아침에 하다 말았던 딥러닝 공부를 다시 시작해 본다. 사실 식사하기 전에 30분 정도 공부를 했었는데 수업 영상이 중간에 잘리기도 하고 제공된 코드도 없어서 도저히 진행할 수가 없었다. 선생님께 자료를 요청했으나 답장이 없어 그냥 원래 없다고 생각하고 넘어가기로 했다.책에도 자세한 내용이 나와있으니 부족하면 책으로 공부를 진행하면 된다. 엊그제는 케라스 공부를 마쳤는데 오늘과 내일까지 이틀 동안 CNN 공부를 마쳐볼 생각이다. 합성곱 신경망(CNN : Convolutional Neural Network)은 데이터가 가진 특징들의 패턴을 학습하는 알고리즘으로 컴퓨터 비전 분야에서 많이 사용된다. 대표적으로 이미지 분류, 객체 탐지, 스타일 전이 등을 예로 들 수 있다.아래 그림은 이미지 ..
이제 CNN을 활용한 개, 고양이를 분류하는 실습을 진행해보려고 한다. 개와 고양이를 분류하는 실습 해보기 먼저 데이터 폴더에 압축 파일 형태로 선생님이 올려주신 파일을 업로드했다. 여기서 압축 파일 형태로 저장하는 이유는 넘파이로 저장하면 용량이 커지기 때문에 압축 파일에서 npz 파일로 변환하는 작업을 진행한다.압축 파일 형태이기 때문에 코드로 압축을 해제할 수 있다. 압축을 해제한 다음에는 크기 조정도 한다. 그 이유는 딥러닝 모델에서는 이미지 크기가 제각각이라 크기를 동일하게 조정해 준다. 그런 다음 이 이미지를 넘파이 배열인 숫자 형태로 변환한 후 다시 npz 형식으로 저장한다. 구글 드라이버는 클라우드 형태로 저장되기 때문에 이것을 내 작업 공간으로 옮기는 작업이 필요하다. 절대 ..
조금 늦은 아침을 먹고 이이서 딥러닝 실습을 시작해 보겠다. 합성곱 신경망 실습해 보기 라이브러리와 손글씨 데이터를 불러온 다음, 훈련 데이터와 테스트 데이터로 나눈다. 데이터의 크기를 확인하면 이와 같다. 이미지 색상은 어떻게 작성할 수 있을까? 0부터 9까지의 숫자가 출력된다. 이미지 분석을 할 때 특징을 추출하는 층을 넣어준다. Maxpooling 과정에서 특징이 아닌 부분을 삭제하는 과정을 거친다. 이렇게 CNN 층을 구성했다. 모델이 저장된 폴더의 경로를 복사해서 붙여 넣고 뒤에 에포크와 정확도도 표시해 준다. 그리고 모델 객체를 생성한다. 오류가 많아서 코드를 정말 많이 수정했다. 수업을 들으면서 코드를 작성하니 틀리게 적는 부분이 정말 많았다..
오늘 새벽부터 아침 9시까지 이력서와 포트폴리오를 수정하는데 시간을 보냈다. 아마 6시간 정도 걸린 것 같다. 또 오늘 모의 면접도 있는데 과연 잘할 수 있을지 걱정이 되기도 한다. 그래도 잘하리라 믿고 이제 아침 공부를 시작해보려고 한다. 사실 새벽에 잘 안 되는 코드가 있어서 그걸 연구하는데 너무나 많은 시간을 보내기도 했다. 결국 원하는 대로 해결은 못했지만 그래도 한 과정을 끝낼 수 있어서 정말 기뻤다. 이제 오늘 아침부터는 CNN 공부를 하려고 한다. 오후에 면접이 있으니 그전에 준비해야 할 것도 있어서 오늘은 이틀 치의 수업만 공부할 생각이다. CNN의 개념 학습 선형 모델이 이미지의 위치에 대해 학습하기에 위치에 민감하게 반응한다. 흰색과 검은색의 위치값을 학습하는데 한 칸만 움..
합성곱 신경망의 학습을 시각화하는 두 번째 방법은 합성곱 층에서 출력된 특성 맵을 그려보는 것이다. 이를 통해 입력 이미지를 신경망 층이 어떻게 바라보는지 엿볼 수 있다. 합성곱 층의 출력을 만들기 전에 케라스 함수형 API에 대해 먼저 알아보겠다. 함수형 API지금까지는 신경망 모델을 만들 때 케라스 Sequential 클래스를 사용했다. 이 클래스는 층을 차례대로 쌓은 모델을 만든다. 딥러닝에서는 좀 더 복잡한 모델이 많이 있다. 예를 들어 입력이 2개일 수도 있고 출력이 2개일 수도 있다. 이런 경우는 Seqeuntial 클래스를 사용하기 어렵다. 대신 함수형 API를 사용한다.함수형 API는 케라스의 Model 클래스는 사용하여 모델을 만든다. 간단한 예를 들어보겠다. 7장에서 만들었던 De..
이번에는 합성곱 신경망 시각화에 대해서 공부해 보겠다. 합성곱 층의 가중치와 특성 맵을 시각화 하여 신경망이 이미지에서 어떤 것을 학습하는지 이해해 본다. 시작하기 전에이번 절에서는 합성곱 층이 이미지에서 어떤 것을 학습했는지 알아보기 위해 합성곱 층의 가중치와 특성 맵을 그림으로 시각화해 보겠다. 지금까지는 케라스의 Sequential 클래스만 사용했다. 케라스는 좀 더 복잡한 모델을 만들 수 있는 함수형 API를 제공한다. 함수형 API가 무엇인지 살펴보고 합성곱 층의 특성 맵을 시각화 하는 데 사용해 본다. 이전 절에서 훈련했던 합성곱 신경망의 체크포인트 파일을 사용한다. 이 파일은 최적의 에포크까지 훈련한 모델 파라미터를 저장하고 있다. 가중치 시각화합성곱 층은 여려 개의 필터를 사용해 이미..
이어서 합성곱 신경망을 사용한 이미지 분류 학습을 진행해 보겠다. 모델 컴파일과 훈련케라스 API의 장점은 딥러닝 모델의 종류나 구성 방식에 상관없이 컴파일과 훈련 과정이 같다는 점이다. 다음 코드는 완전 연결 신명망을 컴파일하고 훈련하는 코드와 거의 같다.Adam 옵티마이저를 사용하고 ModelCheckpoint 콜백과 EarlyStopping 콜백을 함께 사용해 조기 종료 기법을 구현한다. 얼핏 보아도 훈련 세트의 정확도가 이전보다 훨씬 좋아진 것을 알 수 있다. 손실 그래프를 그려서 조기 종료가 잘 이루어졌는지 확인해 보겠다. 검증 세트에 대한 손실이 점차 감소하다가 정체되기 시작하고 훈련 세트에 대한 손실은 점점 더 낮아지고 있다. 이 그래프를 기반으로 아홉 번째 에포크를 최적으로 생각할..