Fully Connected Layer (완전 연결 계층)

5단 분석법

순서
분석
단어
내용
1
일반 명사
Fully
완전히, 충분히
Connected
연결되다, 이어지다
Layer
막, 층, 겹
Fully Connected Layer
완전히 연결된 층?
2
고유 명사
Fully Connected Layer
ANN에서 모든 입력 뉴런이 모든 출력 뉴런과 연결된 레이어
3
사용 이유
Fully Connected Layer
입력 데이터의 모든 특징을 종합적으로 고려하여 복잡한 패턴을 학습하고 최종 출력이나 분류를 수행할 수 있기 때문에
4
사용 방법
Fully Connected Layer
1. 라이브러리 임포트 2. 모델 생성 3. Flatten 레이어 추가 4. Fully Connected Layer 추가 5. 모델 컴파일 6. 모델 훈련 7. 모델 평가
5
다른 기술과의 비교
Fully Connected Layer
-

정의

일반 명사

Fully
완전히, 충분히
Connected
연결되다, 이어지다
Layer
막, 층, 겹
Fully Connected Layer
완전히 연결된 층?
Fully는 완전히, 충분히 라는 뜻을 가지고 있습니다.
Connected는 연결되다, 이어지다 라는 뜻을 가지고 있습니다.
Layer는 막, 층, 겹을 뜻합니다.
Fully Connected Layer를 유추해 보면, 완전히 연결된 층으로 생각해 볼 수 있습니다.
고유 명사를 한 번 알아볼까요?

고유 명사

Fully Connected Layer
인공 신경망에서 모든 입력 뉴런이 모든 출력 뉴런과 연결된 레이어
Fully Connected Layer 인공 신경망에서 모든 입력 뉴런이 모든 출력 뉴런과 연결된 레이어 입니다.
Hidden Layer와 Output Layer가 Fully Connected Layer 부분이라고 생각하시면 됩니다.
이러한 구조는 데이터의 모든 특징을 종합적으로 분석하고 학습하는 데 중요한 역할을 합니다.
이 레이어는 주로 신경망의 마지막 부분에 위치하며, 입력 데이터로부터 얻은 정보를 종합하여 최종 출력값을 생성합니다.
예를 들어 이미지 분류 모델에서 이미지의 각 부분에서 추출된 특징을 종합하여 최종적으로 이미지가 어떤 클래스에 속하는지 결정합니다.
Fully Connected Layer는 Dense Layer라고도 표현합니다.
PyTorch에선 Fully Connected Layer, TensorFlow에서는 Dense Layer라고 표현합니다.

사용 이유

Fully Connected Layer
입력 데이터의 모든 특징을 종합적으로 고려하여 복잡한 패턴을 학습하고 최종 출력이나 분류를 수행할 수 있기 때문에
이유
내용
복잡한 패턴 학습
모든 입력 뉴런이 모든 출력 뉴런과 연결되어 있어, 입력 데이터의 모든 특징을 종합적으로 고려할 수 있습니다. 이는 데이터 내의 복잡한 패턴을 학습하는 데 유리합니다.
최종 출력 생성
신경망의 마지막 단계에서 사용되는 경우가 많아, 입력 데이터로부터 얻은 모든 정보를 종합하여 최종 출력을 생성합니다. 예를 들어 이미지 분류 문제에서, 이미지의 모든 특징을 종합하여 어떤 클래스에 속하는지를 결정합니다.
다양한 적용 분야
이미지 인식, 음성 인식, 자연어 처리 등 다양한 분야에서 사용됩니다. 각각의 분야에서 데이터를 종합적으로 분석하고 최종 출력을 도출하는 데 중요한 역할을 합니다.

사용 방법

Fully Connected Layer
1. 라이브러리 임포트 2. 모델 생성 3. 손실 함수 및 옵티마이저 정의 4. 모델 훈련 5. 모델 평가

TensorFlow (Keras)

PyTorch

미니퀘스트

1번 미니퀘스트 - 간단한 Fully Connected Layer 모델 만들기

MNIST 데이터셋을 사용하고, 간단한 신경망 모델을 만들고 훈련시키는 과정을 통해 Fully Connected Layer 모델을 만들어보세요.

문제 설명

1.
라이브러리 임포트
2.
MNIST 데이터셋 로드 및 전처리
3.
모델 생성
4.
모델 컴파일
5.
모델 훈련
6.
모델 평가

코드

# 1. 라이브러리 임포트 from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten, Input from tensorflow.keras.utils import to_categorical # 2. MNIST 데이터셋 로드 및 전처리 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 데이터 정규화 x_train = x_train.astype('float32') / 255 x_test = x_test.astype('float32') / 255 # 원-핫 인코딩 y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) # 3. 모델 생성 model = Sequential() model.add(Input(shape=(28, 28))) model.add(Flatten()) model.add(Dense(128, activation='relu')) # 첫 번째 Fully Connected Layer model.add(Dense(10, activation='softmax')) # 출력층 # 4. 모델 컴파일 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 5. 모델 훈련 model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2) # 6. 모델 평가 loss, accuracy = model.evaluate(x_test, y_test) print(f"Test loss: {loss}") print(f"Test accuracy: {accuracy}")
Python
복사

코드 설명

2번 미니퀘스트 - 고양이와 개 이미지 분류 모델 만들기

가상의 고양이와 개 이미지 데이터를 분류하는 간단한 신경망 모델을 만들어보세요.

문제 설명

1.
라이브러리 임포트
2.
데이터셋 생성 (가상의 고양이와 개 이미지 데이터
예제데이터
# 2. 데이터셋 생성 (가상의 고양이와 개 이미지 데이터) num_classes = 2 input_shape = (64, 64, 3) # 64x64 RGB 이미지 # 가상의 이미지 데이터 생성 x_train = np.random.random((1000, 64, 64, 3)) y_train = np.random.randint(num_classes, size=(1000, 1)) x_test = np.random.random((200, 64, 64, 3)) y_test = np.random.randint(num_classes, size=(200, 1))
Python
복사
3.
모델 생성
4.
모델 컴파일
5.
모델 훈련
6.
모델 평가

코드

# 1. 라이브러리 임포트 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten, Input from tensorflow.keras.utils import to_categorical import numpy as np # 2. 데이터셋 생성 (가상의 고양이와 개 이미지 데이터) num_classes = 2 input_shape = (64, 64, 3) # 64x64 RGB 이미지 # 가상의 이미지 데이터 생성 x_train = np.random.random((1000, 64, 64, 3)) y_train = np.random.randint(num_classes, size=(1000, 1)) x_test = np.random.random((200, 64, 64, 3)) y_test = np.random.randint(num_classes, size=(200, 1)) # 원-핫 인코딩 y_train = to_categorical(y_train, num_classes) y_test = to_categorical(y_test, num_classes) # 3. 모델 생성 model = Sequential() model.add(Input(shape=input_shape)) model.add(Flatten()) model.add(Dense(256, activation='relu')) # 첫 번째 Fully Connected Layer model.add(Dense(num_classes, activation='softmax')) # 출력층 # 4. 모델 컴파일 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 5. 모델 훈련 model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2) # 6. 모델 평가 loss, accuracy = model.evaluate(x_test, y_test) print(f"Test loss: {loss}") print(f"Test accuracy: {accuracy}")
Python
복사

코드 설명

미니퀘스트 답안지

ⓒ 2024 startupcode. 모든 권리 보유. 무단 복제 금지.