TensorFlow中的循环神经网络(RNN)预测气温的例子源码
时间: 2024-09-10 14:05:51 浏览: 52
在TensorFlow中,我们可以创建一个简单的循环神经网络(RNN)模型来预测气温序列。这是一个基本的示例,假设我们已经有了历史气温数据作为输入,并且目标是预测未来的气温。以下是使用`tf.keras`库的一个简单示例:
```python
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense
# 假设data是一个二维数组,包含时间步长和对应的气温
# data = [[t0, temp0], [t1, temp1], ..., [tn-1, temp_n-1]]
# timesteps, input_dim = data.shape[1], 1 (因为只有一个输入特征:气温)
model = Sequential()
model.add(SimpleRNN(units=50, activation='relu', return_sequences=True, input_shape=(None, input_dim))) # RNN层
model.add(SimpleRNN(units=50, activation='relu')) # 另一层RNN,可以减少层级简化
model.add(Dense(1)) # 输出层,预测下一个时间步的气温
# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')
# 将数据分为训练集和测试集
train_data, test_data = ...
# 转换数据以便于RNN处理(例如:通过滑动窗口)
def windowed_dataset(series, window_size):
series = tf.expand_dims(series, axis=-1)
ds = tf.data.Dataset.from_tensor_slices(series)
ds = ds.window(window_size + 1, shift=1, drop_remainder=True) # 滑动窗口
ds = ds.flat_map(lambda w: w.batch(window_size + 1))
ds = ds.map(lambda w: (w[:-1], w[1:])) # (inputs, targets)
return ds.batch(32).shuffle(1000)
# 训练模型
history = model.fit(windowed_dataset(train_data), epochs=10, validation_data=windowed_dataset(test_data))
# 预测
forecast = model.predict(windowed_dataset(test_data, look_back=1)) # 一次预测一个时间步
阅读全文