【发布时间】:2017-01-04 22:27:07
【问题描述】:
该模型的第一层是 LSTM。
当调用 model.predict 时说你传入了几个样本:
>sam = np.array([ [[.5, .6, .3]], [[.6, .6, .3]], [[.5, .6, .3]] ])
>model.predict(sam)
array([[ 0.23589483],
[ 0.2327884 ],
[ 0.23589483]])
上面我们看到映射:[[.5, .6, .3]] -> 0.23589483 etc(1个元素的序列,即长度为3的向量,映射到一个实数)
模型的 input_length 为 1,input_dim 为 3。请注意,第一个和最后一个是相同的,并且具有相同的输出 (0.23589483)。所以我的假设是,在 Keras 处理一个样本(在本例中为 1 个 3-D 向量的序列)之后,它会重置模型的内存。即每个序列基本上是独立的。这种观点有什么不正确或误导的地方吗?
再举一个 input_length 3 和 input_dim 1 的例子。这一次,在一个序列中切换值并看到不同的结果(比较第二个列表和最后一个列表)。因此,随着 Keras 处理序列,内存正在发生变化,但是在处理完成后,内存会重置(第一个和第二个序列具有相同的结果)。
sam = np.array([ [[.1],[.1],[.9]], [[.1],[.9],[.1]], [[.1],[.1],[.9]] ])
model.predict(sam)
array([[ 0.69906837],
[ 0.1454899 ],
[ 0.69906837]])
在上面我们看到映射 [[.1],[.1],[.9]] -> 0.69906837 等(3 个元素到实数的序列)
【问题讨论】: