Is it possible to create a CNN with real output?

Illustration
Benedek_racz - 2021-07-15T10:11:18+00:00
Question: Is it possible to create a CNN with real output?

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

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

The simplest way is to represent the categories with integers
>> categories = [ 1 3 5 4 2]
>> target = full(ind2vec(categories))
 
 
   target     =   1     0     0     0     0
                  0     0     0     0     1
                  0     1     0     0     0
                  0     0     0     1     0
                  0     0     1     0     0

>> output = target + 0.1*randn(5,5)

   output =   0.8902   -0.1361   -0.0874    0.0327   -0.0846
             -0.1416    0.0780    0.0415   -0.0515    0.9827
              0.0060    1.0439    0.0348   -0.0896   -0.1209
             -0.0411   -0.0090    0.0349    0.8797   -0.0297
             -0.0368    0.1021    0.9271    0.1038   -0.3232

>> answer = vec2ind(output)

   answer = 1     3     5     4     2

Hope this helps.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!