본문 바로가기
인공지능 개발하기/Machine Learning

[Tensorflow] 3. Tensorflow keras의 Sequential, Dense

by 선의공 2023. 12. 30.

 

 

 

이전 포스트에서 

학원에서 처음 Tensorflow keras 를 활용해 딥러닝을 돌리는 코드를 분석해보았는데요,

https://aigaeddo.tistory.com/3

 

2) Tensorflow를 사용해서 머신러닝 하기

저는 학원에서 기초적인 학습을 하고있고, 부끄럽지만 소통을 위해 복기를 위해 초심을 잃지 않기 위해 나름 다른 분들에게 도움이 될까 싶어(?) 학습하는 과정을 블로그에 작성하고 있습니다.

aigaeddo.tistory.com

겉핥기 분석만 한 느낌입니다..(느낌x 실제임)

 

개인적인 공부를 기록하는 블로그이고

이 글을 읽으실 분은 많이 없으실테니...ㅋㅋ

 

이번에는

편하게 Sequential, Dense 공부한 내용을 정리해보겠습니다~

SequentialDense 가 무엇이고 사용했던 이유가 뭘까요?

 

 

 


 

 

 

1. Sequential 

 

 

 

일단 가장 정확한 내용은 Keras의 도큐먼트를 까보면 나올 듯 했습니다.

예??

정의 한줄만 나와있네요..

"레이어의 선형 스텍을 그룹화하는것?"

무슨뜻이지..

일단 상위 클래스로 보이는 Model의 도큐먼트로 이동해보겠습니다.

 

 

여긴 좀 설명이 있군요.

Model클래스는 학습/추론 기능을 사용해서 레이어를 객체로 그룹화한다고 하네요.

그리고 3가지 모델 생성 방법이 있다고 하네요.

 

 

여기서 레이어란 ?

머신러닝의 구조를 보면 

다양한 노드들의 층이 존재하며

이것을 레이어라고 한다고 합니다.

이미지 출처 : https://commons.wikimedia.org/wiki/File:MultiLayerNeuralNetworkBigger_english.png

 

 

 

이 포스트에서 딥러닝의 레이어를 쉽게 설명해주셨는데 

"겹겹이 쌓인 양파" 의 한 겹이라는 설명이 와닿았습니다.(눈높이교육)

딥러닝은 뇌신경망을 참고하였지만

결국 개발자 입장으로 변형된 알고리즘이고

레이어란 개념을 도입하면서

단계적 분석이나 수정이 용이해졌다고 이해했습니다.

 

Model()은 이 레이어들을 객체로 그룹화가 가능하게 해주군요.

 

https://whoishoo.tistory.com/81

 

[Data Science] 딥러닝 레이어(Deep Learning Layers)

Q: 딥러닝 할 때 레이어라는 표현을 쓰잖아요 input layer 층이라던가 그 레이어를 뭐라고 생각하는 게 좋을까요? 처음 보거나 이해하기가 어렵다면 사전적 의미를 찾아보는 방법이 정말 좋다. 사전

whoishoo.tistory.com

 

 

또한 Model을 생성하는 3가지 방법이 있다고 합니다.

 

3가지 방법은 아래와 같습니다.

 

 

1) Functional API

 

음...Seqeuntial을 사용해서 코딩해준 방식보다

input, output을 생성하고,,,이렇고 저렇고

더 복잡해 보입니다.

 

 

 

2) subclassing

 

모델 자체를 클래스로 만들어 주었네요.

역시나 Seqential보다 복잡해 보이네요...

벌써 그리운 Sequential..

 

 

3) Sequential class

 

여기 익숙한 Sequential이 나왔군요

예제가 위 두가지 방식보다 간결해 보입니다

 

 

그렇다면 3가지의 모델을 구현하는 차이점이 무엇일까??

해당 포스트에서 위의 3가지 구현 방식을 잘 비교해주셨습니다.

 

Sequential은 최대한 간결하고 사용하기 편한 건 맞지만

복잡한 모델을 구현하기는 힘들다고 합니다.

 

Functional은 복잡한 모델을 구현할 수 있고,

 

Subclassing 방식은 Functional API 보다도

더 복잡한 모델을 구현할 수 있다고 하네요.

 

https://wikidocs.net/106897

 

07-10 케라스 서브클래싱 API(Keras Subclassing API)

케라스의 구현 방식에는 Sequential API, Functional API 외에도 Subclassing API라는 구현 방식이 존재합니다. ![](https://wikido…

wikidocs.net

 

 

 

결과적으로 제 생각은 

Sequential는 keras에서

 층을 쌓는 가장 단순한 방식의 모델을 생성해주는 클래스였네요.

사용해 주는 이유도 모델 생성 시 가장 단순한 방식이라서

초급 코드에서 사용된거였군요.

 

 


 

 

2. Dense

 

 

 

 

그렇다면 Sequential이라는 모델에 넣어준

Dense 클래스는 무엇일까요??

 

마찬가지로 도큐먼트부터 까볼게요!

역시나 사용법만 주구장창 써있고 정의는 한줄이네요 

조밀하게 연결된 NN Layer??

ㅜㅜ layer인가요...

NN레이어는 또 무엇일까요?

 

Neural Networks.

위에서 레이어는 딥러닝은 뇌 신경망을 참고했다고 했는데

이 신경망을 말하는 것 같습니다.

"즉, Dense 레이어는 신경망 모델의 레이어 인듯 하네요."

 

좀더 까보기 위해

그렇다면 다시 상위 클래스로 이동해 보겠습니다. 

별 다른 설명 없이 레이어의 종류를 나열해놨습니다.

제가 찾는 Dense의 사용 이유를 알기 위해서는

다른 layer도 다 알아야겠군요.

아래의 포스트에서 차이점을 간략히 설명해 주셨습니다.

 

https://jehwanyoo.net/2022/03/11/%EB%A8%B8%EC%8B%A0-%EB%9F%AC%EB%8B%9D%EC%9D%84-%ED%95%B4%EB%B3%B4%EC%9E%90-8%EC%9E%A5-keras-layer-%EB%B6%84%EC%84%9D/

 

머신 러닝을 해보자 8장 - Keras의 Layers API와 Model API에 대하여

Keras API Document Link Keras 주요 포인트 Layers API (Base Layer Class, Core Layer Class) Model API (Sequential Class) Base Layer Class 123tf.keras.layers.Layer( trainable=True, name=None, dtype=None,

jehwanyoo.net

 

 

 

1) Input object

 

텐서 타입을 갖는 추상 객체이다.

실제 입력 데이터가 아닌 추상 데이터이며

그렇기 때문에 y값이 구체화 되지 않는다.

(무슨 의미인지는 아직 잘 이해가 가지 않습니다..)

 

 

 

2) Dense Layer

 

우리가 찾던 Dense Layer입니다!

완전 연결 계층.

아까 말한 NN 즉, 신경망 구조의 연결 레이어 형식이

사진을 보니 이해가 잘 갑니다.

 

 

3) Activation Layer

잘은 모르겠지만 설명보단 사용법이 중요해 보이네요.

Activation, ReLU, Softmax 클래스

혹은 Dense 레이어 등과 같이 사용한다고 합니다.

 

 

4) Embedding Layer

텍스트 분류에 많이 사용된다고 합니다.

(해당 레이어를 통과하면 Dense Vector로 변환되는건가요?

이것도 아직은 잘 모르겠네요..)

 

5) Masking Layer

특정 단계의 텐서 값을 모두 mask_value로 설정한 뒤 

Masking Layer를 통과하면 그 단계를 건너뛴다.

(음.. mask_value로 설정된 값은 Masking Layer를 건너뛴다인가요??)

 

 

6) Lambda Layer

람다 식을 이용해서 수학적 함수를 직접 지정할 수 있는 계층.

(람다식을 이용해서 함수를 지정하고 싶을때는 언제인 것일까요???ㅜㅜ)

 

 

모든 레이어를 보니

사용 목적에 따라 레이어 사용이 달라지는 것 같습니다.

이 중에서 제가 알고 싶던 Dense Layer는

NN Layer 즉 신경망 회로의 모델에 적합한 

레이어였다고 생각해도 될까요??

 

 

 

 

 

3. 결론 

Sequential 모델은 이름대로 단순하게 구현이 가능한 모델클래스이며,

이 순차 모델에 필요한 완전 연결이 가능한 

레이어 클래스가 Dense가 되겠네요.

그리고 이 구조는 

딥러닝의 구조와 동일하게 되겠구요.

그래서

https://aigaeddo.tistory.com/3

 

2) Tensorflow를 사용해서 머신러닝 하기

저는 학원에서 기초적인 학습을 하고있고, 부끄럽지만 소통을 위해 복기를 위해 초심을 잃지 않기 위해 나름 다른 분들에게 도움이 될까 싶어(?) 학습하는 과정을 블로그에 작성하고 있습니다.

aigaeddo.tistory.com

포스트 2에서 훈련시킨 이 딥러닝 코드에

구조적으로 필요한 모델과 레이어였네요.

 

 

전 포스팅에서도 언급했고 저도 궁금하던 내용이라

시간이 걸렸지만

조금이라도 Sequential , Dense를 이해할 수 있었던 시간이었습니다.

 

(Tensorflow를 막 공부하기 시작한 초보 개발자입니다!

틀린 부분이 있다면 말씀 부탁드릴게요!)