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

时间:2017-04-19 12:04:08

标签: matlab neural-network conv-neural-network matconvnet

trainNetwork()的输出类型必须是分类()。如何创建具有浮动/实际输出的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如下:

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

2 个答案:

答案 0 :(得分:0)

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

也称为回归。您必须手动添加损失功能。

答案 1 :(得分:0)

答案分为两部分

<强> 1。分类与回归 This post describe shortly

  

回归:输出变量采用连续值。

     

分类:输出变量采用类标签。

所以我的问题是(当我问这个问题时)我需要一个回归问题的神经网络,而不是分类。

<强> 2。 Matlab框架

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

旧框架使用“神经网络”类定义了所有网络。一些基础网络可以通过这种方式轻松构建(例如使用feedforwardnetlayrecnet),但构建更复杂的网络是一项艰苦的工作。有关使用网络类构建自定义神经网络的更多详细信息,请参见here

R2016a引入了更新的方法。可以找到介绍here。我试图使用这个框架。但是这个框架只支持2017a的回归问题!所以这是一个非常新的工具。但是here可以找到使用newwer框架进行回归问题的描述。