提交 f05b9567 编写于 作者: W wizardforcel

2020-08-05 11:13:49

上级 7ef4b009
......@@ -8,15 +8,15 @@
* 描述和下载数据集
* 可视化数据集
* 在 TensorFlow 中预处理 RNN 的数据集
* TensorFlow 中的 RNN 用于时间序列数据
* TensorFlow 中的 SimpleRNN
* TensorFlow 中用于时间序列数据的 RNN
* TensorFlow 中的`SimpleRNN`
* TensorFlow 中的 LSTM
* GRU 在 TensorFlow 中
* 在 Keras 中预处理 RNN 的数据集
* Keras 的 RNN 用于时间序列数据
* Keras 的 SimpleRNN
* Keras 中用于时间序列数据的 RNN
* Keras 的`SimpleRNN`
* Keras 的 LSTM
* 格拉斯在 Keras
* Keras 的 GRU
让我们从了解样本数据集开始。
......@@ -30,7 +30,7 @@
# 加载 airpass 数据集
我们将数据集保存为数据集根目录(〜/ datasets)中`ts-data`文件夹中的 CSV 文件,并使用以下命令将数据加载到 pandas 数据框中:
我们将数据集保存为数据集根目录(`~/datasets`)中`ts-data`文件夹中的 CSV 文件,并使用以下命令将数据加载到 pandas 数据框中:
```py
filepath = os.path.join(datasetslib.datasets_root,
......@@ -79,7 +79,7 @@ normalized_dataset = scaler.fit_transform(dataset)
train,test=tsu.train_test_split(normalized_dataset,train_size=0.67)
```
然后我们将训练和测试数据集转换为有监督的机器学习集。让我们试着理解监督学习集的含义。假设我们有一系列数据:1,2,3,4,5。我们想要了解生成数据集的概率分布。为了做到这一点,我们可以假设时间步长`t`的值是从时间步长`t-1``tk`的值的结果,其中`k`是窗口大小。为简化起见,假设窗口大小为 1.因此,时间步长`t`的值(称为输入特征)是时间步长值`t-1`的结果,被称为目标。让我们重复一遍所有时间步骤,我们得到下表:
然后我们将训练和测试数据集转换为有监督的机器学习集。让我们试着理解监督学习集的含义。假设我们有一系列数据:`1,2,3,4,5`。我们想要了解生成数据集的概率分布。为了做到这一点,我们可以假设时间步长`t`的值是从时间步长`t-1``tk`的值的结果,其中`k`是窗口大小。为简化起见,假设窗口大小为 1。因此,时间步长`t`的值(称为输入特征)是时间步长值`t-1`的结果,被称为目标。让我们重复一遍所有时间步骤,我们得到下表:
| 输入值或特征 | 输出值或目标 |
| --- | --- |
......@@ -123,7 +123,7 @@ X_train, Y_train, X_test, Y_test = tsu.mvts_to_xy(train,
test,n_x=n_x,n_y=n_y)
```
现在数据已经过预处理并可以输入到我们的模型中,让我们使用 TensorFlow 准备一个 SimpleRNN 模型。
现在数据已经过预处理并可以输入到我们的模型中,让我们使用 TensorFlow 准备一个`SimpleRNN`模型。
# TensorFlow 中的简单 RNN
......@@ -282,7 +282,7 @@ test rmse = 0.09375710758446143
由于爆炸和消失梯度的问题,简单的 RNN 架构并不总是有效,因此使用了改进的 RNN 架构,例如 LSTM 网络。 TensorFlow 提供 API 来创建 LSTM RNN 架构。
在上一节中展示的示例中,要将 Simple RNN 更改为 LSTM 网络,我们所要做的就是更改单元类型,如下所示:
在上一节中展示的示例中,要将简单 RNN 更改为 LSTM 网络,我们所要做的就是更改单元类型,如下所示:
```py
cell = tf.nn.rnn_cell.LSTMCell(state_size)
......@@ -332,7 +332,7 @@ test rmse = 0.11961434334066987
# 使用 Keras RNN 模型预处理数据集
与使用 lower = level TensorFlow 类和方法构建相比,在 Keras 中构建 RNN 网络要简单得多。对于 Keras,我们预先处理数据,如前面部分所述,以获得受监督的机器学习时间序列数据集:`X_train, Y_train, X_test, Y_test`
与使用较低级别 TensorFlow 类和方法构建相比,在 Keras 中构建 RNN 网络要简单得多。对于 Keras,我们预先处理数据,如前面部分所述,以获得受监督的机器学习时间序列数据集:`X_train, Y_train, X_test, Y_test`
从这里开始,预处理有所不同。对于 Keras,输入必须是`(samples, time steps, features)`形状。当我们将数据转换为监督机器学习格式时,在重塑数据时,我们可以将时间步长设置为 1,从而将所有输入时间步长作为特征,或者我们可以设置时间步长为实际的时间步数,从而为每个时间步长提供特征集。换句话说,我们之前获得的`X_train``X_test`数据集可以重新整形为以下方法之一:
......@@ -358,7 +358,7 @@ X_test = X_test.reshape(X_test.shape[0], X_train.shape[1], 1)
# 使用 Keras 的简单 RNN
通过添加具有内部神经元数量和输入张量形状的 SimpleRNN 层,可以在 Keras 中轻松构建 RNN 模型,不包括样本维数。以下代码创建,编译和拟合 SimpleRNN
通过添加具有内部神经元数量和输入张量形状的`SimpleRNN`层,可以在 Keras 中轻松构建 RNN 模型,不包括样本维数。以下代码创建,编译和拟合`SimpleRNN`
```py
# create and fit the SimpleRNN model
......@@ -461,7 +461,7 @@ Test Score: 54.13 RMSE
# 使用 Keras 的 LSTM
创建 LSTM 模型只需添加 LSTM 层而不是 SimpleRNN 层,如下所示:
创建 LSTM 模型只需添加 LSTM 层而不是`SimpleRNN`层,如下所示:
```py
model.add(LSTM(units=4, input_shape=(X_train.shape[1], X_train.shape[2])))
......@@ -496,7 +496,7 @@ Test Score: 84.68 RMSE
# 使用 Keras 的 GRU
使用 TensorFlow 和 Keras 的一个优点是它们可以轻松创建模型。与 LSTM 一样,创建 GRU 模型只需添加 GRU 层而不是 LSTM 或 SimpleRNN 层,如下所示:
使用 TensorFlow 和 Keras 的一个优点是它们可以轻松创建模型。与 LSTM 一样,创建 GRU 模型只需添加 GRU 层而不是 LSTM 或`SimpleRNN`层,如下所示:
```py
model.add(GRU(units=4, input_shape=(X_train.shape[1], X_train.shape[2])))
......@@ -529,7 +529,7 @@ Test Score: 92.75 RMSE
# 总结
时间序列数据是基于序列的数据,因此 RNN 模型是从时间序列数据中学习的相关架构。在本章中,您学习了如何使用 TensorFlow(一个低级库)和 Keras(一个高级库)创建不同类型的 RNN 模型。我们只介绍了 SimpleRNN,LSTM 和 GRU,但您应该探索可以使用 TensorFlow 和 Keras 创建的许多其他 RNN 变体。
时间序列数据是基于序列的数据,因此 RNN 模型是从时间序列数据中学习的相关架构。在本章中,您学习了如何使用 TensorFlow(一个低级库)和 Keras(一个高级库)创建不同类型的 RNN 模型。我们只介绍了`SimpleRNN`,LSTM 和 GRU,但您应该探索可以使用 TensorFlow 和 Keras 创建的许多其他 RNN 变体。
在下一章中,我们将使用当前章节和前几章中构建的基础为各种**自然语言处理****NLP**)任务创建文本数据的 RNN 模型。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册