我在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)
我想我没有正确地添加遮罩层到模型,但我不知道如何添加它?在
问题是我用了np.nan公司作为我的面具价值。在引擎盖下,掩蔽是通过与一个二进制掩模相乘来实现的,这使得NaNs始终存在。由于我的数据是实数的,而且我不能确定它需要的范围,所以我将mask_值设置为系统浮动信息.最大值
相关问题 更多 >
编程相关推荐