ニューラル ネットワーク オブジェクトのプロパティ
これらのプロパティは、ネットワークの基本的特徴を定義します。ネットワークの詳細を定義するプロパティについては、ニューラル ネットワーク サブオブジェクトのプロパティで説明します。
一般
ニューラル ネットワークの一般的なプロパティを以下に示します。
net.name
このプロパティは、ネットワークの名前を定義する文字列で構成されます。これは、feedforwardnet
などのネットワーク作成関数で適切に定義されます。ただし、必要に応じて任意の文字列に設定できます。
net.userdata
このプロパティを使用すると、カスタム情報をネットワーク オブジェクトに追加できます。1 つのフィールドのみが事前定義されています。それには、すべての Deep Learning Toolbox™ ユーザーに対する "秘密の" メッセージが含まれています。
net.userdata.note
アーキテクチャ
以下のプロパティによって、ネットワーク サブオブジェクト (入力、層、出力、ターゲット、バイアス、および重みを含む) の数とそれらがどのように結合されるかが決定されます。
net.numInputs
このプロパティでは、ネットワークが受け取る入力の数を定義します。これは 0 または正の整数に設定されます。
説明. ネットワーク入力の数とネットワーク入力のサイズは同じものでは "ありません"。入力の数は、ネットワークが入力として受け取るベクトルのセット数を定義します。各入力のサイズ (つまり、各入力ベクトルの要素数) は、入力サイズ (net.inputs{i}.size
) によって決まります。
ほとんどのネットワークには、入力が 1 つだけあり、そのサイズは問題によって決まります。
副作用. このプロパティを変更すると、入力から層への結合を定義する行列のサイズ (net.inputConnect
) および入力サブオブジェクトの cell 配列のサイズ (net.inputs
) が変化します。
net.numLayers
このプロパティでは、ネットワークにある層の数を定義します。これは 0 または正の整数に設定されます。
副作用. このプロパティを変更すると、層との結合を定義する、以下の各ブール行列のサイズが変化します。
net.biasConnect net.inputConnect net.layerConnect net.outputConnect
また、サイズが層の数に依存する、サブオブジェクト構造体の各 cell 配列のサイズが変化します。
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)
副作用. このプロパティを変更すると、バイアスの cell 配列 (net.biases
) 内の構造体の有無とバイアス ベクトルの cell 配列 (net.b
) 内のベクトルの有無が変化します。
net.inputConnect
このプロパティでは、どの層に入力からの重みがあるかを定義します。
これはブール値から成る任意の Nl 行 Ni 列の行列に設定できます。ここで、Nl は、ネットワークの層の数 (net.numLayers
)、Ni はネットワーク入力の数 (net.numInputs
) です。j 番目の入力から i 番目の層への重みの有無は、net.inputConnect(i,j)
が 1 か 0 かで示されます。
副作用. このプロパティを変更すると、入力重みサブオブジェクトの cell 配列 (net.inputWeights
) 内の構造体の有無と入力重み行列の cell 配列 (net.IW
) 内の行列の有無が変化します。
net.layerConnect
このプロパティでは、どの層に他の層からの重みがあるかを定義します。これはブール値から成る任意の Nl 行 Nl 列の行列に設定できます。ここで、Nl は、ネットワークの層の数 (net.numLayers
) です。j 番目の層から i 番目の層への重みの有無は、次の値が 1 か 0 かで示されます。
net.layerConnect(i,j)
副作用. このプロパティを変更すると、層の重みサブオブジェクトの cell 配列 (net.layerWeights
) における構造体の有無と層の重み行列の cell 配列 (net.LW
) における行列の有無が変化します。
net.outputConnect
このプロパティでは、どの層がネットワーク出力を生成するかを定義します。これはブール値から成る任意の 1 行 Nl 列の行列に設定できます。ここで、Nl は、ネットワークの層の数 (net.numLayers
) です。i 番目の層からのネットワーク出力の有無は、net.outputConnect(i)
が 1 か 0 かで示されます。
副作用. このプロパティを変更すると、ネットワーク出力の数 (net.numOutputs
) と出力サブオブジェクトの cell 配列 (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 つの cell 配列に格納される行列の要素数の和です。
net.IW new.b
サブオブジェクト構造体
以下のプロパティは、ネットワークの入力、層、出力、ターゲット、バイアス、および重みをそれぞれ定義する構造体の cell 配列で構成されます。
それぞれの種類のサブオブジェクトのプロパティについては、ニューラル ネットワーク サブオブジェクトのプロパティで説明します。
net.inputs
このプロパティは、ネットワークの各入力に関するプロパティの構造体を保持します。これは常に、入力構造体の Ni 行 1 列の cell 配列です。ここで、Ni は、ネットワーク入力の数 (net.numInputs
) です。
i 番目のネットワーク入力のプロパティを定義する構造体は以下にあります。
net.inputs{i}
ニューラル ネットワークにある入力が 1 つだけの場合、次のように cell 配列表記なしで net.inputs{1}
にアクセスできます。
net.input
入力プロパティ. 入力プロパティの説明については、入力を参照してください。
net.layers
このプロパティは、ネットワークの各層に関するプロパティの構造体を保持します。これは常に、層構造体の Nl 行 1 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
) です。
i 番目の層のプロパティを定義する構造体は net.layers{i}
にあります。
層のプロパティ. 層のプロパティの説明については、層を参照してください。
net.outputs
このプロパティは、ネットワークの各出力に関するプロパティの構造体を保持します。これは常に、1 行 Nl 列の cell 配列です。ここで、Nl は、ネットワーク出力の数 (net.numOutputs
) です。
net.outputConnect(i)
が 1 (または 0) の場合、i 番目の層からの出力のプロパティを定義する構造体 (または null 行列 []
) が net.outputs{i}
にあります。
ニューラル ネットワークの層 i
にある出力が 1 つだけの場合、次のように cell 配列表記なしで net.outputs{i}
にアクセスできます。
net.output
出力プロパティ. 出力プロパティの説明については、出力を参照してください。
net.biases
このプロパティは、ネットワークの各バイアスに関するプロパティの構造体を保持します。これは常に、Nl 行 1 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
) です。
net.biasConnect(i)
が 1 (または 0) の場合、i 番目の層に関連付けられているバイアスのプロパティを定義する構造体 (または null 行列 []
) が net.biases{i}
にあります。
バイアス プロパティ. バイアス プロパティの説明については、バイアスを参照してください。
net.inputWeights
このプロパティは、ネットワークの各入力重みに関するプロパティの構造体を保持します。これは常に、Nl 行 Ni 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
)、Ni はネットワーク入力の数 (net.numInputs
) です。
net.inputConnect(i,j)
が 1 (または 0) の場合、j 番目の入力から i 番目の層への重みのプロパティを定義する構造体 (または null 行列 []
) が net.inputWeights{i,j}
にあります。
入力重みプロパティ. 入力重みプロパティの説明については、入力重みを参照してください。
net.layerWeights
このプロパティは、ネットワークの各層の重みに関するプロパティの構造体を保持します。これは常に、Nl 行 Nl 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
) です。
net.layerConnect(i,j)
が 1 (または 0) の場合、j 番目の層から i 番目の層への重みのプロパティを定義する構造体 (または null 行列 []
) が 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
このプロパティは、ネットワークに関連付けられるプロット関数を定義する文字列の行 cell 配列で構成されます。関数 train
によって開かれるニューラル ネットワーク学習ウィンドウに、各プロット関数のボタンが表示されます。学習時または学習後にボタンをクリックすると目的のプロットが開きます。
net.plotParams
このプロパティは、net.plotFcns
内の各プロット関数のパラメーターおよび値を定義する構造体の行 cell 配列で構成されます。各プロット関数について 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 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
)、Ni はネットワーク入力の数 (net.numInputs
) です。
net.inputConnect(i,j)
が 1
(または 0
) の場合、j 番目の入力から i 番目の層への重みを表す重み行列 (または null 行列 []
) が 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 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
) です。
net.layerConnect(i,j)
が 1 (または 0) の場合、j 番目の層から i 番目の層への重みを表す重み行列 (または null 行列 []
) が 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 列の cell 配列です。ここで、Nl は、ネットワーク層の数 (net.numLayers
) です。
net.biasConnect(i)
が 1 (または 0) の場合、i 番目の層のバイアス ベクトル (または null 行列 []
) が net.b{i}
にあります。
バイアス ベクトルの要素数は、そのバイアスが関連付けられている層のサイズ (net.layers{i}.size
) に常に等しくなります。
この次元は、次のバイアス プロパティからも得られます。
net.biases{i}.size
参考
feedforwardnet
| patternnet
| network