본문 바로가기

DeepLearning

딥러닝으로 걷는 시계열 예측 [CH05] 앙상블

https://codingsmu.tistory.com/151

1. concatenate

2개 이상의 모델을 합치는 방법

단순하게 2개의 모델을 엮어주는 역할을 한다. 

ex. 인풋이 (10,3)은 모델1과 인풋이 (10,3)인 모델2를 엮을 경우 concatenate 시점에서는 그냥 단일 모델처럼 (10,6)의 형태로 엮인다.

✔️ 합쳐지는 레이어 부분에서 노드들이 단순하게 더하기 형태로 합쳐진다.

 

concatenate는 두군데 존재한다. keras.layers와 keras.layers.merge 이 두 곳중에 아무 곳에서나 import 해주면 됨

concatenate() 함수에 매개변수로 상단 2개의 모델 최하위 레이어의 이름을 리스트 방식으로 입력한다. 

 

✔️ concatenate이 아닌, Concatenate 클래스를 사용해주어야 함!

사용법은 concatenate와 유사하고, ()을 더 붙여주면 된다!

input1과 input2를 병합하는 과정에서 레이어 구조를 간단하게 나타낸 것

 

https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH05/ch05_1.py

 

GitHub - yenyen31/Artificial-Intelligence-in-Finance: Artificial-Intelligence-in-Finance

Artificial-Intelligence-in-Finance. Contribute to yenyen31/Artificial-Intelligence-in-Finance development by creating an account on GitHub.

github.com

 

결과 분석)

약간의 오차가 있지만, 최초 입력한 원 데이터와 비교하면 큰 문제가 되진 않음을 알 수 있다. 

x1, x2 이 2개의 데이터셋이 앙상블이 되어 501에서 600이 나오는 구조이다. 그냥 봐서는 연관성이 없어 보이는 구조이고 이 가운데 60%를 train, 20%를 validation, 나머지 20%를 test셋으로 사용하고, test셋으로 predict한 것이다!

 

2. Merge Layer

concatenate처럼 모델에서 합치는 것이 아닌, 데이터상에서 컬럼을 합쳐서 단일 모델로 구성하는 방법

1) Add

keras.layers.Add()

layers끼리의 단순한 덧셈.

동일한 모양의 텐서 목록을 입력으로 사용하고 하나의 텐서(같은 모양)을 반환한다.

2) Subtract

keras.layers.Subtract()

layers끼리의 단순한 뺄셈.

동일한 모양의 크기 2인 텐서 목록을 입력으로 사용하고 동일한 모양의 단일 텐서(입력[0]-입력[1])을 반환한다.

3) Multiply

keras.layers.Multiply()

layer들끼리의 입력 목록을 (요소 별로) 곱하는 레이어

동일한 모양의 텐서 목록을 입력으로 사용하고 하나의 텐서를 반환한다

4) Average

keras.layers.Average()

인풋 리스트의 평균을 내는 레이어

동일한 모양의 텐서 목록을 입력으로 사용하고 하나의 텐서를 반환한다

5) Maximum

keras.layers.Maximum()

입력 목록의 최대(요소 별로)를 계산하는 레이어

동일한 모양의 텐서 목록을 입력으로 사용하고 하나의 텐서를 반환한다

6) Minimum

keras.layers.Minimum()

입력 목록의 최소(요소 별로)를 계산하는 레이어

동일한 모양의 텐서 목록을 입력으로 사용하고 하나의 텐서를 반환한다

 

7) Concatenate

keras.layers.Concatenate(axis=-1)

입력 목록을 연결하는 레이어

연결 축을 제외한 동일한 모양의 텐서 목록을 입력으로 사용하고 모든 입력의 연결 인 단일 텐서를 반환한다.

디폴트는 axis = -1이다

✔️ concatenate와 주의해야 함! 

8) Dot

keras.layers.Dot(axes, normalize=False)

두 텐서에서 샘플 간 내적을 계산하는 레이어

2개의 텐서 a와 b의 모양 (batch_size, n) 목록에 적용되는 경우 출력은 모양의 텐서(batch_size, 1)가 됩니다. 

여기서 각 항목 i는 a[i]와 b[i] 사이의 내적이다.

9) add

keras.layers.add(inputs)

Add와 같은 결과를 나타내지만, 함수형 add는 사용법이 다르다!

10) subtract

keras.layers.subtract(inputs)

Subtract과 같은 사용법이고 동일하게 ()을 주의해야 한다!

11) multiply

keras.layers.multiply(inputs)

Multiply()와 동일한 방법. ()사용 주의해야 한다!

12) average

keras.layers.average(inputs)

Average()와 동일한 방법. ()사용 주의해야 한다!

13) maximum

keras.layers.maximum(inputs)

Maximum()와 동일한 방법. ()사용 주의해야 한다!

 

14) minimum

keras.layers.minimum(inputs)

Minimum()와 동일한 방법. ()사용 주의해야 한다!

15) concatenate

keras.layers.concatenate(inputs, axis=-1)

Concatenate()와 동일한 방법. ()사용 주의해야 한다!

디폴트 axis = -1 이다.

16) dot

keras.layers.concatenate(inputs, axes, normalize=False)

inputs는 2개 이상의 텐서이다. 

normalized()는 L2 정규화의 여부이다.

디폴트는 False이다.

Dot()와 동일한 방법. ()사용 주의해야 한다!

 

 

반응형