【发布时间】:2019-01-20 09:30:30
【问题描述】:
我很难构建一个处理屏蔽输入值的简单模型。我的训练数据由可变长度的 GPS 轨迹列表组成,即每个元素包含纬度和经度的列表。
有70个训练样例
由于它们的长度可变,我用零填充它们,目的是告诉 Keras 忽略这些零值。
train_data = keras.preprocessing.sequence.pad_sequences(train_data, maxlen=max_sequence_len, dtype='float32',
padding='pre', truncating='pre', value=0)
然后我像这样构建一个非常基本的模型
model = Sequential()
model.add(Dense(16, activation='relu',input_shape=(max_sequence_len, 2)))
model.add(Flatten())
model.add(Dense(2, activation='sigmoid'))
在之前的一些尝试和错误之后,我意识到我需要Flatten 层,否则拟合模型会引发错误
ValueError: Error when checking target: expected dense_87 to have 3 dimensions, but got array with shape (70, 2)
但是,通过包含 Flatten 层,我不能使用 Masking 层(忽略填充的零),否则 Keras 会抛出此错误
TypeError: Layer flatten_31 does not support masking, but was passed an input_mask: Tensor("masking_9/Any_1:0", shape=(?, 48278), dtype=bool)
我已经广泛搜索,在这里阅读 GitHub 问题和大量 Q/A,但我无法弄清楚。
【问题讨论】:
标签: python python-3.x tensorflow keras deep-learning