我想从55天的培训规模中预测7天。我尝试应用给定here和here的模型,但我整整7天的输出值为1。
我也很困惑如何将时间序列作为编码器解码器及其代码的输入,我根据自己的理解尝试过。
model.add(LSTM(150, input_shape=(None, 1)))
model.add(RepeatVector(8))
model.add(LSTM(150, return_sequences=True))
model.add(TimeDistributed(Dense(1, activation='softmax')))
model.compile(loss='mse', optimizer='adam')
for i in range(7):
x=df[i*7:(i+1)*7]
y=df[(i+1)*7:(i+2)*7]
x=np.array(x)
x=np.insert(x,0,len(x))
x=x.reshape(1,len(x),1)
y=np.array(y)
y=np.insert(y,0,len(y))
y=y.reshape(1,len(y),1)
model.fit(x, y, epochs=1, verbose=2)
训练后,我预计整个训练序列将持续7天。
第二次尝试从链接2尝试
#functions define_models and predict_sequence same as link
for i in range(0,47):
x1=df[i:i+7]
print(len(x1))
x2=df[i+1:i+8]
print(len(x2))
y=df[i+1:i+8]
x1=np.array(x1)
x1=np.insert(x1,0,len(x1))
print(len(x1))
x1=x1.reshape(len(x1),1,1)
x2=np.array(x2)
x2=np.insert(x2,0,0)
print(len(x2))
x2=x2.reshape(len(x2),1,1)
y=np.array(y)
y=np.insert(y,0,len(y))
y=y.reshape(len(y),1,1)
model.fit([x1,x2],y,epochs=1)
这也将输出为1。我不知道x2应该在这里。
请在错误之处纠正我。
第一个问题是,要训练深度网络,您应该执行以下步骤:
tf.Dataset
对象的实例。要创建tf.Dataset
的实例,您首先应该将NdataPy数据集组织成具有形状(批大小,记录数,每个记录的大小)的形状。在您的情况下,包含训练数据的X
数组的大小应为(1、1、7),而包含训练数据的标签的Y
数组的大小应为(1,7)。] >tf.Dataset
创建tf.Dataset.from_tensor_slices()
的实例model.fit()
实例中使用tf.Dataset
函数,并指定大于1的合适时期。参数指定网络应在要训练的数据集上进行迭代的次数。此参数的值在某种程度上是任意的,但是,您应该尝试使用不同的值以达到最适合您的问题的值。 请注意,使用此过程,您不再需要进行for循环。循环将在model.fit
函数内部执行。
有关如何在TensorFlow中实现和训练编码器-解码器模型的更多信息,请查看neural machine translation的官方示例。