提交 637ef927 编写于 作者: M muli

change tiles

上级 c6c45ad0
# 使用Gluon的线性回归
# 线性回归 --- 使用Gluon
[前一章](linear-regression-scratch.md)我们仅仅使用了ndarray和autograd来实现线性回归,这一章我们仍然实现同样的模型,但是使用高层抽象包`gluon`
......
# 从0开始的线性回归
# 线性回归 --- 从0开始
虽然强大的深度学习框架可以减少很多重复性工作,但如果你过于依赖它提供的便利抽象,那么你可能不会很容易地理解到底深度学习是如何工作的。所以我们的第一个教程是如何只利用ndarray和autograd来实现一个线性回归的训练。
......
# 使用Gluon的多层感知机
# 多层感知机 --- 使用Gluon
我们只需要稍微改动[多类Logistic回归](../chapter01_crashcourse/softmax-regression-gluon.md)来实现多层感知机。
......
# 从0开始的多层感知机
# 多层感知机 --- 从0开始
前面我们介绍了包括线性回归和多类逻辑回归的数个模型,它们的一个共同点是全是只含有一个输入层,一个输出层。这一节我们将介绍多层神经网络,就是包含至少一个隐含层的网络。
......@@ -45,7 +45,7 @@ for param in params:
## 激活函数
如果我们就用线性操作符来构造多层神经网络,那么整个模型仍然只是一个线性函数。这是因为
如果我们就用线性操作符来构造多层神经网络,那么整个模型仍然只是一个线性函数。这是因为
$$\hat{y} = X \cdot W_1 \cdot W_2 = X \cdot W_3 $$
......
# 使用Gluon的多类逻辑回归
# 多类逻辑回归 --- 使用Gluon
现在让我们使用gluon来更快速地实现一个多类逻辑回归。
......
# 从0开始的多类逻辑回归
# 多类逻辑回归 --- 从0开始
如果你读过了[从0开始的线性回归](linear-regression-scratch.md),那么最难的部分已经过去了。现在你知道如果读取和操作数据,如何构造目标函数和对它求导,如果定义损失函数,模型和求解。
......
# 使用Gluon的卷积神经网络
# 卷积神经网络 --- 使用Gluon
现在我们使用Gluon来实现[上一章的卷积神经网络](cnn-scratch.md)
......
# 从0开始的卷积神经网络
# 卷积神经网络 --- 从0开始
之前的教程里,在输入神经网络前我们将输入图片直接转成了向量。这样做有两个不好的地方:
......@@ -39,7 +39,7 @@ print('input:', data, '\n\nweight:', w, '\n\nbias:', b, '\n\noutput:', out)
![](https://raw.githubusercontent.com/vdumoulin/conv_arithmetic/master/gif/padding_strides.gif)
```{.python .input n=48}
out = nd.Convolution(data, w, b, kernel=w.shape[2:], num_filter=w.shape[1],
out = nd.Convolution(data, w, b, kernel=w.shape[2:], num_filter=w.shape[1],
stride=(2,2), pad=(1,1))
print('input:', data, '\n\nweight:', w, '\n\nbias:', b, '\n\noutput:', out)
......@@ -159,8 +159,8 @@ def net(X, verbose=False):
h2_conv = nd.Convolution(
data=h1, weight=W2, bias=b2, kernel=W2.shape[2:], num_filter=W2.shape[0])
h2_activation = nd.relu(h2_conv)
h2 = nd.Pooling(data=h2_activation, pool_type="max", kernel=(2,2), stride=(2,2))
h2 = nd.flatten(h2)
h2 = nd.Pooling(data=h2_activation, pool_type="max", kernel=(2,2), stride=(2,2))
h2 = nd.flatten(h2)
# 第一层全连接
h3_linear = nd.dot(h2, W3) + b3
h3 = nd.relu(h3_linear)
......
# 从0开始的循环神经网络
# 循环神经网络 --- 从0开始
前面的教程里我们使用的网络都属于**前馈神经网络**。为什么叫前馈是整个网络是一条链(回想下`gluon.nn.Sequential`),每一层的结果都是反馈给下一层。这一节我们介绍**循环神经网络**,这里每一层不仅输出给下一层,同时还输出一个**隐藏状态**,给当前层在处理下一个样本时使用。下图展示这两种网络的区别。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册