Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
0489823c
D
d2l-zh
项目概览
OpenDocCN
/
d2l-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0489823c
编写于
7月 24, 2018
作者:
A
Aston Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
revise cv, dlc, nlp, cp
上级
31bfc506
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
16 addition
and
15 deletion
+16
-15
chapter_computational-performance/auto-parallelism.md
chapter_computational-performance/auto-parallelism.md
+5
-5
chapter_computer-vision/kaggle-gluon-cifar10.md
chapter_computer-vision/kaggle-gluon-cifar10.md
+2
-1
chapter_computer-vision/kaggle-gluon-dog.md
chapter_computer-vision/kaggle-gluon-dog.md
+2
-1
chapter_computer-vision/neural-style.md
chapter_computer-vision/neural-style.md
+2
-4
chapter_computer-vision/ssd.md
chapter_computer-vision/ssd.md
+2
-2
chapter_deep-learning-computation/model-construction.md
chapter_deep-learning-computation/model-construction.md
+1
-1
chapter_natural-language-processing/sentiment-analysis.md
chapter_natural-language-processing/sentiment-analysis.md
+2
-1
未找到文件。
chapter_computational-performance/auto-parallelism.md
浏览文件 @
0489823c
...
...
@@ -40,12 +40,12 @@ nd.waitall() # 预热结束。
start = time()
run(x_cpu)
nd.waitall()
print('run on CPU: %f sec' % (time()
-
start))
print('run on CPU: %f sec' % (time()
-
start))
start = time()
run(x_gpu)
nd.waitall()
print('run on GPU: %f sec' % (time()
-
start))
print('run on GPU: %f sec' % (time()
-
start))
```
我们去掉
`run(x_cpu)`
和
`run(x_gpu)`
两个计算任务之间的
`nd.waitall()`
,希望系统能自动并行这两个任务。
...
...
@@ -55,7 +55,7 @@ start = time()
run(x_cpu)
run(x_gpu)
nd.waitall()
print('run on both CPU and GPU: %f sec' % (time()
-
start))
print('run on both CPU and GPU: %f sec' % (time()
-
start))
```
可以看到,当两个计算任务一起执行时,执行总时间小于它们分开执行的总和。这表示,MXNet能有效地在CPU和GPU上自动并行计算。
...
...
chapter_computer-vision/kaggle-gluon-cifar10.md
浏览文件 @
0489823c
...
...
@@ -141,7 +141,8 @@ transform_train = gdata.vision.transforms.Compose([
ratio=(1.0, 1.0)),
# 随机左右翻转图片。
gdata.vision.transforms.RandomFlipLeftRight(),
# 将图片像素值按比例缩小到 0 和 1 之间,并将数据格式从“高*宽*通道”改为“通道*高*宽”。
# 将图片像素值按比例缩小到 0 和 1 之间,并将数据格式从“高 * 宽 * 通道”改为
# “通道 * 高 * 宽”。
gdata.vision.transforms.ToTensor(),
# 对图片的每个通道做标准化。
gdata.vision.transforms.Normalize([0.4914, 0.4822, 0.4465],
...
...
chapter_computer-vision/kaggle-gluon-dog.md
浏览文件 @
0489823c
...
...
@@ -146,7 +146,8 @@ transform_train = gdata.vision.transforms.Compose([
# 随机加噪音。
gdata.vision.transforms.RandomLighting(0.1),
# 将图片像素值按比例缩小到 0 和 1 之间,并将数据格式从“高*宽*通道”改为“通道*高*宽”。
# 将图片像素值按比例缩小到 0 和 1 之间,并将数据格式从“高 *宽 * 通道”改为
# “通道 * 高 * 宽”。
gdata.vision.transforms.ToTensor(),
# 对图片的每个通道做标准化。
gdata.vision.transforms.Normalize([0.485, 0.456, 0.406],
...
...
chapter_computer-vision/neural-style.md
浏览文件 @
0489823c
...
...
@@ -133,9 +133,7 @@ def style_loss(y_hat, gram_y):
当我们使用靠近输出层的神经层输出来匹配时,经常可以观察到学到的合成图片里面有大量高频噪音,即有特别亮或者暗的颗粒像素。一种常用的降噪方法是总变差降噪(total variation denoising)。假设 $x_{i,j}$ 表示像素 $(i,j)$的值,总变差损失使得邻近的像素值相似:
$$
\s
um_{i,j} |x_{i,j} - x_{i+1,j}| + |x_{i,j} - x_{i,j+1}|
$$
$$
\s
um_{i,j}
\l
eft|x_{i,j} - x_{i+1,j}
\r
ight| +
\l
eft|x_{i,j} - x_{i,j+1}
\r
ight|.$$
```
{.python .input}
def tv_loss(y_hat):
...
...
@@ -176,7 +174,7 @@ def train(x, content_y, style_y, ctx, lr, max_epochs, lr_decay_epoch):
# 对所有损失求和。
l = nd.add_n(*style_L) + nd.add_n(*content_L) + tv_L
l.backward()
# 对 x 的梯度除去绝对均值使得数值更加稳定,并更新 x
# 对 x 的梯度除去绝对均值使得数值更加稳定,并更新 x
。
x.grad[:] /= x.grad.abs().mean() + 1e-8
x[:] -= lr * x.grad
# 如果不加的话会导致每50轮迭代才同步一次,可能导致过大内存使用。
...
...
chapter_computer-vision/ssd.md
浏览文件 @
0489823c
...
...
@@ -24,7 +24,7 @@ import time
具体来说,类别预测层使用一个保持输入高宽的卷积层,其输出的$(x,y)$像素通道里包含了以输入$(x,y)$像素为中心的所有锚框的类别预测。其输出通道数为$a(n+1)$,其中通道$i(n+1)$是第$i$个锚框预测的背景置信度,而通道$i(n+1)+j+1$则是第$i$锚框预测的第$j$类物体的置信度。
下面我们定义一个这样的类别分类器,指定$a$和$n$后,它使用一个填充为1的
3乘3卷积层。注意到我们使用了较小的卷积窗口,它可能不能覆盖锚框定义的区域。所以我们需要保证前面的卷积层能有效的将较大的锚框区域的特征浓缩到一个3乘3
的窗口里。
下面我们定义一个这样的类别分类器,指定$a$和$n$后,它使用一个填充为1的
$3
\t
imes3$卷积层。注意到我们使用了较小的卷积窗口,它可能不能覆盖锚框定义的区域。所以我们需要保证前面的卷积层能有效的将较大的锚框区域的特征浓缩到一个$3
\t
imes3$
的窗口里。
```
{.python .input n=2}
def cls_predictor(num_anchors, num_classes):
...
...
@@ -79,7 +79,7 @@ concat_preds([y1, y2]).shape
### 减半模块
减半模块将输入高宽减半来得到不同尺度的特征,这是通过步幅2的
2乘2最大池化层来完成。我们前面提到因为预测层的窗口为3,所以我们需要额外卷积层来扩大其作用窗口来有效覆盖锚框区域。为此我们加入两个3乘3卷积层,每个卷积层后接批量归一化层和ReLU激活层。这样,一个尺度上的3乘3窗口覆盖了上一个尺度上的10乘10
窗口。
减半模块将输入高宽减半来得到不同尺度的特征,这是通过步幅2的
$2
\t
imes2$最大池化层来完成。我们前面提到因为预测层的窗口为3,所以我们需要额外卷积层来扩大其作用窗口来有效覆盖锚框区域。为此我们加入两个$3
\t
imes3$卷积层,每个卷积层后接批量归一化层和ReLU激活层。这样,一个尺度上的$3
\t
imes3$窗口覆盖了上一个尺度上的$10
\t
imes10$
窗口。
```
{.python .input n=8}
def down_sample_blk(num_filters):
...
...
chapter_deep-learning-computation/model-construction.md
浏览文件 @
0489823c
...
...
@@ -142,7 +142,7 @@ net(x)
*
在FancyMLP类里我们重用了
`dense`
,这样对输入形状有了一定要求,尝试改变下输入数据形状试试。
*
如果我们去掉FancyMLP里面的
`asscalar`
会有什么问题?
*
在NestMLP里假设我们改成
`self.net
=[nn.Dense(64, activation='relu'),
nn.Dense(32, activation='relu')]`
,而不是用Sequential类来构造,会有什么问题?
*
在NestMLP里假设我们改成
`self.net
= [nn.Dense(64, activation='relu'),
nn.Dense(32, activation='relu')]`
,而不是用Sequential类来构造,会有什么问题?
## 扫码直达[讨论区](https://discuss.gluon.ai/t/topic/986)
...
...
chapter_natural-language-processing/sentiment-analysis.md
浏览文件 @
0489823c
...
...
@@ -50,7 +50,8 @@ def readIMDB(dir_url, seg='train'):
for label in pos_or_neg:
files = os.listdir(os.path.join('../data/',dir_url, seg, label))
for file in files:
with open(os.path.join('../data/',dir_url, seg, label, file), 'r', encoding='utf8') as rf:
with open(os.path.join('../data/',dir_url, seg, label, file), 'r',
encoding='utf8') as rf:
review = rf.read().replace('\n', '')
if label == 'pos':
data.append([review, 1])
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录