未验证 提交 8423e24b 编写于 作者: 片刻小哥哥's avatar 片刻小哥哥 提交者: GitHub

辛苦了 | Merge pull request #557 from zju-zry/master

修改了一下翻译的内容
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_nn/dynamic_net.html#sphx-glr-beginner-examples-nn-dynamic-net-py>
为了展示 PyTorch 动态图的强大功能,我们将实现一个非常奇怪的模型:一个三阶多项式,在每个正向传播中选择 3 到 5 之间的一个随机数,并使用该数量的阶次,多次使用相同的权重重复计算四和五阶
为了展示 PyTorch 动态图的强大功能,我们将实现一个非常奇怪的模型:一个从三到五阶(动态变化)的多项式,在每次正向传递中选择一个 3 到 5 之间的一个随机数,并将这个随机数作为阶数,第四和第五阶共用同一个权重来多次重复计算
```py
import random
......
......@@ -58,7 +58,7 @@ print(x_train.shape)
![../_img/sphx_glr_nn_tutorial_001.png](img/7c783def0bbe536f41ed172041b7e89e.png)
输出如下
```py
(50000, 784)
......@@ -81,7 +81,7 @@ print(y_train.min(), y_train.max())
```
输出如下
```py
tensor([[0., 0., 0., ..., 0., 0., 0.],
......@@ -140,7 +140,7 @@ print(preds[0], preds.shape)
```
输出如下
```py
tensor([-2.5964, -2.3153, -2.1321, -2.4480, -2.2930, -1.9507, -2.1289, -2.4175,
......@@ -168,7 +168,7 @@ print(loss_func(preds, yb))
```
输出如下
```py
tensor(2.3735, grad_fn=<NegBackward>)
......@@ -191,7 +191,7 @@ print(accuracy(preds, yb))
```
输出如下
```py
tensor(0.0938)
......@@ -238,7 +238,7 @@ for epoch in range(epochs):
```
就是这样:我们完全从头开始创建并训练了一个最小的神经网络(在这种情况下,是逻辑回归,因为我们没有隐藏层)!
就是这样:我们完全从头开始创建并训练了一个最小的神经网络(在这种情况下,是逻辑回归,因为我们没有隐藏层)!
让我们检查损失和准确率,并将其与我们之前获得的进行比较。 我们希望损失会减少,准确率会增加,而且确实如此。
......@@ -247,7 +247,7 @@ print(loss_func(model(xb), yb), accuracy(model(xb), yb))
```
输出如下
```py
tensor(0.0811, grad_fn=<NegBackward>) tensor(1.)
......@@ -256,9 +256,9 @@ tensor(0.0811, grad_fn=<NegBackward>) tensor(1.)
## 使用`torch.nn.functional`
现在,我们将重构代码,使其执行与以前相同的操作,只是我们将开始利用 PyTorch 的`nn`类使其更加简洁和灵活。 从这里开始的每一步,我们都应该使代码中的一个或多个:更短,更易理解和/或更灵活。
现在,我们将重构代码,使其执行与以前相同的操作,只是我们将开始利用 PyTorch 的`nn`类使其更加简洁和灵活。 从这里开始的每一步,应该使我们的代码占一个或多个特点:更简洁、更易理解、和/或更灵活。
第一步也是最简单的步骤,就是用`torch.nn.functional`(通常按照惯例将其导入到名称空间`F`中)替换我们的手写激活和损失函数,从而缩短代码长度。 该模块包含`torch.nn`库中的所有函数(而该库的其他部分包含类)。 除了广泛的损失和激活函数外,您还会在这里找到一些方便的函数来创建神经网络,例如合并函数。 (还有一些用于进行卷积,线性层等的函数,但是正如我们将看到的那样,通常可以使用库的其他部分来更好地处理这些函数。)
第一步也是最简单的步骤,就是用`torch.nn.functional`(通常按照惯例将其导入到名称空间`F`中)替换我们的手写激活和损失函数,从而缩短代码长度。 该模块包含`torch.nn`库中的所有函数(而该库的其他部分包含类)。 除了广泛的损失和激活函数外,您还会在这里找到一些方便的函数来创建神经网络,例如池化函数。 (还有一些用于进行卷积,线性层等的函数,但是正如我们将看到的那样,通常可以使用库的其他部分来更好地处理这些函数。)
如果您使用的是负对数似然损失和对数 softmax 激活,那么 Pytorch 会提供结合了两者的单一函数`F.cross_entropy`。 因此,我们甚至可以从模型中删除激活函数。
......@@ -279,7 +279,7 @@ print(loss_func(model(xb), yb), accuracy(model(xb), yb))
```
输出如下
```py
tensor(0.0811, grad_fn=<NllLossBackward>) tensor(1.)
......@@ -322,7 +322,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(2.3903, grad_fn=<NllLossBackward>)
......@@ -379,7 +379,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(0.0808, grad_fn=<NllLossBackward>)
......@@ -409,7 +409,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(2.4215, grad_fn=<NllLossBackward>)
......@@ -425,7 +425,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(0.0824, grad_fn=<NllLossBackward>)
......@@ -487,7 +487,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(2.2999, grad_fn=<NllLossBackward>)
......@@ -545,7 +545,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(0.0819, grad_fn=<NllLossBackward>)
......@@ -597,7 +597,7 @@ print(loss_func(model(xb), yb))
```
输出如下
```py
tensor(0.0821, grad_fn=<NllLossBackward>)
......@@ -648,7 +648,7 @@ for epoch in range(epochs):
```
输出如下
```py
0 tensor(0.3743)
......@@ -717,7 +717,7 @@ fit(epochs, model, loss_func, opt, train_dl, valid_dl)
```
输出如下
```py
0 0.3120644524335861
......@@ -763,7 +763,7 @@ fit(epochs, model, loss_func, opt, train_dl, valid_dl)
```
输出如下
```py
0 0.32337012240886687
......@@ -812,7 +812,7 @@ fit(epochs, model, loss_func, opt, train_dl, valid_dl)
```
输出如下
```py
0 0.30119081069231035
......@@ -879,7 +879,7 @@ fit(epochs, model, loss_func, opt, train_dl, valid_dl)
```
输出如下
```py
0 0.327303307390213
......@@ -896,7 +896,7 @@ print(torch.cuda.is_available())
```
输出如下
```py
True
......@@ -938,7 +938,7 @@ fit(epochs, model, loss_func, opt, train_dl, valid_dl)
```
输出如下
```py
0 0.1833980613708496
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册