featureInputLayer
특징 입력 계층
설명
특징 입력 계층은 신경망에 특징 데이터를 입력하고 데이터 정규화를 적용합니다. 특징을 나타내는, 숫자형 스칼라로 구성된 데이터 세트(공간 차원 또는 시간 차원이 없는 데이터)가 있는 경우 이 계층을 사용하십시오.
영상 입력의 경우 imageInputLayer를 사용하십시오.
생성
설명
는 특징 입력 계층을 반환하고 layer = featureInputLayer(numFeatures)InputSize 속성을 지정된 특징 개수로 설정합니다.
는 하나 이상의 이름-값 인수를 사용하여 선택적 속성을 설정합니다.layer = featureInputLayer(numFeatures,Name=Value)
입력 인수
데이터의 각 관측값의 특징 개수로, 양의 정수로 지정됩니다.
영상 입력의 경우 imageInputLayer를 사용하십시오.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.
예: featureInputLayer(21,Name="input")은 특징 개수가 21로 설정되고 이름이 'input'인 특징 입력 계층을 만듭니다.
데이터가 입력 계층을 통과하여 순방향으로 전파될 때마다 적용할 데이터 정규화로, 다음 중 하나로 지정됩니다.
"zerocenter"—Mean으로 지정된 평균값을 뺍니다."zscore"—Mean으로 지정된 평균값을 빼고StandardDeviation으로 나눕니다."rescale-symmetric"—Min으로 지정된 최솟값과Max로 지정된 최댓값을 사용하여 입력값이 [-1, 1] 범위 내에 오도록 다시 스케일링합니다."rescale-zero-one"—Min으로 지정된 최솟값과Max로 지정된 최댓값을 사용하여 입력값이 [0, 1] 범위 내에 오도록 다시 스케일링합니다."none"— 입력 데이터를 정규화하지 않습니다.함수 핸들 — 지정된 함수를 사용하여 데이터를 정규화합니다. 함수는
Y = f(X)형식이 되어야 합니다. 여기서X는 입력 데이터이고 출력값Y는 정규화된 데이터입니다.
입력 데이터가 복소수 값이고 SplitComplexInputs 옵션이 0(false)인 경우 Normalization 옵션은 "zerocenter", "zscore", "none" 또는 함수 핸들이어야 합니다. (R2024a 이후)
R2024a 이전: 복소수 값 데이터를 신경망에 입력하려면 SplitComplexInputs 옵션이 1(true)이어야 합니다.
팁
기본적으로 trainnet 함수를 사용할 때 자동으로 정규화 통계량이 계산됩니다. 훈련 중에 시간을 절약하려면 정규화에 필요한 통계량을 지정하고 trainingOptions의 ResetInputNormalization 옵션을 0(false)으로 설정하십시오.
FeatureInputLayer 객체는 Normalization 속성을 문자형 벡터 또는 함수 핸들로 저장합니다.
정규화 차원으로, 다음 중 하나로 지정됩니다.
"auto"–ResetInputNormalization훈련 옵션이0(false)이고 정규화 통계량 중 하나(Mean,StandardDeviation,Min또는Max)를 지정한 경우, 통계량과 일치하는 차원에 대해 정규화합니다. 그렇지 않은 경우, 훈련 시점에 통계량을 다시 계산하고 채널별 정규화를 적용합니다."channel"– 채널별 정규화."all"– 스칼라 통계량을 사용하여 모든 값을 정규화합니다.
FeatureInputLayer 객체는 이 속성을 문자형 벡터로 저장합니다.
중심 0 및 z-점수 정규화에서의 평균값으로, 특징당 평균값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
Mean 속성을 지정하려면 Normalization 속성이 "zerocenter" 또는 "zscore"이어야 합니다. Mean이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 평균을 계산하고 결과 값을 사용합니다.initialize함수와dlnetwork함수는Initialize옵션이1(true)인 경우 속성을0으로 설정합니다.
Mean은 복소수 값일 수 있습니다. (R2024a 이후) Mean이 복소수 값이면 SplitComplexInputs 옵션은 0(false)이어야 합니다.
R2024a 이전: SplitComplexInputs 옵션을 1(true)로 설정하여 평균을 실수부와 허수부로 분할하고 입력 데이터를 실수부와 허수부로 분할할 수 있습니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부: 예
z-점수 정규화에 사용되는 표준편차로, 특징당 평균값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
StandardDeviation 속성을 지정하려면 Normalization 속성이 "zscore"이어야 합니다. StandardDeviation이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 표준편차를 계산하고 결과 값을 사용합니다.initialize함수와dlnetwork함수는Initialize옵션이1(true)인 경우 속성을1로 설정합니다.
StandardDeviation은 복소수 값일 수 있습니다. (R2024a 이후) StandardDeviation이 복소수 값이면 SplitComplexInputs 옵션은 0(false)이어야 합니다.
R2024a 이전: SplitComplexInputs 옵션을 1(true)로 설정하여 표준편차를 실수부와 허수부로 분할하고 입력 데이터를 실수부와 허수부로 분할할 수 있습니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부: 예
다시 스케일링하기 위한 최솟값으로, 특징당 최솟값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
Min 속성을 지정하려면 Normalization이 "rescale-symmetric" 또는 "rescale-zero-one"이어야 합니다. Min이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 최솟값을 계산하고 결과 값을 사용합니다.Initialize옵션이1(true)인 경우initialize함수와dlnetwork함수는Normalization이"rescale-symmetric"및"rescale-zero-one"일 때 속성을 각각-1및0으로 설정합니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
다시 스케일링하기 위한 최댓값으로, 특징당 최댓값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
Max 속성을 지정하려면 Normalization이 "rescale-symmetric" 또는 "rescale-zero-one"이어야 합니다. Max이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 최댓값을 계산하고 결과 값을 사용합니다.initialize함수와dlnetwork함수는Initialize옵션이1(true)인 경우 속성을1로 설정합니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
입력 데이터를 실수부와 허수부로 분할하는 플래그로, 다음 값 중 하나로 지정됩니다.
0(false) – 입력 데이터를 분할하지 않습니다.1(true) – 데이터를 실수부와 허수부로 분할합니다.
SplitComplexInputs가 1인 경우 계층은 입력 데이터보다 두 배 많은 수의 채널을 출력합니다. 예를 들어, 입력 데이터가 numChannels개의 채널을 갖는 복소수 값이면 계층은 2*numChannels개의 채널을 갖는 데이터를 출력합니다. 이때 채널 1부터 numChannels는 입력 데이터의 실수부를 포함하고 numChannels+1부터 2*numChannels는 입력 데이터의 허수부를 포함합니다. 입력 데이터가 실수인 경우 채널 numChannels+1부터 2*numChannels이 모두 0입니다.
입력 데이터가 복소수 값이고 SplitComplexInputs가 0(false)인 경우, 계층은 복소수 값을 갖는 데이터를 다음 계층에 전달합니다. (R2024a 이후)
R2024a 이전: 복소수 값 데이터를 신경망에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1(true)이어야 합니다.
복소수 값 데이터를 갖는 신경망을 훈련시키는 방법을 보여주는 예제는 Train Network with Complex-Valued Data 항목을 참조하십시오.
속성
특징 입력값
데이터의 각 관측값의 특징 개수로, 양의 정수로 지정됩니다.
영상 입력의 경우 imageInputLayer를 사용하십시오.
데이터가 입력 계층을 통과하여 순방향으로 전파될 때마다 적용할 데이터 정규화로, 다음 중 하나로 지정됩니다.
"zerocenter"—Mean으로 지정된 평균값을 뺍니다."zscore"—Mean으로 지정된 평균값을 빼고StandardDeviation으로 나눕니다."rescale-symmetric"—Min으로 지정된 최솟값과Max로 지정된 최댓값을 사용하여 입력값이 [-1, 1] 범위 내에 오도록 다시 스케일링합니다."rescale-zero-one"—Min으로 지정된 최솟값과Max로 지정된 최댓값을 사용하여 입력값이 [0, 1] 범위 내에 오도록 다시 스케일링합니다."none"— 입력 데이터를 정규화하지 않습니다.함수 핸들 — 지정된 함수를 사용하여 데이터를 정규화합니다. 함수는
Y = f(X)형식이 되어야 합니다. 여기서X는 입력 데이터이고 출력값Y는 정규화된 데이터입니다.
입력 데이터가 복소수 값이고 SplitComplexInputs 옵션이 0(false)인 경우 Normalization 옵션은 "zerocenter", "zscore", "none" 또는 함수 핸들이어야 합니다. (R2024a 이후)
R2024a 이전: 복소수 값 데이터를 신경망에 입력하려면 SplitComplexInputs 옵션이 1(true)이어야 합니다.
팁
기본적으로 trainnet 함수를 사용할 때 자동으로 정규화 통계량이 계산됩니다. 훈련 중에 시간을 절약하려면 정규화에 필요한 통계량을 지정하고 trainingOptions의 ResetInputNormalization 옵션을 0(false)으로 설정하십시오.
FeatureInputLayer 객체는 이 속성을 문자형 벡터 또는 함수 핸들로 저장합니다.
정규화 차원으로, 다음 중 하나로 지정됩니다.
"auto"–ResetInputNormalization훈련 옵션이0(false)이고 정규화 통계량 중 하나(Mean,StandardDeviation,Min또는Max)를 지정한 경우, 통계량과 일치하는 차원에 대해 정규화합니다. 그렇지 않은 경우, 훈련 시점에 통계량을 다시 계산하고 채널별 정규화를 적용합니다."channel"– 채널별 정규화."all"– 스칼라 통계량을 사용하여 모든 값을 정규화합니다.
FeatureInputLayer 객체는 이 속성을 문자형 벡터로 저장합니다.
중심 0 및 z-점수 정규화에서의 평균값으로, 특징당 평균값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
Mean 속성을 지정하려면 Normalization 속성이 "zerocenter" 또는 "zscore"이어야 합니다. Mean이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 평균을 계산하고 결과 값을 사용합니다.initialize함수와dlnetwork함수는Initialize옵션이1(true)인 경우 속성을0으로 설정합니다.
Mean은 복소수 값일 수 있습니다. (R2024a 이후) Mean이 복소수 값이면 SplitComplexInputs 옵션은 0(false)이어야 합니다.
R2024a 이전: SplitComplexInputs 옵션을 1(true)로 설정하여 평균을 실수부와 허수부로 분할하고 입력 데이터를 실수부와 허수부로 분할할 수 있습니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부: 예
z-점수 정규화에 사용되는 표준편차로, 특징당 평균값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
StandardDeviation 속성을 지정하려면 Normalization 속성이 "zscore"이어야 합니다. StandardDeviation이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 표준편차를 계산하고 결과 값을 사용합니다.initialize함수와dlnetwork함수는Initialize옵션이1(true)인 경우 속성을1로 설정합니다.
StandardDeviation은 복소수 값일 수 있습니다. (R2024a 이후) StandardDeviation이 복소수 값이면 SplitComplexInputs 옵션은 0(false)이어야 합니다.
R2024a 이전: SplitComplexInputs 옵션을 1(true)로 설정하여 표준편차를 실수부와 허수부로 분할하고 입력 데이터를 실수부와 허수부로 분할할 수 있습니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부: 예
다시 스케일링하기 위한 최솟값으로, 특징당 최솟값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
Min 속성을 지정하려면 Normalization이 "rescale-symmetric" 또는 "rescale-zero-one"이어야 합니다. Min이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 최솟값을 계산하고 결과 값을 사용합니다.Initialize옵션이1(true)인 경우initialize함수와dlnetwork함수는Normalization이"rescale-symmetric"및"rescale-zero-one"일 때 속성을 각각-1및0으로 설정합니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
다시 스케일링하기 위한 최댓값으로, 특징당 최댓값으로 구성된 1×numFeatures 벡터, 숫자형 스칼라 또는 []로 지정됩니다.
Max 속성을 지정하려면 Normalization이 "rescale-symmetric" 또는 "rescale-zero-one"이어야 합니다. Max이 []이면 훈련 시점이나 초기화 시점에 속성이 자동으로 설정됩니다.
trainnet함수는 훈련 데이터를 사용하여 최댓값을 계산하고 결과 값을 사용합니다.initialize함수와dlnetwork함수는Initialize옵션이1(true)인 경우 속성을1로 설정합니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
읽기 전용 속성입니다.
입력 데이터를 실수부와 허수부로 분할하는 플래그로, 다음 값 중 하나로 지정됩니다.
0(false) – 입력 데이터를 분할하지 않습니다.1(true) – 데이터를 실수부와 허수부로 분할합니다.
SplitComplexInputs가 1인 경우 계층은 입력 데이터보다 두 배 많은 수의 채널을 출력합니다. 예를 들어, 입력 데이터가 numChannels개의 채널을 갖는 복소수 값이면 계층은 2*numChannels개의 채널을 갖는 데이터를 출력합니다. 이때 채널 1부터 numChannels는 입력 데이터의 실수부를 포함하고 numChannels+1부터 2*numChannels는 입력 데이터의 허수부를 포함합니다. 입력 데이터가 실수인 경우 채널 numChannels+1부터 2*numChannels이 모두 0입니다.
입력 데이터가 복소수 값이고 SplitComplexInputs가 0(false)인 경우, 계층은 복소수 값을 갖는 데이터를 다음 계층에 전달합니다. (R2024a 이후)
R2024a 이전: 복소수 값 데이터를 신경망에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1(true)이어야 합니다.
복소수 값 데이터를 갖는 신경망을 훈련시키는 방법을 보여주는 예제는 Train Network with Complex-Valued Data 항목을 참조하십시오.
계층
읽기 전용 속성입니다.
계층의 입력값 개수. 이 계층에는 입력값이 없습니다.
데이터형: double
읽기 전용 속성입니다.
계층의 입력값 이름. 이 계층에는 입력값이 없습니다.
데이터형: cell
읽기 전용 속성입니다.
계층의 출력값 개수로, 1로 저장됩니다. 이 계층은 단일 출력값만 가집니다.
데이터형: double
읽기 전용 속성입니다.
출력값 이름으로, {'out'}으로 저장됩니다. 이 계층은 단일 출력값만 가집니다.
데이터형: cell
예제
이름이 "input"이고 21개의 특징으로 구성된 관측값을 갖는 특징 입력 계층을 만듭니다.
layer = featureInputLayer(21,Name="input")layer =
FeatureInputLayer with properties:
Name: 'input'
InputSize: 21
SplitComplexInputs: 0
Hyperparameters
Normalization: 'none'
NormalizationDimension: 'auto'
Layer 배열에 특징 입력 계층을 포함시킵니다.
numFeatures = 21;
numClasses = 3;
layers = [
featureInputLayer(numFeatures)
fullyConnectedLayer(numClasses)
softmaxLayer]layers =
3×1 Layer array with layers:
1 '' Feature Input 21 features
2 '' Fully Connected 3 fully connected layer
3 '' Softmax softmax
입력 영상의 크기, 각 관측값의 특징 개수, 클래스 개수, 컨벌루션 계층의 필터 크기와 개수를 정의합니다.
imageInputSize = [28 28 1]; numFeatures = 1; numClasses = 10; filterSize = 5; numFilters = 16;
두 개의 입력값이 있는 신경망을 만들려면 신경망을 두 부분으로 정의한 다음 두 부분을 합칩니다. 예를 들어 결합 계층을 사용할 수 있습니다.
dlnetwork 객체를 만듭니다.
net = dlnetwork;
신경망의 첫 번째 부분을 정의합니다. 영상 분류 계층을 정의하고 마지막 완전 연결 계층 앞에 평탄화 계층과 결합 계층을 포함합니다.
layers = [
imageInputLayer(imageInputSize,Normalization="none")
convolution2dLayer(filterSize,numFilters,Name="conv")
reluLayer
fullyConnectedLayer(50)
flattenLayer
concatenationLayer(1,2,Name="concat")
fullyConnectedLayer(numClasses)
softmaxLayer];
net = addLayers(net,layers);신경망의 두 번째 부분에서는 특징 입력 계층을 추가하고 이를 결합 계층의 두 번째 입력에 연결합니다.
featInput = featureInputLayer(numFeatures,Name="features"); net = addLayers(net,featInput); net = connectLayers(net,"features","concat/in2")
net =
dlnetwork with properties:
Layers: [9×1 nnet.cnn.layer.Layer]
Connections: [8×2 table]
Learnables: [6×3 table]
State: [0×3 table]
InputNames: {'imageinput' 'features'}
OutputNames: {'softmax'}
Initialized: 0
View summary with summary.
신경망을 시각화합니다.
plot(net)

숫자형 특징으로 구성된 데이터 세트(예: 공간 차원 또는 시간 차원이 없는 테이블 형식 데이터)가 있는 경우, 특징 입력 계층을 사용하여 심층 신경망을 훈련시킬 수 있습니다.
CSV 파일 "transmissionCasingData.csv"에서 변속기 케이싱 데이터를 읽어 들입니다.
filename = "transmissionCasingData.csv"; tbl = readtable(filename,TextType="String");
convertvars 함수를 사용하여 예측을 위한 레이블을 categorical형으로 변환합니다.
labelName = "GearToothCondition"; tbl = convertvars(tbl,labelName,"categorical");
범주형 특징을 사용하여 신경망을 훈련시키려면 먼저 범주형 특징을 숫자형으로 변환해야 합니다. 먼저 모든 범주형 입력 변수의 이름을 포함하는 string형 배열을 지정하여 convertvars 함수를 사용해서 범주형 예측 변수를 categorical형으로 변환합니다. 이 데이터 세트에는 이름이 "SensorCondition"과 "ShaftCondition"인 범주형 특징이 2개 있습니다.
categoricalPredictorNames = ["SensorCondition" "ShaftCondition"]; tbl = convertvars(tbl,categoricalPredictorNames,"categorical");
범주형 입력 변수를 루프를 사용해 순환합니다. 각 변수에 대해 onehotencode 함수를 사용하여 categorical형 값을 one-hot 형식으로 인코딩된 벡터로 변환합니다.
for i = 1:numel(categoricalPredictorNames) name = categoricalPredictorNames(i); tbl.(name) = onehotencode(tbl.(name),2); end
테이블의 처음 몇 개 행을 봅니다. 범주형 예측 변수가 여러 개의 열로 분할된 것을 볼 수 있습니다.
head(tbl)
SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis SensorCondition ShaftCondition GearToothCondition
________ _________ ______ _______ _______ ____________ ___________ ___________ ______________ _______ ______________ ________________ ________________ _______________ ________ _____________ ________ ________________ _______________ ______________ __________________
-0.94876 -0.9722 1.3726 0.98387 0.81571 3.6314 -0.041525 2.2666 2.0514 0.8081 28562 1.1429 0.031581 79.931 0 6.75e-06 3.23e-07 162.13 0 1 1 0 No Tooth Fault
-0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 29418 1.1362 0.037835 70.325 0 5.08e-08 9.16e-08 226.12 0 1 1 0 No Tooth Fault
1.0502 1.0267 1.4449 0.98491 2.8157 3.6314 -0.04162 2.2658 1.9487 0.80853 31710 1.1479 0.031565 125.19 0 6.74e-06 2.85e-07 162.13 0 1 0 1 No Tooth Fault
1.0227 1.0045 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 1.1472 0.032088 112.5 0 4.99e-06 2.4e-07 162.13 0 1 0 1 No Tooth Fault
1.0123 1.0024 1.4202 0.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 0 3.62e-06 2.28e-07 230.39 0 1 0 1 No Tooth Fault
1.0275 1.0102 1.4338 1.0001 2.8157 3.6314 -0.02659 2.2439 1.9638 0.81589 31102 1.0985 0.033427 64.576 0 2.55e-06 1.65e-07 230.39 0 1 0 1 No Tooth Fault
1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 31665 1.1417 0.034159 98.838 0 1.73e-06 1.55e-07 230.39 0 1 0 1 No Tooth Fault
1.0459 1.0257 1.4402 0.98047 2.8157 3.6314 -0.035405 2.2757 1.955 0.80583 31554 1.1345 0.0353 44.223 0 1.11e-06 1.39e-07 230.39 0 1 0 1 No Tooth Fault
데이터 세트의 클래스 이름을 봅니다.
classNames = categories(tbl{:,labelName})classNames = 2×1 cell
{'No Tooth Fault'}
{'Tooth Fault' }
테스트를 위해 데이터를 남겨 둡니다. 데이터의 85%가 포함된 훈련 세트와 데이터의 나머지 15%가 포함된 테스트 세트로 데이터를 분할합니다. 데이터를 분할하려면 이 예제에 지원 파일로 첨부된 trainingPartitions 함수를 사용합니다. 이 파일에 액세스하려면 이 예제를 라이브 스크립트로 여십시오.
numObservations = size(tbl,1); [idxTrain,idxTest] = trainingPartitions(numObservations,[0.85 0.15]); tblTrain = tbl(idxTrain,:); tblTest = tbl(idxTest,:);
데이터를 trainnet 함수가 지원하는 형식으로 변환합니다. 예측 변수와 목표값을 각각 숫자형 배열과 categorical형 배열로 변환합니다. 특징 입력값의 경우, 신경망은 행이 관측값에 대응하고 열이 특징에 대응하도록 구성된 데이터가 필요합니다. 데이터가 이러한 레이아웃이 아니라면 데이터를 전처리해서 이러한 레이아웃을 갖도록 만들거나 데이터 형식을 사용하여 레이아웃 정보를 제공할 수 있습니다. 자세한 내용은 Deep Learning Data Formats 항목을 참조하십시오.
predictorNames = ["SigMean" "SigMedian" "SigRMS" "SigVar" "SigPeak" "SigPeak2Peak" ... "SigSkewness" "SigKurtosis" "SigCrestFactor" "SigMAD" "SigRangeCumSum" ... "SigCorrDimension" "SigApproxEntropy" "SigLyapExponent" "PeakFreq" ... "HighFreqPower" "EnvPower" "PeakSpecKurtosis" "SensorCondition" "ShaftCondition"]; XTrain = table2array(tblTrain(:,predictorNames)); TTrain = tblTrain.(labelName); XTest = table2array(tblTest(:,predictorNames)); TTest = tblTest.(labelName);
특징 입력 계층을 갖는 신경망을 정의하고 특징 개수를 지정합니다. 또한, Z-점수 정규화를 사용하여 데이터를 정규화하도록 입력 계층을 구성합니다.
numFeatures = size(XTrain,2);
numClasses = numel(classNames);
layers = [
featureInputLayer(numFeatures,Normalization="zscore")
fullyConnectedLayer(16)
layerNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer];다음과 같이 훈련 옵션을 지정합니다.
L-BFGS 솔버를 사용하여 훈련시킵니다. 이 솔버는 신경망이 작고 데이터가 메모리에 들어가는 정도의 크기인 작업에 적합합니다.
CPU를 사용하여 훈련시킵니다. 신경망과 데이터가 작으므로 CPU가 더 적절합니다.
훈련 진행 상황을 플롯으로 표시합니다.
세부 정보가 출력되지 않도록 합니다.
options = trainingOptions("lbfgs", ... ExecutionEnvironment="cpu", ... Plots="training-progress", ... Verbose=false);
trainnet 함수를 사용하여 신경망을 훈련시킵니다. 분류에는 교차 엔트로피 손실을 사용합니다.
net = trainnet(XTrain,TTrain,layers,"crossentropy",options);
레이블이 지정된 테스트 세트를 사용하여 신경망을 테스트합니다. 단일 레이블 분류의 경우 정확도를 평가합니다. 정확도는 신경망이 올바르게 예측하는 레이블의 비율입니다.
accuracy = testnet(net,XTest,TTest,"accuracy")accuracy = 100
훈련된 신경망을 사용하여 테스트 데이터의 레이블을 예측합니다. 훈련된 신경망을 사용하여 분류 점수를 예측한 다음 scores2label 함수를 사용하여 예측값을 레이블로 변환합니다.
scoresTest = minibatchpredict(net,XTest); YTest = scores2label(scoresTest,classNames);
예측값을 혼동행렬 차트로 시각화합니다.
confusionchart(TTest,YTest)

알고리즘
계층 배열 또는 계층 그래프의 계층은 뒤에 오는 계층에 데이터를 전달할 때 형식이 지정된 dlarray 객체로 전달합니다. dlarray 객체의 형식은 문자들로 구성된 문자열로, 각 문자는 데이터의 대응되는 차원을 설명합니다. 형식은 다음 문자 중 하나 이상으로 구성됩니다.
"S"— 공간"C"— 채널"B"— 배치"T"— 시간"U"— 지정되지 않음
예를 들어 테이블 형식 데이터를 2차원 배열로 표현할 수 있습니다. 여기서 첫 번째 차원과 두 번째 차원은 각각 배치 차원과 채널 차원에 대응됩니다. 이 표현은 "BC"(배치, 채널) 형식입니다.
신경망의 입력 계층은 신경망에 필요한 데이터의 레이아웃을 지정합니다. 다른 레이아웃의 데이터를 가지고 있다면 InputDataFormats 훈련 옵션을 사용하여 레이아웃을 지정하십시오.
계층은 N×c 배열을 신경망에 입력합니다. 여기서 N과 c는 각각 데이터의 관측값 개수와 채널 개수입니다. 이 레이아웃의 데이터는 "BC"(배치, 채널) 데이터 형식을 갖습니다.
확장 기능
코드 생성 시 미지정(U) 차원을 가진
dlarray객체를 이 계층으로 전달하는 것은 지원되지 않습니다.코드 생성 시 복소수 입력값은 지원되지 않으며
'SplitComplexInputs'옵션도 지원되지 않습니다.
GPU Coder™를 사용하여 CUDA® 또는 C++ 코드를 생성하려면 먼저 심층 신경망을 생성하고 훈련시켜야 합니다. 신경망이 훈련되고 평가된 후에는 코드를 생성하고 NVIDIA® 또는 ARM® GPU 프로세서를 사용하는 플랫폼에 컨벌루션 신경망을 배포하도록 코드 생성기를 구성할 수 있습니다. 자세한 내용은 GPU Coder를 사용한 딥러닝 (GPU Coder) 항목을 참조하십시오.
코드 생성 시 미지정(U) 차원을 가진
dlarray객체를 이 계층으로 전달하는 것은 지원되지 않습니다.코드 생성 시 복소수 입력값은 지원되지 않으며
'SplitComplexInputs'옵션도 지원되지 않습니다.
버전 내역
R2020b에 개발됨신경망에 대한 입력이 복소수 값인 경우, SplitComplexIputs가 0(false)이면 계층은 뒤에 오는 계층에 복소수 값 데이터를 전달합니다.
입력 데이터가 복소수 값이고 SplitComplexInputs 옵션이 0(false)인 경우 Normalization 옵션은 "zerocenter", "zscore", "none" 또는 함수 핸들이어야 합니다. 계층의 Mean 속성과 StandardDeviation 속성은 정규화 옵션이 "zerocenter" 및 "zscore"인 경우 복소수 값 데이터도 지원합니다.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)