是否可以创建具有真实输出的 CNN?

Is it possible to create a CNN with real output?

trainNetwork() 的输出类型必须是 categorical()。如何创建具有 float/real 个输出的 CNN?

我的意思是下面的命令给出了以下错误:

>> 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.

(错误消息对应 [0.0, 0.1, 0.2, 0.3] 向量),但我需要实际输出,而不是类别。

网络层如下:

>> 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

为此,您必须更改最后一层。这可以是均方误差函数。 this issue explain how can you do this

也叫回归。您必须手动添加损失函数。

答案分两部分

1.分类与回归 This post describe shortly

Regression: the output variable takes continuous values.

Classification: the output variable takes class labels.

所以我的问题是(当我问这个问题时)我需要一个神经网络来解决回归问题,而不是class化。

2。 Matlab 框架

在 Matlab 中使用神经网络有两种基本方法。

较旧的框架使用 "Neural Network" class 定义了所有网络。可以通过这种方式轻松构建一些基础网络(例如使用 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.

R2016a 中引入了更新的方法。可以找到介绍 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 可以找到使用新框架解决回归问题的描述。