신경망 객체 속성
다음과 같은 속성은 신경망의 기본 특징을 정의합니다. 신경망 하위객체 속성에서는 신경망을 정의하는 속성에 대해 자세히 설명합니다.
일반
다음은 신경망의 일반적인 속성입니다.
net.name
이 속성은 신경망 이름을 정의하는 문자열로 이루어져 있습니다. feedforwardnet
과 같은 신경망 생성 함수는 이 속성을 적절하게 정의합니다. 그러나 원하는 어떤 문자열로도 설정할 수 있습니다.
net.userdata
이 속성은 사용자가 network 객체에 사용자 지정 정보를 추가할 수 있는 장소를 제공합니다. 하나의 필드만 미리 정의되어 있습니다. 이 필드는 모든 Deep Learning Toolbox™ 사용자를 대상으로 하는 비밀 메시지를 포함합니다.
net.userdata.note
아키텍처
다음과 같은 속성은 신경망 하위객체(입력값, 계층, 출력값, 목표값, 편향, 가중치 등)의 개수와 이들이 연결되는 방식을 결정합니다.
net.numInputs
이 속성은 신경망이 받는 입력값의 개수를 정의합니다. 이 속성은 0 또는 양의 정수로 설정할 수 있습니다.
명확한 설명. 신경망 입력값의 개수와 신경망 입력값의 크기는 같지 않습니다. 입력값의 개수는 신경망이 입력값으로서 몇 개의 벡터 세트를 받는지 정의합니다. 각 입력값의 크기(즉, 각 입력 벡터의 요소 개수)는 입력 크기(net.inputs{i}.size
)로 결정됩니다.
대부분의 신경망은 하나의 입력값만 가지며, 입력값의 크기는 문제에 의해 결정됩니다.
부수 효과. 이 속성을 변경하면 입력값에서 계층으로의 연결(net.inputConnect
)을 정의하는 행렬의 크기와 입력 하위객체(net.inputs
)로 구성된 셀형 배열의 크기가 변경됩니다.
net.numLayers
이 속성은 신경망이 가진 계층의 개수를 정의합니다. 이 속성은 0 또는 양의 정수로 설정할 수 있습니다.
부수 효과. 이 속성을 변경하면 계층과의 연결을 정의하는 다음과 같은 각 부울 행렬의 크기가 변경됩니다.
net.biasConnect net.inputConnect net.layerConnect net.outputConnect
또한, 계층의 개수에 따라 크기가 결정되는 하위객체 구조체로 구성된 각 셀형 배열의 크기도 변경됩니다.
net.biases net.inputWeights net.layerWeights net.outputs
또한, 신경망의 조정 가능한 파라미터의 각 속성의 크기도 변경됩니다.
net.IW net.LW net.b
net.biasConnect
이 속성은 어느 계층이 편향을 갖는지 정의합니다. 이 속성은 부울 값으로 구성된 임의의 N×1 행렬로 설정할 수 있습니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다. i번째 계층에 대한 편향의 존재(또는 부재) 여부는 다음에서 1(또는 0)로 표시됩니다.
net.biasConnect(i)
부수 효과. 이 속성을 변경하면 편향(net.biases
)으로 구성된 셀형 배열에서 구조체의 존재 또는 부재 여부가 변경되고, 편향 벡터(net.b
)로 구성된 셀형 배열에서 벡터의 존재 또는 부재 여부가 변경됩니다.
net.inputConnect
이 속성은 어느 계층이 입력값에서 온 가중치를 갖는지 정의합니다.
이 속성은 부울 값으로 구성된 임의의 Nl×Ni 행렬로 설정할 수 있습니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)이고 Ni는 신경망 입력값의 개수(net.numInputs
)입니다. j번째 입력값에서 i번째 계층으로 가는 가중치의 존재(또는 부재)는 net.inputConnect(i,j)
에서 1(또는 0)로 표시됩니다.
부수 효과. 이 속성을 변경하면 입력 가중치 하위객체(net.inputWeights
)로 구성된 셀형 배열에서 구조체의 존재 또는 부재 여부가 변경되고, 입력 가중치 행렬(net.IW
)로 구성된 셀형 배열에서 행렬의 존재 또는 부재 여부가 변경됩니다.
net.layerConnect
이 속성은 어느 계층이 다른 계층에서 온 가중치를 갖는지 정의합니다. 이 속성은 부울 값으로 구성된 임의의 NlxNl 행렬로 설정할 수 있습니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다. j번째 입력값에서 i번째 계층으로 가는 가중치의 존재(또는 부재)는 다음에서 1(또는 0)로 표시됩니다.
net.layerConnect(i,j)
부수 효과. 이 속성을 변경하면 계층 가중치 하위객체(net.layerWeights
)로 구성된 셀형 배열에서 구조체의 존재 또는 부재 여부가 변경되고, 계층 가중치 행렬(net.LW
)로 구성된 셀형 배열에서 행렬의 존재 또는 부재 여부가 변경됩니다.
net.outputConnect
이 속성은 어느 계층이 신경망 출력값을 생성하는지 정의합니다. 이 속성은 부울 값으로 구성된 임의의 1xNl 행렬로 설정할 수 있습니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다. i번째 계층에서 생성되는 신경망 출력값의 존재(또는 부재) 여부는 net.outputConnect(i)
에서 1(또는 0)로 표시됩니다.
부수 효과. 이 속성을 변경하면 신경망 출력값의 개수(net.numOutputs
)와 출력 하위객체(net.outputs
)로 구성된 셀형 배열에서 구조체의 존재 또는 부재 여부가 변경됩니다.
net.numOutputs(읽기 전용)
이 속성은 신경망에 몇 개의 출력값이 있는지를 나타냅니다. 이 속성은 항상 net.outputConnect
에 있는 1의 개수와 같습니다.
net.numInputDelays(읽기 전용)
이 속성은 신경망을 시뮬레이션하기 위해 입력해야 하는 지난 입력값의 시간 스텝 개수를 나타냅니다. 이 속성은 항상 신경망 입력 가중치와 연관된 최대 지연값으로 설정됩니다.
numInputDelays = 0; for i=1:net.numLayers for j=1:net.numInputs if net.inputConnect(i,j) numInputDelays = max( ... [numInputDelays net.inputWeights{i,j}.delays]); end end end
net.numLayerDelays(읽기 전용)
이 속성은 신경망을 시뮬레이션하기 위해 입력해야 하는 지난 계층 출력값의 시간 스텝 개수를 나타냅니다. 이 속성은 항상 신경망 계층 가중치와 연관된 최대 지연값으로 설정됩니다.
numLayerDelays = 0; for i=1:net.numLayers for j=1:net.numLayers if net.layerConnect(i,j) numLayerDelays = max( ... [numLayerDelays net.layerWeights{i,j}.delays]); end end end
net.numWeightElements(읽기 전용)
이 속성은 신경망에 있는 가중치 및 편향 값의 개수를 나타냅니다. 이 속성은 다음과 같은 2개의 셀형 배열에 저장된 행렬의 요소 개수의 합입니다.
net.IW new.b
하위객체 구조체
다음과 같은 속성은 신경망의 각 입력값, 계층, 출력값, 목표값, 편향 및 가중치를 정의하는 구조체로 구성된 셀형 배열로 이루어져 있습니다.
각 하위객체 유형에 대한 속성은 신경망 하위객체 속성에서 설명합니다.
net.inputs
이 속성은 신경망의 각 입력값에 대한 속성으로 구성된 구조체를 저장합니다. 이 속성은 항상 입력 구조체로 구성된 Ni×1 셀형 배열입니다. 여기서 Ni는 신경망 입력값의 개수(net.numInputs
)입니다.
i번째 신경망 입력값의 속성을 정의하는 구조체는 다음에 있습니다.
net.inputs{i}
신경망에 입력값이 1개만 있는 경우 다음과 같이 셀형 배열 표기법을 사용하지 않고도 net.inputs{1}
에 액세스할 수 있습니다.
net.input
입력 속성. 입력 속성에 대한 설명은 입력값 항목을 참조하십시오.
net.layers
이 속성은 신경망의 각 계층에 대한 속성으로 구성된 구조체를 저장합니다. 이 속성은 항상 계층 구조체로 구성된 Nl×1 셀형 배열입니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다.
i번째 계층의 속성을 정의하는 구조체는 net.layers{i}
에 있습니다.
계층 속성. 계층 속성에 대한 설명은 계층 항목을 참조하십시오.
net.outputs
이 속성은 신경망의 각 출력값에 대한 속성으로 구성된 구조체를 저장합니다. 이 속성은 항상 Nl×1 셀형 배열입니다. 여기서 Nl은 신경망 출력값의 개수(net.numOutputs
)입니다.
net.outputConnect(i)
가 1(또는 0)이면 i번째 계층(또는 null 행렬 []
)에서의 출력값의 속성을 정의하는 구조체는 net.outputs{i}
에 있습니다.
신경망에 출력값이 계층 i
에 하나만 있는 경우 다음과 같이 셀형 배열 표기법을 사용하지 않고도 net.outputs{i}
에 액세스할 수 있습니다.
net.output
출력 속성. 출력 속성에 대한 설명은 출력값 항목을 참조하십시오.
net.biases
이 속성은 신경망의 각 편향에 대한 속성으로 구성된 구조체를 저장합니다. 이 속성은 항상 Nl×1 셀형 배열입니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다.
net.biasConnect(i)
가 1(또는 0)이면 i번째 계층(또는 null 행렬 []
)과 연관된 편향의 속성을 정의하는 구조체는 net.biases{i}
에 있습니다.
편향 속성. 편향 속성에 대한 설명은 편향 항목을 참조하십시오.
net.inputWeights
이 속성은 신경망의 각 입력 가중치에 대한 속성으로 구성된 구조체를 저장합니다. 이 속성은 항상 Nl×Ni 셀형 배열입니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)이고 Ni는 신경망 입력값의 개수(net.numInputs
)입니다.
net.inputConnect(i,j)
가 1(또는 0)이면 j번째 입력값(또는 null 행렬 []
)에서 i번째 계층으로 가는 가중치의 속성을 정의하는 구조체는 net.inputWeights{i,j}
에 있습니다.
입력 가중치 속성. 입력 가중치 속성에 대한 설명은 입력 가중치 항목을 참조하십시오.
net.layerWeights
이 속성은 신경망의 각 계층 가중치에 대한 속성으로 구성된 구조체를 저장합니다. 이 속성은 항상 Nl×Nl 셀형 배열입니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다.
net.layerConnect(i,j)
가 1(또는 0)이면 j번째 계층(또는 null 행렬 []
)에서 i번째 계층으로 가는 가중치의 속성을 정의하는 구조체는 net.layerWeights{i,j}
에 있습니다.
계층 가중치 속성. 계층 가중치 속성에 대한 설명은 계층 가중치 항목을 참조하십시오.
함수
다음과 같은 속성은 신경망을 적응시켜야 할 경우, 초기화해야 할 경우, 성능을 측정해야 할 경우 또는 훈련시켜야 할 경우에 사용할 알고리즘을 정의합니다.
net.adaptFcn
이 속성은 신경망을 적응시킬 때 사용할 함수를 정의합니다. 이 속성은 임의의 신경망 적응 함수의 이름으로 설정할 수 있습니다. 신경망 적응 함수는 adapt
가 호출될 때마다 적응을 수행하는 데 사용됩니다.
[net,Y,E,Pf,Af] = adapt(NET,P,T,Pi,Ai)
함수 목록을 보려면 help nntrain
을 입력하십시오.
부수 효과. 이 속성이 변경될 때마다 신경망의 적응 파라미터(net.adaptParam
)가 새 함수의 파라미터와 디폴트 값을 포함하도록 설정됩니다.
net.adaptParam
이 속성은 현재 적응 함수의 파라미터와 값을 정의합니다. 각 필드의 의미에 대한 설명을 보려면 현재 적응 함수에 대해 help
를 호출하십시오.
help(net.adaptFcn)
net.derivFcn
이 속성은 신경망이 역전파와 같은 지도 학습 알고리즘을 사용하여 훈련될 때 오차 기울기와 야코비 행렬을 계산하는 데 사용할 도함수를 정의합니다. 이 속성은 임의의 도함수의 이름으로 설정할 수 있습니다.
함수 목록을 보려면 help nnderivative
를 입력하십시오.
net.divideFcn
이 속성은 신경망이 역전파와 같은 지도 학습 알고리즘을 사용하여 훈련될 때 사용할 데이터 분할 함수를 정의합니다. 이 속성은 분할 함수의 이름으로 설정할 수 있습니다.
함수 목록을 보려면 help nndivision
을 입력하십시오.
부수 효과. 이 속성이 변경될 때마다 신경망의 적응 파라미터(net.divideParam
)가 새 함수의 파라미터와 디폴트 값을 포함하도록 설정됩니다.
net.divideParam
이 속성은 현재 데이터 분할 함수의 파라미터와 값을 정의합니다. 각 필드의 의미에 대한 설명을 보려면 다음 명령을 입력하십시오.
help(net.divideFcn)
net.divideMode
이 속성은 데이터 분할 함수가 호출됐을 때 분할할 목표 데이터의 차원을 정의합니다. 이 함수의 디폴트 값은 정적 신경망의 경우 'sample'
이고 동적 신경망의 경우 'time'
입니다. 또한 목표 데이터를 샘플과 시간 스텝으로 분할하려면 'sampletime'
으로 설정할 수 있고, 목표 데이터를 모든 스칼라 값으로 분할하려면 'all'
로 설정할 수 있고, 데이터를 분할하지 않으려면 'none'
으로 설정할 수 있습니다(이 경우 모든 데이터가 훈련용으로 사용되고 검증 또는 테스트용으로는 하나도 사용되지 않음).
net.initFcn
이 속성은 신경망의 가중치 행렬과 편향 벡터를 초기화하는 데 사용할 함수를 정의합니다. 초기화 함수는 init
가 호출될 때마다 신경망을 초기화하는 데 사용됩니다.
net = init(net)
부수 효과. 이 속성이 변경될 때마다 신경망의 초기화 파라미터(net.initParam
)가 새 함수의 파라미터와 디폴트 값을 포함하도록 설정됩니다.
net.initParam
이 속성은 현재 초기화 함수의 파라미터와 값을 정의합니다. 각 필드의 의미에 대한 설명을 보려면 현재 초기화 함수에 대해 help
를 호출하십시오.
help(net.initFcn)
net.performFcn
이 속성은 신경망의 성능을 측정하는 데 사용할 함수를 정의합니다. 성능 함수는 훈련 중에 train
이 호출될 때마다 신경망 성능을 계산하는 데 사용됩니다.
[net,tr] = train(NET,P,T,Pi,Ai)
함수 목록을 보려면 help nnperformance
를 입력하십시오.
부수 효과. 이 속성이 변경될 때마다 신경망의 성능 파라미터(net.performParam
)가 새 함수의 파라미터와 디폴트 값을 포함하도록 설정됩니다.
net.performParam
이 속성은 현재 성능 함수의 파라미터와 값을 정의합니다. 각 필드의 의미에 대한 설명을 보려면 현재 성능 함수에 대해 help
를 호출하십시오.
help(net.performFcn)
net.plotFcns
이 속성은 신경망과 연관된 플롯 함수를 정의하는 문자열로 구성된 행 셀형 배열로 이루어져 있습니다. train
함수에 의해 열리는 신경망 훈련 창에는 각 플로팅 함수에 대한 버튼이 표시됩니다. 훈련 중에 또는 훈련 후에 버튼을 클릭하여 원하는 플롯을 엽니다.
net.plotParams
이 속성은 net.plotFcns
의 각 플롯 함수의 파라미터와 값을 정의하는 구조체로 구성된 행 셀형 배열로 이루어져 있습니다. 각 필드의 의미에 대한 설명을 보려면 각 플롯 함수에 대해 help
를 호출하십시오.
help(net.plotFcns{i})
net.trainFcn
이 속성은 신경망을 훈련시키는 데 사용할 함수를 정의합니다. 이 속성은 임의의 훈련 함수의 이름으로 설정할 수 있습니다. 훈련 함수는 train
이 호출될 때마다 신경망을 훈련시키는 데 사용됩니다.
[net,tr] = train(NET,P,T,Pi,Ai)
함수 목록을 보려면 help nntrain
을 입력하십시오.
부수 효과. 이 속성이 변경될 때마다 신경망의 훈련 파라미터(net.trainParam
)가 새 함수의 파라미터와 디폴트 값을 포함하도록 설정됩니다.
net.trainParam
이 속성은 현재 훈련 함수의 파라미터와 값을 정의합니다. 각 필드의 의미에 대한 설명을 보려면 현재 훈련 함수에 대해 help
를 호출하십시오.
help(net.trainFcn)
가중치 및 편향 값
다음과 같은 속성은 신경망의 조정 가능한 파라미터인 가중치 행렬과 편향 벡터를 정의합니다.
net.IW
이 속성은 신경망 입력값에서 계층으로 가는 가중치로 구성된 가중치 행렬을 정의합니다. 이 속성은 항상 Nl×Ni 셀형 배열입니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)이고 Ni는 신경망 입력값의 개수(net.numInputs
)입니다.
net.inputConnect(i,j)
가 1
(또는 0
)이면 j번째 입력값(또는 null 행렬 []
)에서 i번째 계층으로 가는 가중치에 대한 가중치 행렬은 net.IW{i,j}
에 있습니다.
가중치 행렬에는 가중치가 가는 계층의 크기(net.layers{i}.size
)와 같은 개수의 행이 있습니다. 가중치 행렬에는 가중치와 연관된 지연의 개수에 입력 크기를 곱한 것과 같은 개수의 열이 있습니다.
net.inputs{j}.size * length(net.inputWeights{i,j}.delays)
전처리 함수 net.inputs{i}.processFcns
는 일부 신경망에서 기본적으로 'removeconstantrows'
로 지정됩니다. 이 경우 신경망 입력값 X
에 모든 행 요소가 동일한 값을 갖는 m
개의 행이 포함되어 있으면 가중치 행렬의 열은 위의 곱보다 m
개 적습니다. 신경망 입력값 X
에 대한 자세한 내용은 train
을 참조하십시오.
이러한 차원은 입력 가중치 속성에서 얻을 수 있습니다.
net.inputWeights{i,j}.size
net.LW
이 속성은 계층에서 다른 계층으로 가는 가중치로 구성된 가중치 행렬을 정의합니다. 이 속성은 항상 Nl×Nl 셀형 배열입니다. 여기서 Nl은 신경망 계층의 개수(net.numLayers
)입니다.
net.layerConnect(i,j)
가 1(또는 0)이면 j번째 계층(또는 null 행렬 []
)에서 i번째 계층으로 가는 가중치에 대한 가중치 행렬은 net.LW{i,j}
에 있습니다.
가중치 행렬에는 가중치가 가는 계층의 크기(net.layers{i}.size
)와 같은 개수의 행이 있습니다. 가중치 행렬에는 가중치와 연관된 지연의 개수에 가중치가 온 계층의 크기를 곱한 것과 같은 개수의 열이 있습니다.
net.layers{j}.size * length(net.layerWeights{i,j}.delays)
이러한 차원은 계층 가중치 속성에서 얻을 수 있습니다.
net.layerWeights{i,j}.size
net.b
이 속성은 편향이 있는 각 계층에 대해 편향 벡터를 정의합니다. 이 속성은 항상 Nl ×1 셀형 배열입니다. 여기서 Nl 은 신경망 계층의 개수(net.numLayers
)입니다.
net.biasConnect(i)
가 1(또는 0)이면 i번째 계층(또는 null 행렬 []
)의 편향 벡터는 net.b{i}
에 있습니다.
편향 벡터의 요소 개수는 항상 편향 벡터와 연관된 계층의 크기(net.layers{i}.size
)와 같습니다.
이 차원은 편향 속성에서 얻을 수 있습니다.
net.biases{i}.size
참고 항목
feedforwardnet
| patternnet
| network