为什么我的 LSTM 层表现得像一个密集层?

问题描述 投票:0回答:0

我正在尝试训练一个简单的 RNN:

import tensorflow as tf
from tensorflow import keras as k
import matplotlib.pyplot as plt

import tensorflow.python.keras.backend as K

#MODEL
model = k.Sequential([
    k.layers.Input(batch_input_shape=[30, 1, 1]),
    k.layers.LSTM(16),
    
    k.layers.Dense(1, activation = k.activations.relu),
])

model.compile(optimizer = 'Adam', loss='mse')

history = model.fit(x = X_train, y = y_train, epochs=20, validation_data = (X_val, y_val), batch_size = 30, shuffle = False)

X_train 是一个 1D numpy.ndarray,包含由 H0 或 H1 类型的观测值构成的序列(H0 是均值 = 0 且标准差 = 1 的高斯分布,H1 是均值 = 3 且标准差 = 1 的高斯分布)。

我构建了一个包含 30 个观察值的序列,在随机时间,我们从假设 H0 传递到 H1(我设置 batch_size = 30 因为我想在每个序列后重置 LSTM 层的状态,但我不知道它是否是一个合法的解决方案)。

我想尽快检测变化时间 H0 -> H1。

y_train 是一维 numpy.ndarray,如果观察类型为 H0,则包含 0,如果观察类型为 H1,则更改时间的延迟 + 1。

例如:

如果 change_time = 4

我想要作为输出:[0,0,0,0,1,2,3,4, etc...]

但是我的 RNN 显示这个:[0,0,0,0,8.674135, 8.674131, etc...]

似乎我的模型没有任何记忆,我不知道为什么...

tensorflow lstm recurrent-neural-network
© www.soinside.com 2019 - 2024. All rights reserved.