Python 多小区LSTM RNN返回nan训练错误

Python 多小区LSTM RNN返回nan训练错误,python,tensorflow,lstm,recurrent-neural-network,Python,Tensorflow,Lstm,Recurrent Neural Network,我正在尝试训练这个多小区RNN网络(对于训练,您可以忽略m_t+1->m_t部分) 它使用4个LSTM单元层。编码器和解码器只是完全连接的层。 G_t和m_t分别是大小为6和69的浮点数组。P_t,m_t+1也是这个尺寸。此RNN的时间步长为48。 但出于某种原因,我的训练根本不起作用。我渴望知道我的代码出了什么问题 成本函数如下所示 结果如下 Epoch: 00010 tL: nan vE: 4.3044 Epoch: 00020 tL: nan vE: 4.3114 Epoch: 000

我正在尝试训练这个多小区RNN网络(对于训练,您可以忽略m_t+1->m_t部分)

它使用4个LSTM单元层。编码器和解码器只是完全连接的层。 G_t和m_t分别是大小为6和69的浮点数组。P_t,m_t+1也是这个尺寸。此RNN的时间步长为48。 但出于某种原因,我的训练根本不起作用。我渴望知道我的代码出了什么问题

成本函数如下所示

结果如下

Epoch: 00010 tL: nan vE: 4.3044
Epoch: 00020 tL: nan vE: 4.3114
Epoch: 00030 tL: nan vE: 4.2962
Epoch: 00040 tL: nan vE: 4.3009
Epoch: 00050 tL: nan vE: 4.2899
无论训练数据有多小,训练损失总是很小,所以我认为根本问题在于我训练数据的代码。验证错误不是nan,因此我认为数据本身不包含nan。
是否存在我在代码中没有解决的关键问题?任何帮助都将不胜感激!提前感谢。

验证错误显示正常值而训练错误显示正常值的原因是因为我正在制作包含nan值的小批量

显然

sample_size = 12494
batch_size = 128
total_batch = int(sample_size / batch_size)
train_size = int(sample_size * (1 - prop_valid))

没有道理<代码>总批次应为
int(序列号/批次号)

很难找到这一点,因为当数组切片超出范围时,numpy不会返回任何错误


不管怎样,希望它能在将来帮助有类似问题的人

验证错误显示正常值而训练错误显示正常值的原因是因为我正在制作包含nan值的小批量

显然

sample_size = 12494
batch_size = 128
total_batch = int(sample_size / batch_size)
train_size = int(sample_size * (1 - prop_valid))

没有道理<代码>总批次应为
int(序列号/批次号)

很难找到这一点,因为当数组切片超出范围时,numpy不会返回任何错误

不管怎样,希望它能在将来帮助有类似问题的人

for batch_idx in range(total_batch):
    train_batch_input = mini_batch(train_input, batch_size, batch_idx)
    train_batch_label = mini_batch(train_label, batch_size, batch_idx)