Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
f05b9567
A
apachecn-dl-zh
项目概览
D_ACMER
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f05b9567
编写于
8月 05, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-08-05 11:13:49
上级
7ef4b009
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
14 deletion
+14
-14
docs/mastering-tf-1x-zh/ch07.md
docs/mastering-tf-1x-zh/ch07.md
+14
-14
未找到文件。
docs/mastering-tf-1x-zh/ch07.md
浏览文件 @
f05b9567
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录