Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
pytorch-doc-zh
提交
8423e24b
P
pytorch-doc-zh
项目概览
OpenDocCN
/
pytorch-doc-zh
通知
120
Star
3932
Fork
992
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pytorch-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
8423e24b
编写于
6月 10, 2021
作者:
片刻小哥哥
提交者:
GitHub
6月 10, 2021
浏览文件
操作
浏览文件
下载
差异文件
辛苦了 | Merge pull request #557 from zju-zry/master
修改了一下翻译的内容
上级
25316114
e40db448
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
25 deletion
+25
-25
docs/1.7/15.md
docs/1.7/15.md
+1
-1
docs/1.7/16.md
docs/1.7/16.md
+24
-24
未找到文件。
docs/1.7/15.md
浏览文件 @
8423e24b
...
...
@@ -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
...
...
docs/1.7/16.md
浏览文件 @
8423e24b
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录