flattenLayer
설명
평탄화 계층은 입력값의 공간 차원을 채널 차원으로 축소합니다.
예를 들어, 계층에 대한 입력값이 H×W×C×N×S 배열(영상 시퀀스)이면 평탄화된 출력값은 (H*W*C)×N×S 배열입니다.
생성
속성
Name
— 계층 이름
''
(디폴트 값) | 문자형 벡터 | string형 스칼라
계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. Layer
배열 입력값에 대해 trainNetwork
, assembleNetwork
, layerGraph
, dlnetwork
함수는 이름이 ''
인 계층에 자동으로 이름을 할당합니다.
데이터형: char
| string
NumInputs
— 입력값의 개수
1
(디폴트 값)
읽기 전용 속성입니다.
계층의 입력값 개수. 이 계층은 단일 입력값만 받습니다.
데이터형: double
InputNames
— 입력값 이름
{"in"}
(디폴트 값)
읽기 전용 속성입니다.
계층의 입력값 이름. 이 계층은 단일 입력값만 받습니다.
데이터형: cell
NumOutputs
— 출력값 개수
1
(디폴트 값)
읽기 전용 속성입니다.
계층의 출력값 개수. 이 계층은 단일 출력값만 가집니다.
데이터형: double
OutputNames
— 출력값 이름
{'out'}
(디폴트 값)
읽기 전용 속성입니다.
계층의 출력값 이름. 이 계층은 단일 출력값만 가집니다.
데이터형: cell
객체 함수
예제
평탄화 계층 만들기
이름이 'flatten1'
인 평탄화 계층을 만듭니다.
layer = flattenLayer('Name','flatten1')
layer = FlattenLayer with properties: Name: 'flatten1'
비디오 분류를 위한 신경망 만들기
비디오나 의료 영상 데이터와 같이 영상으로 구성된 시퀀스를 포함하는 데이터를 위한 딥러닝 신경망을 만듭니다.
신경망에 영상으로 구성된 시퀀스를 입력하기 위해 시퀀스 입력 계층을 사용합니다.
각 시간 스텝에 독립적으로 컨벌루션 연산을 적용하기 위해 먼저 시퀀스 접기 계층을 사용하여 영상으로 구성된 시퀀스를 영상으로 구성된 배열로 변환합니다.
이러한 연산을 수행한 후 시퀀스 구조체를 복원하기 위해 시퀀스 펼치기 계층을 사용하여 영상으로 구성된 배열을 다시 영상 시퀀스로 변환합니다.
영상을 특징 벡터로 변환하기 위해 평탄화 계층을 사용합니다.
그런 다음 입력 벡터 시퀀스를 LSTM 계층과 BiLSTM 계층에 입력할 수 있습니다.
신경망 아키텍처 정의하기
28×28 회색조 영상으로 구성된 시퀀스를 10개 클래스로 분류하는 분류 LSTM 신경망을 만듭니다.
다음과 같은 신경망 아키텍처를 정의합니다.
입력 크기가
[28 28 1]
인 시퀀스 입력 계층.5×5 필터 20개를 갖는 컨벌루션, 배치 정규화 및 ReLU 계층 블록.
마지막 시간 스텝만 출력하는 은닉 유닛 200개를 갖는 LSTM 계층.
크기가 10(클래스 개수)인 완전 연결 계층과 그 뒤에 오는 소프트맥스 계층 및 분류 계층.
각 시간 스텝에 대해 컨벌루션 연산을 독립적으로 수행하려면 컨벌루션 계층 앞에 시퀀스 접기 계층을 포함시키십시오. LSTM 계층에는 벡터 시퀀스 입력값이 필요합니다. 시퀀스 구조체를 복원하고 컨벌루션 계층의 출력값 형태를 특징 벡터로 구성된 시퀀스로 변경하려면 컨벌루션 계층과 LSTM 계층 사이에 시퀀스 펼치기 계층과 평탄화 계층을 삽입하십시오.
inputSize = [28 28 1]; filterSize = 5; numFilters = 20; numHiddenUnits = 200; numClasses = 10; layers = [ ... sequenceInputLayer(inputSize,'Name','input') sequenceFoldingLayer('Name','fold') convolution2dLayer(filterSize,numFilters,'Name','conv') batchNormalizationLayer('Name','bn') reluLayer('Name','relu') sequenceUnfoldingLayer('Name','unfold') flattenLayer('Name','flatten') lstmLayer(numHiddenUnits,'OutputMode','last','Name','lstm') fullyConnectedLayer(numClasses, 'Name','fc') softmaxLayer('Name','softmax') classificationLayer('Name','classification')];
계층을 계층 그래프로 변환하고, 시퀀스 접기 계층의 miniBatchSize
출력값을 시퀀스 펼치기 계층의 대응되는 입력값에 연결합니다.
lgraph = layerGraph(layers); lgraph = connectLayers(lgraph,'fold/miniBatchSize','unfold/miniBatchSize');
plot
함수를 사용하여 최종 신경망 아키텍처를 확인합니다.
figure plot(lgraph)
알고리즘
계층 입력 형식 및 출력 형식
계층 배열 또는 계층 그래프의 계층은 뒤에 오는 계층에 데이터를 전달할 때 형식이 지정된 dlarray
객체로 전달합니다. dlarray
객체의 형식은 문자들로 구성된 문자열로, 각 문자는 데이터의 대응되는 차원을 설명합니다. 형식은 다음 문자 중 하나 이상으로 구성됩니다.
"S"
— 공간"C"
— 채널"B"
— 배치"T"
— 시간"U"
— 지정되지 않음
4차원 배열로 표현된 2차원 영상 데이터를 예로 들면 처음 2개 차원은 영상의 공간 차원, 3번째 차원은 영상의 채널, 4번째 차원은 배치 차원에 대응되며, "SSCB"
(공간, 공간, 채널, 배치) 형식으로 설명될 수 있습니다.
functionLayer
객체를 사용하여 사용자 지정 계층을 개발하거나, dlnetwork
객체에 forward
및 predict
함수를 사용할 때와 같은 자동 미분 워크플로에서 이러한 dlarray
객체와 상호 작용할 수 있습니다.
이 표는 FlattenLayer
객체의 지원되는 입력 형식과 그에 대응되는 출력 형식을 보여줍니다. 계층의 출력이 nnet.layer.Formattable
클래스를 상속하지 않는 사용자 지정 계층에 전달되거나 Formattable
속성을 0
(false)으로 설정한 FunctionLayer
객체에 전달될 경우 이 계층은 이 표에 나와 있는 형식에 대응하는 순서의 차원을 갖는, 형식이 지정되지 않은 dlarray
객체를 수신합니다.
입력 형식 | 출력 형식 |
---|---|
|
|
| |
| |
| |
|
|
| |
| |
| |
|
|
| |
| |
|
dlnetwork
객체에서 FlattenLayer
객체는 다음 입력 형식과 출력 형식의 결합도 지원합니다.
입력 형식 | 출력 형식 |
---|---|
|
|
| |
| |
|
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
버전 내역
R2019a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)