Skip to content

Commit

Permalink
add chapter6
Browse files Browse the repository at this point in the history
  • Loading branch information
lyhue1991 committed Mar 21, 2020
1 parent 20a67da commit d8c0c73
Show file tree
Hide file tree
Showing 29 changed files with 20 additions and 80 deletions.
2 changes: 0 additions & 2 deletions 1-3,文本数据建模流程范例.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ imdb数据集的目标是根据电影评论的文本内容预测评论的情感





在tensorflow中完成文本数据预处理的常用方案有两种,第一种是利用tf.keras.preprocessing中的Tokenizer词典构建工具和tf.keras.utils.Sequence构建文本数据生成器管道。

第二种是使用tf.data.Dataset搭配.keras.layers.experimental.preprocessing.TextVectorization预处理层。
Expand Down
2 changes: 0 additions & 2 deletions 3-1,低阶API示范.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 3-1,低阶API示范



下面的范例使用TensorFlow的低阶API实现线性回归模型。

低阶API主要包括张量操作,计算图和自动微分。
Expand Down
2 changes: 0 additions & 2 deletions 3-2,中阶API示范.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 3-2,中阶API示范



下面的范例使用TensorFlow的中阶API实现线性回归模型。

TensorFlow的中阶API主要包括各种模型层,损失函数,优化器,数据管道,特征列等等。
Expand Down
2 changes: 0 additions & 2 deletions 3-3,高阶API示范.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 3-3,高阶API示范



下面的范例使用TensorFlow的高阶API实现线性回归模型。

TensorFlow的高阶API主要为tf.keras.models提供的模型的类接口。
Expand Down
6 changes: 2 additions & 4 deletions 4-1,张量的结构操作.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 4-1,张量的结构操作



张量的操作主要包括张量的结构操作和张量的数学运算。

张量结构操作诸如:张量创建,索引切片,维度变换,合并分割。
Expand Down Expand Up @@ -57,7 +55,7 @@ tf.print(d)
[[0 0 0]
[0 0 0]
[0 0 0]]
```
```

```python
a = tf.ones([3,3])
Expand Down Expand Up @@ -140,7 +138,7 @@ tf.print(t)
[[1 0 0]
[0 2 0]
[0 0 3]]
```
```

```python

Expand Down
2 changes: 0 additions & 2 deletions 4-2,张量的数学运算.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 4-2,张量的数学运算



张量的操作主要包括张量的结构操作和张量的数学运算。

张量结构操作诸如:张量创建,索引切片,维度变换,合并分割。
Expand Down
2 changes: 0 additions & 2 deletions 4-3,AutoGraph的使用规范.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 4-3,AutoGraph的使用规范



有三种计算图的构建方式:静态计算图,动态计算图,以及Autograph。

TensorFlow 2.0主要使用的是动态计算图和Autograph。
Expand Down
2 changes: 0 additions & 2 deletions 4-4,AutoGraph的机制原理.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 4-4,AutoGraph的机制原理



有三种计算图的构建方式:静态计算图,动态计算图,以及Autograph。

TensorFlow 2.0主要使用的是动态计算图和Autograph。
Expand Down
2 changes: 0 additions & 2 deletions 5-1,数据管道Dataset.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-1,数据管道Dataset



如果需要训练的数据大小不大,例如不到1G,那么可以直接全部读入内存中进行训练,这样一般效率最高。

但如果需要训练的数据很大,例如超过10G,无法一次载入内存,那么通常需要在训练的过程中分批逐渐读入。
Expand Down
2 changes: 0 additions & 2 deletions 5-2,特征列feature_column.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-2,特征列feature_column



特征列 通常用于对结构化数据实施特征工程时候使用,图像或者文本数据一般不会用到特征列。


Expand Down
2 changes: 0 additions & 2 deletions 5-3,激活函数activation.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-3,激活函数activation



激活函数在深度学习中扮演着非常重要的角色,它给网络赋予了非线性,从而使得神经网络能够拟合任意复杂的函数。

如果没有激活函数,无论多复杂的网络,都等价于单一的线性变换,无法对非线性函数进行拟合。
Expand Down
2 changes: 0 additions & 2 deletions 5-4,模型层layers.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-4,模型层layers



深度学习模型一般由各种模型层组合而成。

tf.keras.layers内置了非常丰富的各种功能的模型层。例如,
Expand Down
2 changes: 0 additions & 2 deletions 5-5,损失函数losses.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-5,损失函数losses



一般来说,监督学习的目标函数由损失函数和正则化项组成。(Objective = Loss + Regularization)

对于keras模型,目标函数中的正则化项一般在各层中指定,例如使用Dense的 kernel_regularizer 和 bias_regularizer等参数指定权重使用l1或者l2正则化项,此外还可以用kernel_constraint 和 bias_constraint等参数约束权重的取值范围,这也是一种正则化手段。
Expand Down
2 changes: 0 additions & 2 deletions 5-6,评估指标metrics.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-6,评估指标metrics



损失函数除了作为模型训练时候的优化目标,也能够作为模型好坏的一种评价指标。但通常人们还会从其它角度评估模型的好坏。

这就是评估指标。通常损失函数都可以作为评估指标,如MAE,MSE,CategoricalCrossentropy等也是常用的评估指标。
Expand Down
2 changes: 0 additions & 2 deletions 5-7,优化器optimizers.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-7,优化器optimizers



机器学习界有一群炼丹师,他们每天的日常是:

拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了。
Expand Down
2 changes: 0 additions & 2 deletions 5-8,回调函数callbacks.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 5-8,回调函数callbacks



tf.keras的回调函数实际上是一个类,一般是在model.fit时作为参数指定,用于控制在训练过程开始或者在训练过程结束,在每个epoch训练开始或者训练结束,在每个batch训练开始或者训练结束时执行一些操作,例如收集一些日志信息,改变学习率等超参数,提前终止训练过程等等。

同样地,针对model.evaluate或者model.predict也可以指定callbacks参数,用于控制在评估或预测开始或者结束时,在每个batch开始或者结束时执行一些操作,但这种用法相对少见。
Expand Down
2 changes: 0 additions & 2 deletions 6-1,构建模型的3种方法.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-1,构建模型的3种方法



可以使用以下3种方式构建模型:使用Sequential按层顺序构建模型,使用函数式API构建任意结构模型,继承Model基类构建自定义模型。

对于顺序结构的模型,优先使用Sequential方法构建。
Expand Down
2 changes: 0 additions & 2 deletions 6-2,训练模型的3种方法.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-2,训练模型的3种方法



模型的训练主要有内置fit方法、内置tran_on_batch方法、自定义训练循环。

注:fit_generator方法在tf.keras中不推荐使用,其功能已经被fit包含。
Expand Down
2 changes: 0 additions & 2 deletions 6-3,使用单GPU训练模型.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-3,使用单GPU训练模型



深度学习的训练过程常常非常耗时,一个模型训练几个小时是家常便饭,训练几天也是常有的事情,有时候甚至要训练几十天。

训练过程的耗时主要来自于两个部分,一部分来自数据准备,另一部分来自参数迭代。
Expand Down
2 changes: 0 additions & 2 deletions 6-4,使用多GPU训练模型.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-4,使用多GPU训练模型



如果使用多GPU训练模型,推荐使用内置fit方法,较为方便,仅需添加2行代码。

在Colab笔记本中:修改->笔记本设置->硬件加速器 中选择 GPU
Expand Down
2 changes: 0 additions & 2 deletions 6-5,使用TPU训练模型.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-5,使用TPU训练模型



如果想尝试使用Google Colab上的TPU来训练模型,也是非常方便,仅需添加6行代码。

在Colab笔记本中:修改->笔记本设置->硬件加速器 中选择 TPU
Expand Down
2 changes: 0 additions & 2 deletions 6-6,使用tensorflow-serving部署模型.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-6,使用tensorflow-serving部署模型



TensorFlow训练好的模型以tensorflow原生方式保存成protobuf文件后可以用许多方式部署运行。

例如:通过 tensorflow-js 可以用javascrip脚本加载模型并在浏览器中运行模型。
Expand Down
4 changes: 1 addition & 3 deletions 6-7,使用spark-scala调用tensorflow模型.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 6-7,使用spark-scala调用tensorflow2.0训练好的模型



本篇文章介绍在spark中调用训练好的tensorflow模型进行预测的方法。

本文内容的学习需要一定的spark和scala基础。
Expand Down Expand Up @@ -130,7 +128,7 @@ linear.save(export_path+version, save_format="tf")
也可以从下面网址中直接下载 org.tensorflow.tensorflow的jar包

以及其依赖的org.tensorflow.libtensorflow 和 org.tensorflowlibtensorflow_jni的jar包 放到项目中。

https://mvnrepository.com/artifact/org.tensorflow/tensorflow/1.15.0


Expand Down
40 changes: 17 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# 《30天吃掉那只 TensorFlow2.0 》开篇辞 🔥🔥

<!-- #region -->

github项目地址:https://github.com/lyhue1991/eat_tensorflow2_in_30_days/

gitbook电子书地址: https://lyhue1991.github.io/eat_tensorflow2_in_30_days/


### 一,TensorFlow2 🍎 还是 Pytorch🔥

先说结论:
Expand All @@ -9,7 +14,7 @@

**如果是学生或者研究人员,应该优先选择Pytorch.**

**如果时间足够,最好Tensorflow2和Pytorch都要学习掌握**
**如果时间足够,最好TensorFlow2和Pytorch都要学习掌握**


理由如下:
Expand All @@ -22,8 +27,6 @@

* 3,TensorFlow2和Pytorch实际上整体风格已经非常相似了,学会了其中一个,学习另外一个将比较容易。两种框架都掌握的话,能够参考的开源模型案例更多,并且可以方便地在两种框架之间切换。

<!-- #endregion -->

```python

```
Expand All @@ -45,13 +48,6 @@ tf.keras绝大部分功能和兼容多种后端的Keras库用法完全一样,

随着谷歌对Keras的收购,Keras库2.3.0版本后也将不再进行更新,用户应当使用tf.keras而不是使用pip安装的Keras.



```python

```

<!-- #region -->
### 三,本书📖面向读者 👼


Expand All @@ -67,12 +63,6 @@ tf.keras绝大部分功能和兼容多种后端的Keras库用法完全一样,



<!-- #endregion -->

```python

```

### 四,本书写作风格 🍉


Expand All @@ -98,10 +88,6 @@ tf.keras绝大部分功能和兼容多种后端的Keras库用法完全一样,

### 五,本书学习方案 ⏰

```python

```

**1,学习计划**

本书是作者利用工作之余和疫情放假期间大概2个月写成的,大部分读者应该在30天可以完全学会。
Expand Down Expand Up @@ -159,12 +145,20 @@ tf.keras绝大部分功能和兼容多种后端的Keras库用法完全一样,

**2,学习环境**


本书全部源码在jupyter中编写测试通过,建议通过git克隆到本地,并在jupyter中交互式运行学习。

为了直接能够在jupyter中打开markdown文件,建议安装jupytext,将markdown转换成ipnb。

```python
#建议在jupyter notebook 上安装最新版本tensorflow 测试本书中的代码
!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U tensorflow
#克隆本书源码到本地
!git clone https://github.com/lyhue1991/eat_tensorflow2_in_30_days

#建议在jupyter notebook 上安装jupytext,以便能够将本书各章节markdown文件视作ipynb文件运行
!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U jupytext

#建议在jupyter notebook 上安装最新版本tensorflow 测试本书中的代码
!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U tensorflow
```

```python
Expand Down
Binary file added data/image-20200321085343234.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions data/tf_model_savedmodel/variables/checkpoint

This file was deleted.

2 changes: 0 additions & 2 deletions 五、TensorFlow的中阶API.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 五、TensorFlow的中阶API



TensorFlow的中阶API主要包括:

* 数据管道(tf.data)
Expand Down
2 changes: 0 additions & 2 deletions 六、TensorFlow的高阶API.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 六、TensorFlow的高阶API



TensorFlow的高阶API主要是tensorflow.keras.models.

本章我们主要详细介绍tensorflow.keras.models相关的以下内容。
Expand Down
2 changes: 0 additions & 2 deletions 四、TensorFlow的低阶API.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 四、TensorFlow的低阶API



TensorFlow的低阶API主要包括张量操作,计算图和自动微分。

如果把模型比作一个房子,那么低阶API就是【模型之砖】。
Expand Down

0 comments on commit d8c0c73

Please sign in to comment.