목록케라스 (7)
안 쓰던 블로그
케라스에서 커스텀 Attention(Layer)를 사용할 때 add_weight() got multiple values for argument 'name' 에러 1. class Attention(Layer) -> class Attention(keras.layers.Layer) 변경 2. add_weights 메소드 안에 Add shape=(...) 추가 두 가지로 해결 class Attention(tf.keras.layers.Layer): # 여기 def __init__(self, step_dim, ... def build(self, input_shape): assert len(input_shape) == 3 self.W = self.add_weight(shape=(input_shape[-1],), # ..
kaggle - Dogs vs. Cats 1. 소규모 데이터셋에서 CNN 훈련하기(Dogs vs. Cats 데이터셋) https://foxtrotin.tistory.com/473 2. 사전 훈련된 CNN 사용하기 (ImageNet 데이터셋, VGG16 모델) https://foxtrotin.tistory.com/486 3. 미세 조정 https://foxtrotin.tistory.com/507 케라스 창사자에게 배우는 딥러닝 5장을 개인적으로 공부한 내용을 덧붙여 정리한 글입니다. 컴퓨터 비전 작업 중 매우 적은 데이터를 사용해 이미지 분류 모델을 훈련하는 일은 흔하게 만날 수 있을 것이다. '적은' 샘플이란 보통 수백 개~수만 개 사이를 의미한다. 이번 글에서는 4,000개의 강아지와 고양이 사진(2,..
케라스 창시자에게 배우는 딥러닝 - 5장을 요약 정리한 글입니다. 컨브넷(convnet)또는 합성곱 신경망이라고 불리는 CNN에 대해서 공부한다. 합성곱 신경망에 대해 하기 전에, 완전 연결망과의 차이를 한 번 짚고 간다. 완전 연결 네트워크(Fully connected network)과의 차이 완전 연결 네트워크는 densely connected 밀집 연결이라고도 한다. 같은 테스트 데이터에서 완전 연결된 모델보다 간단한 컨브넷이 더 잘 작동한다. 왜 그럴까? 바로 완전 연결 층과 합성곱 층 사이의 차이 때문에 그렇다. Dense 층은 입력 특성 공간에 있는 전역 패턴(예: MNIST 숫자 이미지에서 모든 픽셀에 걸친 패턴)을 학습하지만 합성곱 층은 지역 패턴(예: 숫자 이미지의 작은 특징들)을 학습한..
머신 러닝의 네 가지 분류 1. 지도 학습 사람이 레이블링한 샘플 데이터가 주어지면 알고 있는 꼬리표(타깃)에 입력 데이터를 매핑한다. 가장 흔한 경우이며, 이진 분류, 다중 분류, 스칼라 회귀는 전부 지도 학습에 포함된다. 문자 판독, 음성 인식, 이미지 분류, 언어 번역 같은 딥러닝의 거의 모든 애플리케이션이 일반적으로 이 범주에 속한다. 대부분 분류와 회귀로 구성되지만 변종도 있다 변종의 예 -시퀀스 생성: 사진이 주어지면 이를 설명하는 캡션 생성 -구문 트리 예측: 문장이 주어지면 분해된 구문 트리를 예측 -물체 감지: 사진이 주어지면 사진 안의 특정 물체 주위에 경계 상자를 그린다. 상자를 분류하는 분류 문제나, 경계 상자의 좌표를 벡터 회귀로 예측하는 회귀와 분류과 결합된 문제로 표현할 수 있..
앞선 글에서 이진 분류과 다중 분류, 즉 분류 문제를 다루었다. 분류 문제는 입력 데이터 포인트의 개별적인 레이블 하나를 예측하는 것이 목적이다. 또 다른 종류의 머신 러닝 문제에는, 개별적인 레이블 대신에 연속적인 값을 예측하는 회귀(regression)가 있다. 예를 들어 기상 데이터가 주어졌을 때 내일 기온을 예측하거나 소프트웨어 명세가 주어졌을 때 소프트웨어 프로젝트가 완료될 시간을 예측하는 등의 일을 한다. (참고로 로지스틱 회귀 알고리즘은 이름만 회귀이지 회귀 알고리즘이 아니라 분류 알고리즘이다. 로지스틱 회귀는 선형 회귀의 분류 버전으로 중간층이 없고 하나의 유닛과 시그모이드 활성화 함수를 사용한 출력층만 있는 네트워크와 비슷하다.) 보스턴 주택 가격 데이터셋 1970년 중반 보스턴 외곽 지..
이중 분류는 2개의 클래스가 있을 때 분류하는 방법이다. 그러면 2개 이상의 클래스가 있으면 어떻게 해야 할까? 클래스가 많은 문제는 다중 분류multiclass classification을 한다. 여기서는 로이터 뉴스를 46개의 상호 배타적인 토픽으로 분류하는 신경망을 예시로 다중 분류를 알아본다. 각 데이터 포인트가 정확히 하나의 범주로 분류되기 때문에 좀 더 정확히 말하면 단일 레이블 다중 분류 문제라고 할 수 있다. 각 데이터 포인트가 여러 개의 범주(예: 토픽)에 속할 수 있다면 다중 레이블 다중 분류 문제가 된다. 로이터 데이터셋 1986년에 로이터에서 공개한 짧은 뉴스 기사와 토픽의 집합인 로이터 데이터셋을 사용하겠다. 이 데이터셋은 텍스트 분류를 위해 널리 사용되는 간단한 데이터셋이다. 4..
인터넷 영화 데이터베이스로부터 생성된 양극단의 리뷰 50,000개로 이루어진 IMDB 데이터셋을 사용하여 이진 분류를 실습해 보겠다. 이 데이터셋은 훈련 데이터 25,000개와 테스트 데이터 25,000개로 나뉘어 있고 각각 50%는 부정, 50%는 긍정 리뷰로 구성되어 있다. MNIST 데이터셋처럼 IMDB 데이터셋도 케라스에 포함되어 있다. 또한 전처리되어 있어 각 리뷰(단어 시퀀스)가 숫자 시퀀스로 되어 있다. 각 숫자는 사전에 있는 고유한 단어를 나타낸다. 케라스 버전 2.4.3와 코랩을 이용하여 실습하였고, 케라스 창시자에게 배우는 딥러닝 책을 참고하였다. 데이터셋 준비 from keras.datasets import imdb (train_data, train_labels), (test_data..