본문 바로가기
Python

[Keras] Dense layer, Dense class

by Henry Cho 2022. 7. 21.
728x90

Dense layer, Dense class


포스트 난이도: HOO_Senior

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


# Dense class

Keras 라이브러리에서 Dense는 노드 또는 뉴런의 입출력을 담당하는 클래스이다.

Dense를 function이라고 하지 않고 class라고 부르는 이유는 각 노드 또는 뉴런의 입출력의 특징을 클래스 형태로 나타내기 때문이다.

한마디로 Dense 클래스를 사용해서 입력되는 노드 값에 대한 특징을 나타낸다.

노드의 가중치 표현

위의 그림은 각 노드들의 Weight(가중치)를 고려해서 선택되는 결과 값들을 간단하게 표현한 그림이다.

이처럼 Deep learning에서 노드(또는 뉴런)가 계산되는 있어서 Weight(또는 가중치)가 비교되어 선택된다.

이때 입력 노드 값에 대한 가중치 설정도 Dense class에 가능하며, Dense class attributes들을 설정함으로써 산출하고자 하는 결과도 달라지게 된다.

한마디로 Keras의 Dense class을 통해 입력 노드의 요소를 설정하여 Deep learning을 통해 특정 결과를 산출해낼 수 있다.


# Dense class 요소

tf.keras.layers.Dense(
    units,
    activation='relu',
    use_bias=True,
    kernel_initializer="uniform",
    bias_initializer="zeros",
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    **kwargs
)

Dense 클래스는 위와 같은 요소를 설정할 수 있다.

사용하지 않는 특징은 생략하고 작성하면 되고 필요한 요소들만 골라서 작성해서 사용하면 된다.

Keras에서 model 선언을 했다면 아래와 같이 작성할 수도 있다.

model = keras.Sequential([
    layers.BatchNormalization(input_shape=input_shape),
    layers.Dense(64, activation='relu'),
])

model 블록을 지정하지 않고 개별적으로 작성도 가능하다.

model.layers(Dense(10, input_dim = 5, kernel_initializer = 'glorot_uniform', activation = 'relu'))

결과적으로 Dense class를 사용한다는 점에서 동일하지만, 필요한 attributes들을 골라서 사용하면 된다.

 


 

728x90

'Python' 카테고리의 다른 글

[Python] if 문이란? (if statement)  (0) 2022.07.31
[Keras] model.compile(), 모델 컴파일  (0) 2022.07.28
[Keras] Batch Normalization  (0) 2022.07.21
[Keras] Sequential Model  (0) 2022.07.19
[Pandas] head() function  (0) 2022.07.19

댓글