具有keras和掩蔽层的可变长度序列

2024-04-25 03:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在keras中设计了一个序列到序列的模型来预测数值数据,但是我的输入序列的长度是可变的。序列存储在一个numpy数组中,其中不存在的值是nan

[[0, 1, 2, 3],
 [NaN, 1, 2, NaN]]

例如。如果有,nan总是在末尾,数据中的数字总是连续的序列,因此例如不会出现以下序列:

^{pr2}$

我想在我的模型中使用一个屏蔽层,以便忽略这些NaN值,但是目前我所拥有的并不能工作,因为我得到的损失总是一个NaN输出。在

encoder_inputs = Input(shape=(None, 1), name='encoder')
masker = Masking(mask_value=np.nan)
masker(encoder_inputs)
encoder = LSTM(units, return_state=True)
encoder_outputs, state_h, state_c = encoder(encoder_inputs)

# Keep encoder states for decoder, discard outputs
encoder_states = [state_h, state_c]

# Set up the decoder taking the encoder_states to be the initial state vector of the decoder.
decoder_inputs = Input(shape=(None, 1), name='decoder')

# Full output sequences and internal states are returned.  Returned states are used in prediction / inference

decoder = LSTM(units, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder(decoder_inputs, initial_state=encoder_states)

# Gives continuous output at each time step
decoder_dense = Dense(1)
decoder_outputs = decoder_dense(decoder_outputs)

# create model that takes encoder_input_data and decoder_input_data and creates decoder_target_data
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

我想我没有正确地添加遮罩层到模型,但我不知道如何添加它?在


Tags: andthe模型trueencoderdatareturn序列
1条回答
网友
1楼 · 发布于 2024-04-25 03:38:21

问题是我用了np.nan公司作为我的面具价值。在引擎盖下,掩蔽是通过与一个二进制掩模相乘来实现的,这使得NaNs始终存在。由于我的数据是实数的,而且我不能确定它需要的范围,所以我将mask_值设置为系统浮动信息.最大值

相关问题 更多 >