0

The output type of the trainNetwork() must be categorical(). How can I create a CNN with float/real output(s)?

I mean the following command gives the following error:

>> convnet = trainNetwork(input_datas, [0.0, 0.1, 0.2, 0.3], networkLayers, opts);
Error using trainNetwork>iAssertCategoricalResponseVector (line 269)
Y must be a vector of categorical responses.

(The error message corresponds the [0.0, 0.1, 0.2, 0.3] vector), But I need real outputs, not categories.

The networkLayers is the following:

>> networkLayers= 

5x1 Layer array with layers:
  1   ''   Image Input       1x6000x1 images with 'zerocenter' normalization
  2   ''   Convolution       10 1x100 convolutions with stride [1  1] and padding [0  0]
  3   ''   Max Pooling       1x20 max pooling with stride [10  10] and padding [0  0]
  4   ''   Fully Connected   200 fully connected layer
  5   ''   Fully Connected   1 fully connected layer
betontalpfa
  • 3,454
  • 1
  • 33
  • 65

2 Answers2

0

For doing this you have to change your last layer. This can be mean squared error function. this issue explain how can you do this

also it is called regression. You must add loss function manually.

0

The answer takes two part

1. Classification vs regression This post describe shortly that

Regression: the output variable takes continuous values.

Classification: the output variable takes class labels.

So my problem was (when I ask the question) that I need a neural network for regression problems, not for classification.

2. Matlab frameworks

There are two base way to work with neural networks in Matlab.

The older framework defined the all network using a "Neural Network" class. Some base network can be built easily with this way (ex using feedforwardnet or layrecnet), but building more complex networks is a hard work. More details building custom neural networks with the network class can be found here.

The newer methodology was introduced in R2016a. An introduction can be found here. I tried to use this framework. But this framework supports regression problems only from 2017a! So This is a really new tool. But here can be found a description for using the newwer framework for regression problems.

betontalpfa
  • 3,454
  • 1
  • 33
  • 65