본문 바로가기

Study/혼자 공부하는 머신러닝18

혼자 공부하는 머신러닝 + 딥러닝 - 합성곱 신경망의 시각화 가중치 시각화 각 필터는 커널이라 부르는 가중치와 절편을 가지고 있다. 절편은 시각적으로 의미가 있지 않다. 가중치는 입력 이미지의 2차원 영역에 적용되어 어떤 특징을 크게 두드러지게 표현하는 역할을 한다. 이전 글에서 만든 모델이 어떤 가중치를 학습했는지 확인하고자 체크포인트 파일로 읽어오자. from tensorflow import keras model = keras.models.load_model('best-cnn-model.h5') 케라스 모델에 추가한 층은 layers 속성에 저장되어 있다. model.layers [, , , , , , , ] 보다시피 layers는 파이썬 리스트 속성이다. 첫 번째 합성곱 층의 가중치를 알아보자. 가중치와 절편은 층의 weights 속성에 저장되어 있다. we.. 2022. 4. 27.
혼자 공부하는 머신러닝 + 딥러닝 - 합성곱 신경망을 사용한 이미지 분류 이전 글에서 합성곱 신경망에 등장하는 개념들을 살펴보았다면, 이번 글에서는 이를 적용해 이미지를 분류하는 것을 진행하고자 한다. 패션 MNIST 데이터 불러오기 데이터를 불러오는 과정이 기존의 연결 신경망하고는 약간 다르다. 완전 연결 신경망에서는 이미지를 일렬로 펼쳐야하기 때문에 reshape() 메서드를 사용하거나 Flatten 클래스를 사용했다. 그렇지만, 합성곱 신경망에서는 2차원 이미지를 그대로 사용한다. 그런데 합성곱 신경망에서는 크기에 깊이라는 차원이 더해진 3차원 배열임을 상기해야한다. 기존의 2차원 배열에 차원을 추가하기 위해 reshape() 메서드를 사용하면 되는데 전체 배열 차원을 그대로 유지하면서 마지막에 차원을 추가해보도록 하자. from tensorflow import kera.. 2022. 4. 27.
혼자 공부하는 머신러닝 + 딥러닝 - 합성곱 신경망의 구성요소 이번 챕터는 합성곱 신경망에 대해서 알아보려고 한다. 합성곱 합성곱은 입력 데이터에 도장을 찍는 것과 비슷하다고 보면 된다. 본래의 인공 신경망을 생각해보면, 가중치와 절편을 랜덤하게 초기화한 다음에, 에포크를 반복하면서 경사 하강법 알고리즘을 사용하여 손실이 낮아지도록 최적의 가중치와 절편을 찾는다. 하지만 합성곱은 밀집층 계산과는 다르게 입력 데이터 전체에 가중치를 적용하는 것이 아니라 일부에 가중치를 곱한다. 3개의 가중치와 가장 처음 3개 특성와 곱해져서 1개의 출력이 만들어진다. 그 다음 한칸을 이동해서 가중치를 곱하고 1개의 출력을 얻는다. 이런 방식을 취하는 것이 합성곱이다. 이렇게 한다면 총 8개의 출력이 나타난다. 밀집층의 뉴런은 10개의 가중치를 가지고 1개의 출력을 만든다면, 합성곱의.. 2022. 4. 26.
혼자 공부하는 머신러닝 + 딥러닝 - 신경망 모델 훈련 사이킷런에서 제공하는 머신러닝 알고리즘들은 좋은 성능을 내기 위해 매개변수를 조정하고 훈련하는 과정을 반복한다. 모델의 구조가 어느 정도 고정되어 있다고 느낄 수 있다. 반면, 딥러닝은 모델의 구조를 직접 만든다는 느낌을 받을 수 있다. 손실 곡선 케라스의 fit() 메서드는 History 클래스 객체를 반환한다. History 객체에는 훈련 과정에서 계산한 지표, 손실과 정확도 값 이 저장되어 있다. 패션 MNIST 데이터셋을 훈련셋과 검증셋으로 나누고, 모델을 만들어보자. from tensorflow import keras from sklearn.model_selection import train_test_split (train_input, train_target), (test_input, test_.. 2022. 4. 21.