首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANN回归NaN损失值

ANN回归NaN损失值
EN

Stack Overflow用户
提问于 2020-12-15 14:28:51
回答 1查看 137关注 0票数 0

我试着训练一个神经网络来进行回归。该数据集由7个参数的~10k数据点组成。我用的是这是来自Tensorflow的基本回归示例。

然而,在训练期间,损失值从第一个时代返回到最后一个时期的NaN值。我尝试过不同的正则化技术(规范化、辍学、L1/L2加权正则化),但都没有成功。

对于这一问题的根源以及如何解决,有什么建议吗?

下面是一些有用的代码片段和图像:

模型

代码语言:javascript
复制
def build_and_compile_model(norm):
  model = keras.Sequential([
      norm,
      layers.Dense(10, activation='relu', kernel_regularizer=regularizers.l1_l2(l1=1e-5, l2=1e-4),
    bias_regularizer=regularizers.l2(1e-4),
    activity_regularizer=regularizers.l2(1e-5)),
      layers.Dense(1)
  ])
  model.add(Dropout(0.2, input_shape=(6,)))
  model.compile(loss='mean_absolute_error',
                optimizer=tf.keras.optimizers.Adam(0.0001))
  return model

dnn_model = build_and_compile_model(normalizer)
dnn_model.summary()

训练

代码语言:javascript
复制
%%time
history = dnn_model.fit(
    train_features, train_labels,
    validation_split=0.2,
    verbose=0, epochs=100)

hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch
print(hist.head())
print(hist.tail())

# PRINT:
loss  val_loss  epoch
0   NaN       NaN      0
1   NaN       NaN      1
2   NaN       NaN      2
3   NaN       NaN      3
4   NaN       NaN      4
    loss  val_loss  epoch
95   NaN       NaN     95
96   NaN       NaN     96
97   NaN       NaN     97
98   NaN       NaN     98
99   NaN       NaN     99
Wall time: 26.1 s

数据检查

最后一行是输出参数。

EN

回答 1

Stack Overflow用户

发布于 2020-12-15 16:18:04

我认为问题是,在密集的(1)层之后添加了一个Dropout层。这使得退出成为你的模型的顶层。移除它,它就会起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65307881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档