C++ 스킬 1: 웬만한 경우 생성자를 explicit 으로 선언하자

암시적 타입 변환에 생성자가 사용되는 경우를 막을 수 있다.

 

'읽은 책 > Effective C++' 카테고리의 다른 글

6. 대입 연산자  (0) 2022.04.27
5. 소멸자  (0) 2022.04.27
4. 컴파일러가 자동으로 만들어내는 함수 관리  (0) 2022.04.27
3. 초기화  (0) 2022.04.27
2. 상수, 인라인 함수, mutable  (0) 2022.04.27

같은 차원의 입력(26 * 26 * 32)과 출력(64)이 주어졌을 때 깊이별 분리 합성곱 층(SeparableConv2D) 의 파라미터 수와 일반 Conv2D 층의 파라미터 수를 비교했다. 각각 2400개 18496개로 나왔다.

입력 텐서와 출력 텐서만 가지고 Model 객체를 만드는 것이 이해가 잘 안되지만 케라스가 알아서 해준다고 한다.

1D 컨브넷은 RNN보다 계산 속도가 빠르다는 장점이 있지만, 최근에 순서가 과거보다 더 중요한 시계열 데이터에서는 RNN을 사용하는 편이 더 낫다.

스태킹 순환 층은 단순하게 순환층을 중간에 더 쌓아 네트워크의 용량을 늘리는 방법(과대적합이 일어날 때까지 늘리는 것이 좋음)

 

5-2장 에서 이미지 데이터를 텐서화 해주는 전처리 작업과 데이터 증식 작업을 진행할 때 제너레이터를 사용 했었는데, 이번 장에서는 직접 제너레이터 함수를 정의하여 배치를 만드는 작업이 있어서 제너레이터 함수를 어떻게 쓸 수 있는지를 정리할 수 있었음

 

 

Embedding 층은 정수 인덱스 하나를 밀집 벡터로 매핑하는 딕셔너리로 이해할 수 있다.

층이 많은 일반 네트워크(피드포워드 네트워크)에서 그래디언트 소실 문제가 나타나는 것과 같이 SimpleRNN에서도 비슷한 문제가 일어나기 때문에 텍스트와 같이 긴 시퀀스를 처리하는데 적합하지 않음

 

이런 SimpleRNN의 단점을 개선한 순환 층이 LSTM 층이다. 

 

케라스 백엔드 라이브러리의 function 함수가 어떤 원리로 작동 되는지 이해하진 못했지만 입력과 출력을 정해주면 알아서 잘 해준다는 사실을 알았다.

컨브넷 필터 시각화와 히트맵 시각화 과정에서 백엔드 모듈을 사용하여 저수준의 연산 과정을 따라해봤는데, 모든 라인을 이해하는 것이 쉽지 않아서 더 연습해야 될 것 같다.

간단하게 정리하면 그래디언트가 큰 필터, 지역이 클래스를 결정하는데 더 많은 영향을 준다고 볼 수 있겠다.

 

책에서 하위층 상위층 표현이 자주 나오는데 입력이 아래쪽에서 위쪽으로 올라간다고 생각하면 되겠다.

 

 

+ Recent posts