python - 使用 LSTM 时输入包含 NaN
问题描述
我正在尝试构建一个单变量编码器-解码器 LSTM 模型。我一次又一次地得到这个错误:
ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。
我已经搜索并阅读了其他询问相同错误的帖子,但是,我确信数据没有任何 nan 值。
由于 LSTM 隐藏计算导致的 nan 值让我确定的是:
我为每个时代做了一个循环来调用model.fit
和打印历史。
for j in range(numEpoch):
history = model.fit(trX, targetTRAIN, epochs=1, batch_size=batchSize, verbose=0, shuffle=False, validation_split=valdSplit)
print(history.history)
它运行良好,直到大约numEpoch
= 610(对不起,我忘记了确切的数字),然后它开始显示nan
为验证损失。
这是我的模型定义:
numEpoch = 2000
batchSize = 1
actFunc = 'relu'
valdSplit=0.1
dropOutRate=0.2
optimizer = SGD(lr=0.01, momentum=0.9)
model = Sequential()
randSeed = randSeed + 1
kernelInitializer = RandomNormal(seed=randSeed)
model.add(LSTM(30, batch_input_shape=(batchSize, timeStep, numFeat), activation=actFunc, kernel_initializer=kernelInitializer, dropout=dropOutRate,stateful=True , return_sequences=True))
model.add(Dropout(dropOutRate))
model.add(LSTM(20, kernel_initializer=kernelInitializer, stateful=False ,activation=actFunc, return_sequences=False))
model.add(Dropout(dropOutRate))
randSeed = randSeed + 1
kernelInitializer = RandomNormal(seed=randSeed)
model.add(Dense(numFeat, kernel_initializer=kernelInitializer, activation='linear'))
model.compile(loss='mean_squared_error', optimizer=optimizer, metrics=['accuracy'])
Train_X
形状为 (362, 3, 27)
如果需要,我很乐意提供更多详细信息。
解决方案
推荐阅读
- d3.js - D3js - 具有二进制值的折线图
- android - 如何在 Android 上的 Firebase 数据库中存储用户 Uid?
- angular - 如何将自定义配置传递给 ngx-imageviewer
- javascript - 在多个查询中使用 document.querySelectorALL 添加/删除类
- r - 如何编写一个 for 循环来解析 R 中的三个不同变量?
- databricks - Databricks - 如何将驱动程序日志复制到我的机器上?
- c# - 显示垂直滚动条时控制位置发生变化
- abap - 方法“GET_DATA_REF”不存在(cl_salv_bs_runtime_info),为什么?
- python - python请求-删除请求
- c# - RSACryptoServiceProvider 在 .net 核心中不起作用