his book
,处理缺失值的一种方法是将它们替换为零:
一般来说,使用神经网络时,输入缺失值是安全的
0,条件是0还不是有意义的值。这个
缺少数据并将开始忽略该值。注意如果你
期望测试数据中缺少值,但网络经过了训练
在没有任何缺失值的数据上,网络不会学会
忽略缺少的值!在这种情况下,你应该
生成缺少条目的训练样本:复制一些训练
很可能在测试数据中丢失。
所以你可以给
NaN
元素,考虑到数据中没有使用零(您可以将数据规格化为一个范围,例如[1,2],然后将零赋给
南
南
元素。)
Masking
在Keras层。你给它一个mask值,比如说0,它会删除所有特征都等于mask值的任何timestep(即row)。但是,以下所有层都应该支持掩蔽,您还需要预处理数据,并将掩蔽值指定给包含一个或多个时间步长的所有特征
南
特征。Keras文件示例:
考虑一个Numpy数据数组
x
(samples, timesteps,features)
,
输送至LSTM层。你想屏蔽时间步3
而#5是因为缺少这些时间步的数据。你可以:
-
设置
x[:, 3, :] = 0.
x[:, 5, :] = 0.
-
插入遮罩层
mask_value=0.
在
LSTM
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(32))