网络对所有输入预测相同的答案

时间:2019-10-28 08:49:45

标签: tensorflow conv-neural-network

我正在使用一维Convnet根据具有28个功能的100个时间点来预测标量值。我的问题是,我给网络进行预测的每个样本都会产生相同的答案(0.0038)。好像培训已经优化了网络以在所有培训数据上产生一个平均值。我已经在StackOverflow上阅读了许多有关此问题的文章,所以这里列出了我已经检查过的内容。

  1. 我从一个具有6个Conv层(1.2m参数)的深层一维Convnet开始,但是我将其简化为2个Conv层和Max Pooling等(200k参数)。两者均基于在线文档中的示例。两者都有相同的问题。较简单的一个如下所示。
  2. 如果我尝试在未经训练的网络上预测不同的样本,则会给出不同的答案。在对320,000个样本进行训练之后,每个预测的答案都是相同的。在我看来,这是由于培训而不是网络的设计。
  3. 我所有的输入数据都已标准化。大多为-1至+1,但偶尔会有一些其他功能。
  4. 所有激活都是relu。
  5. 我将具有mse的亚当优化器用作损失函数。
  6. 在培训期间,损失从大约4开始,很快就增加到1,最终大约为0.0007。作为误差的平方,对于未优化的网络(我的期望值在+0.1到-0.1的范围内)处于正确的位置。无论我输入什么,网络都将预测0.0038作为答案。

人们发现网络以这种方式收敛于单个输出还有哪些其他原因?为了解决问题,我可以采取什么方法来分解问题。欢迎所有建议!

谢谢。

朱利安

这是网络的简单版本。

model = tf.keras.models.Sequential([
  tf.keras.layers.Conv1D(128, 9, activation='relu', input_shape=(100, 28)),
  tf.keras.layers.MaxPooling1D(2),
  tf.keras.layers.Conv1D(256, 5, activation='relu'),
  tf.keras.layers.GlobalAveragePooling1D(),
  tf.keras.layers.Dense(1)])

0 个答案:

没有答案