1

MATLAB で、feedforwardnet(8)8 つの隠れニューロンを含む 1 つの隠れ層を持つフィードフォワード ネットワークを作成します。MATLAB は、既定で数値データを倍精度浮動小数点 (double) として格納します。したがってfeedforwardnet(8)、 と同等feedforwardnet(double(8))です。

ただし、feedforwardnet(int32(8))次のエラーが発生します。

Undefined function or variable 'ind'.

Error in network/subsasgn>setLayerSize (line 1170)
  err = sprintf('"layers{%g}.size" must be a positive integer.',ind);

Error in network/subsasgn>network_subsasgn (line 180)
        if isempty(err), [net,err] = setLayerSize(net,i,newSize); end

Error in network/subsasgn (line 13)
net = network_subsasgn(net,subscripts,v,netname);

Error in feedforwardnet>create_network (line 116)
      net.layers{i}.size = param.hiddenSizes(i);

Error in feedforwardnet (line 69)
    net = create_network(param);

を引数としてとらないfeedforwardnet()のはなぜですか? 同様に、 (*network/subsasgn.m の 1169 行目で) が引数として与えられたときに戻らint32ないのはなぜですか?isposint()trueint32(8)

コードは、MATLAB 2011a、2012a、および 2012b でテストされました。

4

2 に答える 2

4

お使いのツールボックスのバージョンが不明ですが、リビジョン 1.7 のツールボックスでは次のisposint(v)ように引数がテストされます。

[...]
if ~isa(v,'double') | any(size(v) ~= [1 1]) | ...
  ~isreal(v) | v<0 | round(v) ~= v
[...]

つまり、 のクラスまたはサブクラスでfalseはないすべてのものに対して返されます。doubledouble

「未定義の関数または変数 'ind'」について。メッセージ、私の推測では、コードのバグが原因であると思われます (変数indは、関数内のどこでも引数として作成/割り当て/渡されません)。

于 2013-04-11T21:57:55.333 に答える
1

9行目で編集します(完全にテストされていないため、自己責任で)isposint.m

% if ~isa(v,'double') | any(size(v) ~= [1 1]) | ...
if ~isnumeric(v) | any(size(v) ~= [1 1]) | ...

どちらも通過します:

a = feedforwardnet(8);
b = feedforwardnet(int32(8));

サイズの小さな変更:

>> whos
  Name      Size            Bytes  Class      Attributes

  a         1x1             31224  network              
  b         1x1             30968  network
于 2013-04-11T22:32:49.083 に答える