# Binary Classification with patternnet - wrong output

1 ビュー (過去 30 日間)
Vincent Kelber 2020 年 9 月 25 日

Hi together,
what i want to do, is to train a neural network (patternnet) classificator. Inputs are the size 10000x7, so 10.000 samples and 7 inputs.
Output is logical (10.000x1).
My problem is, if i use the patternnet function with a HiddenLayerSize > [], my output is no longer binary, than in a range between [0,1].
Here is my code:
hiddenLayerSize = [10,10,10];
net = patternnet(hiddenLayerSize, method);
net = configure(net, in_train', out_train');
net.input.processFcns = {'removeconstantrows','mapminmax'};
net.output.processFcns = {'removeconstantrows','mapminmax'};
net.trainParam.goal = gl;
net.divideFcn = divider; % Divide data randomly
net.divideMode = divMod; % Divide up every sample
net.divideParam.trainRatio = x/100;
net.divideParam.valRatio = y/100;
net.divideParam.testRatio = z/100;
net.performFcn = pfFcn;
net.trainParam.epochs = epoch;
net.Layers{:}.transferFcn = transfer;
net = train(net,in_train',out_train'
What can i do?
Thanks :)

サインインしてコメントする。

### 回答 (1 件)

Anshika Chaurasia 2020 年 9 月 28 日
Hello Vincent,
It is my understanding that after training the neural network, the ouput is in range between [0,1] and you want output as logical i.e., {0,1}.
For getting logical output you could apply threshold i.e., if output >= 0.5 then output = 1 or else output = 0.
% Train the Network
[net,tr] = train(net,inputs,targets);
% Test the Network
outputs = net(inputs);
logical_output = zeros(1,10000);
logical_output(outputs >= 0.5) = 1; % applying threshold
##### 1 件のコメント表示非表示 なし
Vincent Kelber 2020 年 9 月 29 日
Hi Anshika,
yes you are absolutely right. And that is one oportunity, yes. But the goal i want to achieve (to simplify the model) is not covered with that. Is there no other possibility to do that inside the model?
Thanks, Vinc

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by