0

**MATLAB でフィードフォワード NN を開発しようとしています。12 の入力と 46998 サンプルの 1 つの出力のデータセットがあります。マトリックスの最後の行にいくつかの NaN 値があります。これは、一部の入力が変位よりもそれぞれ 1 および 2 ステップ小さい加速度と速度であるためです。

この現在のデータ セットでは、w1_grad と w2_grad を NaN 行列として取得しています。Heave_dataset(isnan(Heave_dataset))=[]; を使用してそれらを削除しようとしましたが、データセットが (1*610964) の列行列に変換されています。

誰でもこれで私を助けることができますか?

                                                                    %

%% Clear Variables, Close Current Figures, and Create Results Directory 

clc;
clear all;
close all;
mkdir('Results//'); %Directory for Storing Results

%% Configurations/Parameters

load 'Heave_dataset'

% Heave_dataset(isnan(Heave_dataset))=[];

nbrOfNeuronsInEachHiddenLayer = 24; 
nbrOfOutUnits = 1;
unipolarBipolarSelector = -1; %0 for Unipolar, -1 for Bipolar
learningRate = 0.08;
nbrOfEpochs_max = 50000;


%% Read Data

Input = Heave_dataset(:, 1:length(Heave_dataset(1,:))-1);
TargetClasses = Heave_dataset(:, length(Heave_dataset(1,:)));

%% Calculate Number of Input and Output NodesActivations

nbrOfInputNodes = length(Input(1,:)); %=Dimention of Any Input Samples
nbrOfLayers = 2 + length(nbrOfNeuronsInEachHiddenLayer);
nbrOfNodesPerLayer = [nbrOfInputNodes nbrOfNeuronsInEachHiddenLayer nbrOfOutUnits];


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Forward Pass %%%%%%%%%%%


%% Adding the Bias to Input layer

Input = [ones(length(Input(:,1)),1) Input];


%% Weights leading from input layer to hidden layer is w1

w1 = rand(nbrOfNeuronsInEachHiddenLayer,(nbrOfInputNodes+1));

%% Input & output of hidde layer

hiddenlayer_input = Input*w1';

hiddenlayer_output = -1 + 2./(1 + exp(-(hiddenlayer_input)));

%% Adding the Bias to hidden layer

hiddenlayer_output = [ones(length(hiddenlayer_output(:,1)),1) hiddenlayer_output];

%% Weights leading from input layer to hidden layer is w1

w2 = rand(nbrOfOutUnits,(nbrOfNeuronsInEachHiddenLayer+1));

%% Input & output of hidde layer

outerlayer_input = hiddenlayer_output*w2';

outerlayer_output = outerlayer_input;

%% Error Calculation

TotalError = 0.5*(TargetClasses-outerlayer_output).^2;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Backward Pass %%%%%%%%%%%

d3 = outerlayer_output - TargetClasses;

d2 = (d3*w2).*hiddenlayer_output.*(1-hiddenlayer_output);

d2 = d2(:,2:end);

D1 = d2' * Input;

D2 = d3' * hiddenlayer_output;

w1_grad = D1/46998 + learningRate*[zeros(size(w1,1),1) w1(:,2:end)]/46998;

w2_grad = D2/46998 + learningRate*[zeros(size(w2,1),1) w2(:,2:end)]/46998;
4

1 に答える 1