如果我正确理解您的问题,您想要一个 RNN,其中输入 3 个特征 ([x0, y0, z0]) 并输出一个由 50 个数字组成的向量,代表 50 个时间步长的温度?
在这种情况下,您需要为要预测的每个时间步输入坐标,因为 RNN 的整个想法是,他们可以通过查看此类序列的示例来学习预测时间序列。您的数据需要采用以下结构:
您的坐标数据需要采用一种格式,其中包含您希望预测的每个时间步长的 x、y、z 数据。如果我们假设您有 10000 个数据点,那么您的输入数据需要具有以下形状:
[10000, 50, 3]
这里10000是数据点的数量,50是每个xyz坐标的时间步长,3是每个坐标给定的时间步长。
然后您的温度数据需要具有以下形状:
[10000, 50]
这里 10000 是 50 个时间步长的每个温度集合,50 是每个时间步长中的温度读数。
如果您只想使用 1 个坐标集来预测 50 个时间步长,您可以重新调整数据以在每个时间步长中具有相同的 50 个坐标。
假设你有这个数据集,你可以像这样构造一个简单的 RNN:
# ----- Define dummy data -----
coordinates = np.random.random([10000, 50, 3]).astype(np.float32)
temps = np.random.rand(10000,50)
# ----- Define RNN model -----
rnn_model = tf.keras.Sequential()
rnn_model.add(tf.keras.layers.SimpleRNN(128))
rnn_model.add(tf.keras.layers.Dense(50))
# ----- Compile model -----
rnn_model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(1e-4))
# ----- Train model -----
history = rnn_model.fit(x=coordinates, y=temps, batch_size=32,epochs=50)
您当然需要根据任务更改网络结构,并且您还可以尝试其他循环层,例如 LSTM 层,但这应该让您了解基本知识。