Keras 在CNN的最后一层中使用哪些设置进行回归

Keras 在CNN的最后一层中使用哪些设置进行回归,keras,regression,conv-neural-network,Keras,Regression,Conv Neural Network,我尝试使用CNN进行回归任务 我的特征数据具有形状(6097,30,32,9): 6097项记录 30个时间步 32个柱状图箱 9个频道(图像) 乐队) 目标数据具有形状 (6097,1) 6097记录作物产量(浮动)数据 当我创建CNN回归模型的最后一个密集层时,我不确定要使用哪些设置。最后一个卷积层的输出维数为(无,2,2512)。我添加了一个BatchNorm和flatte层(不确定这是否有意义) 正确的装置数量和激活功能是多少?我猜单位为1,激活函数为“无” 凯拉斯: model

我尝试使用CNN进行回归任务

我的特征数据具有形状(6097,30,32,9):

  • 6097项记录
  • 30个时间步
  • 32个柱状图箱
  • 9个频道(图像) 乐队)
目标数据具有形状
(6097,1)

  • 6097记录作物产量(浮动)数据
当我创建CNN回归模型的最后一个密集层时,我不确定要使用哪些设置。最后一个卷积层的输出维数为(无,2,2512)。我添加了一个BatchNorm和flatte层(不确定这是否有意义)

正确的装置数量和激活功能是多少?我猜单位为1,激活函数为“无”

凯拉斯:

model.add(Dense(units=1,
                activation=None
                ))

这取决于您想要的结果类型,通常使用线性激活函数简单地将值映射回(它不会改变值)。是关于输出层选择的简要说明。是一个关于回归的解释,也简要提到了输出层。 单位数量已经正确

model.add(Dense(units=1,
                activation='linear'
                ))
或者为了同样的结果:

model.add(Dense(1))

我将标准化应用于我的目标数据,因此平均值=0,标准值=1。这是一个很好的实践吗?它是否改变了我的激活功能选项?我相信它是否好是有争议的。它限制了您对激活函数的选择,因为这意味着您的目标数据将在0左右正态分布,这意味着它也将具有负值。某些激活功能不能以负值输出,例如ReLu。其他激活函数(如TanH)只能在[-1,1]范围内输出,因此不会返回更大的值。