개발새발
Fully-Connected MNIST NN (CPU) 본문
딥러닝 기초와 MNIST 신경망 구현
딥러닝(Deep Learning)은 인공 신경망(Neural Network)을 기본 프레임워크로 사용하는 기계 학습 방법으로, 인간 뇌의 구조에서 영감을 받아 개발되었다. 딥러닝은 층(layer)으로 구성된 신경망 모델을 사용하여 데이터를 학습하고 예측한다.
딥러닝의 작동 원리
딥러닝에서 가장 기본적인 구성 요소는 뉴런(neuron)이다. 각 뉴런은 입력 데이터를 가중치(weight)와 곱하고 편향(bias)을 더한 값을 비선형 활성화 함수(activation function)에 전달하여 출력 신호를 생성한다. 활성화 함수로는 주로 ReLU(Rectified Linear Unit) 함수가 사용된다. ReLU는 입력 값이 0 이상일 때 활성화되는 함수로, 모델의 비선형성을 높여 더 복잡한 문제를 해결할 수 있도록 한다.
학습과 추론
- 학습(Learning)
- 학습 과정에서는 손실 함수(loss function)를 정의하여 모델이 예측한 출력 값과 실제 값 간의 차이를 계산한다
- 손실 값을 최소화하는 방향으로 가중치와 편향을 조정하여 모델을 최적화한다
- 추론(Inference)
- 추론 과정에서는 학습된 모델의 가중치와 편향을 활용해 입력 데이터의 클래스 점수를 계산하고 예측을 수행한다.
Fully-Connected Layer (완전 연결 층)
Fully-Connected Layer는 한 층의 모든 뉴런이 이전 층의 모든 활성화 값과 연결되어 있는 층이다. 이 층에서 계산된 값은 다음과 같다.
weight를 다 더한 값에 bias를 더해서 최종적으로 activation 함수에 전달하는 층이다
activation function: 입력 값이 일정값 이상이 되면 0에서 1로 활성화( activate) 되는 함수이다
The Activation Function (i.e., RELU) Layer
suamtion 한 값에 따라 활성화되는 함수
test-image
test-labels
train-image
train-label
MNIST 데이터셋
MNIST는 손글씨 숫자 이미지로 구성된 데이터셋으로, 딥러닝 및 이미지 처리 시스템 학습에 널리 사용된다.
- 데이터 구조: MNIST 이미지는 28x28 크기의 흑백 이미지이며, 각 픽셀 값은 0(흰색)에서 255(검은색) 사이이다
- 정규화: 계산 복잡도를 줄이기 위해 픽셀 값을 0에서 1 사이로 정규화하여 모델에 입력한다
2D 배열의 메모리 저장 방식
딥러닝에서는 주로 행 우선(Row-major) 방식을 사용하여 2D 배열 데이터를 메모리에 저장합니다.
- 행 우선: 첫 번째 행의 데이터가 연속적으로 저장된 후, 두 번째 행의 데이터가 뒤따라 저장됩니다.
- 열 우선(Column-major): 열 단위로 데이터가 저장됩니다.(하드웨어를 설계할 때 사용된다)
Union
typedef union uint_to_float { //union, 가장 큰 데이터 타입으로 묶음
unsigned int uint;
float fp;
} u2f;
Union(공용체)은 C 언어에서 사용할 수 있는 특별한 데이터 타입으로, 서로 다른 데이터 타입을 하나의 메모리 공간에 저장할 수 있도록 한다. 공용체는 여러 멤버를 정의할 수 있지만, 한 번에 한 멤버만 값을 가질 수 있다.
공용체는 동일한 메모리 공간을 여러 용도로 효율적으로 사용하는 방법을 제공한다
공용체의 모든 멤버는 하나의 메모리 공간을 공유한다. 따라서, 두 개 이상의 멤버가 같은 메모리 위치를 사용할 필요가 있을 경우, 공용체가 가장 적합한 데이터 타입이다
공용체의 크기는 가장 큰 멤버의 크기로 정의된다. 예를 들어, 공용체 멤버 중 하나가 8바이트(double 타입)이고 다른 멤버가 4바이트(int 타입)라면, 공용체의 전체 크기는 8바이트로 설정된다
이를 통해 효율적인 메모리 사용이 가능하며, 필요한 경우 다른 데이터 타입으로 변환하거나 재사용할 수 있다
'임베디드시스템' 카테고리의 다른 글
Profiling + Batch (1) | 2024.11.13 |
---|---|
mnist (GPU) (0) | 2024.11.06 |
GPUs vs DNN Accelerators (1) | 2024.10.24 |
Image Blur (GPU) (0) | 2024.10.23 |
Image Blur(CPU) (6) | 2024.10.17 |