이전 포스트에서
학원에서 처음 Tensorflow keras 를 활용해 딥러닝을 돌리는 코드를 분석해보았는데요,
https://aigaeddo.tistory.com/3
2) Tensorflow를 사용해서 머신러닝 하기
저는 학원에서 기초적인 학습을 하고있고, 부끄럽지만 소통을 위해 복기를 위해 초심을 잃지 않기 위해 나름 다른 분들에게 도움이 될까 싶어(?) 학습하는 과정을 블로그에 작성하고 있습니다.
aigaeddo.tistory.com
겉핥기 분석만 한 느낌입니다..(느낌x 실제임)
개인적인 공부를 기록하는 블로그이고
이 글을 읽으실 분은 많이 없으실테니...ㅋㅋ
이번에는
편하게 Sequential, Dense 공부한 내용을 정리해보겠습니다~
Sequential 과 Dense 가 무엇이고 사용했던 이유가 뭘까요?
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 보다도
더 복잡한 모델을 구현할 수 있다고 하네요.
07-10 케라스 서브클래싱 API(Keras Subclassing API)
케라스의 구현 방식에는 Sequential API, Functional API 외에도 Subclassing API라는 구현 방식이 존재합니다.  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를 막 공부하기 시작한 초보 개발자입니다!
틀린 부분이 있다면 말씀 부탁드릴게요!)
'인공지능 개발하기 > Machine Learning' 카테고리의 다른 글
[Tensorflow] 6. 입출력 데이터 수 변경 (1) | 2024.01.03 |
---|---|
[Tensorflow] 5. 스칼라, 벡터, 행렬, 텐서 (2) | 2024.01.02 |
[Tensorflow] 4. 모델 구조, batch_size 바꿔보기 (2) | 2024.01.02 |
[Tensorflow] 2. Tensorflow를 사용해서 딥러닝 하기 (2) | 2023.12.29 |
[Tensorflow] 1. Python과 Tensorflow를 이용한 인공지능 개발 세팅하기 (0) | 2023.12.29 |