ニューラル ネットワークの matlab を作成しました。これはスクリプトです:
data.mat をロードします。 入力 = データ (:,1:8)'; ターゲット=データ(:,9)'; hiddenLayerSize = 10; net = patternnet(hiddenLayerSize); net.inputs{1}.processFcns = {'removeconstantrows','mapminmax', 'mapstd','processpca'}; net.outputs{2}.processFcns = {'removeconstantrows','mapminmax', 'mapstd','processpca'}; ネット = 構造体 (ネット); net.inputs{1}.processParams{2}.ymin = 0; net.inputs{1}.processParams{4}.maxfrac = 0.02; net.outputs{2}.processParams{4}.maxfrac = 0.02; net.outputs{2}.processParams{2}.ymin = 0; ネット = ネットワーク (ネット); net.divideFcn = 'divideind'; net.divideMode = 'サンプル'; % すべてのサンプルを分割する net.divideParam.trainInd = 1:428; net.divideParam.valInd = 429:520; net.divideParam.testInd = 521:612; net.trainFcn = 'trainscg'; % スケーリングされた共役勾配逆伝播 net.performFcn = 'mse'; % 平均二乗誤差 net.plotFcns = {'plotperform','plottrainstate','ploterrhist', 'plotregression', 'plotconfusion', 'plotroc'}; ネット=初期化(ネット); net.trainParam.max_fail=20; [net,tr] = train(net,inputs,targets); 出力 = ネット (入力); エラー = gsubtract (ターゲット、出力); パフォーマンス = 実行 (ネット、ターゲット、出力)
ここで、ネットワークの重みとバイアスを保存して、方程式を書きたいと思います。重みとバイアスを保存しました:
W1=net.IW{1,1}; W2=net.LW{2,1}; b1=net.b{1,1}; b2=net.b{2,1};
だから、私はデータの前処理を行い、次の式を書きました
max_range=0; [y,ps]=removeconstantrows(input, max_range); ymin=0; ymax=1; [y,ps2]=mapminmax(y,ymin,ymax); 平均=0; ystd=1; y=mapstd(x,ymean,ystd); maxfrac=0.02; y=processpca(y,maxfrac); で=y'; uscita=tansig(W2*(tansig(W1*in+b1))+b2);
しかし、同じ入力 input=[1:8] では、異なる結果が得られます。なぜ?どうしたの?お願い助けて!重要です!
私はMatlab R2010Bを使用しています