Python 3.7 tensorflow
我正在尝试使用Tensorflow进行时间序列预测
我理解第二行创建了一个LSTM
循环神经网络,即一种长短期记忆类型的循环神经网络。
为什么我们在最后需要添加一个Dense(1)
层?
single_step_model = tf.keras.models.Sequential()single_step_model.add(tf.keras.layers.LSTM(32, input_shape=x_train_single.shape[-2:]))single_step_model.add(tf.keras.layers.Dense(1))
Dense()
的教程说明
Dense实现了以下操作:
output = activation(dot(input, kernel) + bias)
,其中activation
是作为激活参数传递的逐元素激活函数,kernel
是由层创建的权重矩阵,bias
是由层创建的偏置向量(仅当use_bias为True时适用)。
您是否希望重新解释或详细说明这里需要Dense()
的原因?
回答:
以下代码行
single_step_model.add(tf.keras.layers.LSTM(32, input_shape=x_train_single.shape[-2:]))
创建了一个LSTM层,该层将每个输入步骤的大小#features转换为大小为32的潜在表示。由于您要预测单个值,因此需要将这个大小为32的潜在表示转换为单个值。因此,您添加了以下代码行
single_step_model.add(tf.keras.layers.Dense(1))
这添加了一个输出中有一个神经元的全连接神经网络(Dense层),显然,这会产生一个单一的值。可以将其视为将高维度的中间结果转换为最终结果的一种方式。