Skip to main content

코드 샘플을 사용한 Keras 레이어 입력 설명

입력 모양, 가중치, 단위, 밝기를 포함한 Keras 레이어 인수 관련 보편적 질문에 대한 간단한 답변을 드리겠습니다.
Created on April 22|Last edited on April 22
이는 여기에서 볼 수 있는 영어 기사를 번역한 것이다.



질문: input_shape, units, dim등의 차이 이해하기?

Keras 레이어(레이어 클래스)에 대해input_shape, units, dim,등의 차이를 어떻게 이해해야 하는지 설명해주실 수 있나요?
예를 들어, 문서에서는units가 Keras 레이어의 출력 모양을 지정한다고 나와있습니다.
아래 신경망(neural net) 이미지에서hidden layer1에는 4개의 객체가 있습니다. 이 값이Layer 객체의 units 특성으로 직접 변환되나요? 아니면 Keras의units는hidden layer의 모든 무게에units 수를 곱한 모양과 같은가요?
아래 이미지를 사용하여 모델, 특히 레이어의 속성을 어떻게 이해/시각화할 수 있습니까?


정답

Keras 레이어의 유닛

Keras 레이어에서 단위는 신경 네트워크 구조의 각 층에 있는 뉴런의 수입니다. 예를 들어:
some_layer = tf.keras.layers.Dense(10, activation=None)
유닛의 개수는 10개입니다. 따라서 10개의 뉴런이 있습니다.
위 이미지에서hidden layer 1은 4개, hidden layer 2는 4개, output 레이어는 2개의 유닛이 있습니다.

Keras 레이어의 모양

Keras 레이어에서 모양은 각 차원에 배열 또는 텐서의 요소 수를 나타내는 튜플(tuple)입니다.
: 모양(3, 4, 4)를 가진 텐서는 3차원이고 첫 번째 차원은 3개의 요소를 가집니다. 이 세 가지 요소에는 각각 4개의 요소가 있고, 이 4개의 요소에는 각각 4개의 요소가 있습니다. 따라서 총3*4*4 = 48개의 요소가 있습니다.

Keras 레이어에 입력 모양

Keras 레이어에서 입력 모양(Input Shape)은 일반적으로 트레이닝 중에 Keras 모델에 제공된 입력 데이터의 모양입니다. 모형은 트레이닝 데이터의 모양을 알 수 없습니다. 다른 텐서(레이어)의 모양은 자동으로 계산됩니다.
각 Keras 레이어 유형에는 특정 치수 수의 입력이 필요합니다.
  • 고밀도 레이어에는 (batch_size, input_size)과 같은 입력이 필요합니다.
  • 2D 나선형 레이어에는 다음과 같은 입력이 필요합니다.
    • channels_last를 사용하는 경우: (batch_size, imageside1, imageside2, channels)
    • channels_first를 사용하는 경우: (batch_size, channels, imageside1, imageside2)
  • 1D 나선형 및 반복 레이어(batch_size, sequence_length, features)를 사용됩니���
  • 다른 텐서의 모양Conv2D 레이어의kernel_size와 같은 다른 특수성과 함께 제공된 단위 수를 기반으로 계산됩니다.

Keras 레어어의Weights(가중치)

Keras 레어어에서 가중치는 학습된 수학적 연산을 통해 입력 모양을 출력 모양으로 변환할 수 있는 매트릭스입니다.
가중치는 입력 및 출력 모양을 기준으로 완전히 자동으로 계산됩니다. 다시 말하지만 각 레이어 유형은 특정한 방식으로 작동합니다.

Keras 레이어에서 Dim

일반적으로 dim은 Keras 레이어에서 텐서의 차원 수를 나타냅니다. 예를 들어, 모양(32, 1024)의 텐서는 2차원을 가집니다.
우리는 보통(3,)과 같은 하나의Dim 텐서를 정의합니다. 따라서 이 1차원 입력은 3가지 요소를 가집니다.

Keras의 문제 섹션에서 이미지를 정의해봅시다

다시 위의 문제 섹션에서 이미지를 보고 Keras에서 이미지를 정의해봅시다.


순차적(Sequential) API 사용

from keras.models import Sequential
from keras.layers import *

model = Sequential()

model.add(Input(shape=(3,))) # Input tensor
model.add(Dense(units=4)) # hidden layer 1
model.add(Dense(units=4)) #hidden layer 2
model.add(Dense(units=1)) #output layer

기능적(Functional) API 사용

from keras.models import Model
from keras.layers import *


inputs = Input(shape=(3,)) # input tensor
hidden1 = Dense(units=4)(inputs) # hidden layer 1
hidden2 = Dense(units=4)(hidden1) # hidden layer 2
outputs = Dense(units=1)(hidden2) # hidden layer 1

#define the model's start and end points
model = Model(inputs, outputs)
각 레이어의 모델 요약과 출력 모양을 살펴봅시다.
그림 1: 모델 개요
답은 이 스택 오버플로 스레드에서 영감을 받았습니다.
Iterate on AI agents and models faster. Try Weights & Biases today.