提交 bb91c566 编写于 作者: A Aston Zhang

Revert "code change for 1.4.0rc"

This reverts commit 08e604cb.
上级 5316c46f
...@@ -125,10 +125,11 @@ no_aug = gdata.vision.transforms.Compose([ ...@@ -125,10 +125,11 @@ no_aug = gdata.vision.transforms.Compose([
接下来我们定义一个辅助函数来方便读取图像并应用图像增广。Gluon的数据集提供的`transform_first`函数将图像增广应用在每个训练样本(图像和标签)的第一个元素,即图像之上。有关`DataLoader`的详细介绍,可参考更早的[“图像分类数据集(Fashion-MNIST)”](../chapter_deep-learning-basics/fashion-mnist.md)一节。 接下来我们定义一个辅助函数来方便读取图像并应用图像增广。Gluon的数据集提供的`transform_first`函数将图像增广应用在每个训练样本(图像和标签)的第一个元素,即图像之上。有关`DataLoader`的详细介绍,可参考更早的[“图像分类数据集(Fashion-MNIST)”](../chapter_deep-learning-basics/fashion-mnist.md)一节。
```{.python .input n=34} ```{.python .input n=34}
num_workers = 0 if sys.platform.startswith('win32') else 4
def load_cifar10(is_train, augs, batch_size): def load_cifar10(is_train, augs, batch_size):
return gdata.DataLoader( return gdata.DataLoader(
gdata.vision.CIFAR10(train=is_train).transform_first(augs), gdata.vision.CIFAR10(train=is_train).transform_first(augs),
batch_size=batch_size, shuffle=is_train, num_workers=4) batch_size=batch_size, shuffle=is_train, num_workers=num_workers)
``` ```
### 使用多GPU训练模型 ### 使用多GPU训练模型
......
...@@ -177,10 +177,11 @@ voc_test = VOCSegDataset(False, crop_size, voc_dir, colormap2label) ...@@ -177,10 +177,11 @@ voc_test = VOCSegDataset(False, crop_size, voc_dir, colormap2label)
```{.python .input n=11} ```{.python .input n=11}
batch_size = 64 batch_size = 64
num_workers = 0 if sys.platform.startswith('win32') else 4
train_iter = gdata.DataLoader(voc_train, batch_size, shuffle=True, train_iter = gdata.DataLoader(voc_train, batch_size, shuffle=True,
last_batch='discard', num_workers=4) last_batch='discard', num_workers=num_workers)
test_iter = gdata.DataLoader(voc_test, batch_size, last_batch='discard', test_iter = gdata.DataLoader(voc_test, batch_size, last_batch='discard',
num_workers=4) num_workers=num_workers)
``` ```
打印第一个小批量的形状。不同于图像分类和目标识别,这里的标签是一个三维的数组。 打印第一个小批量的形状。不同于图像分类和目标识别,这里的标签是一个三维的数组。
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -106,12 +106,13 @@ def load_data_fashion_mnist(batch_size, resize=None, root=os.path.join( ...@@ -106,12 +106,13 @@ def load_data_fashion_mnist(batch_size, resize=None, root=os.path.join(
transformer = gdata.vision.transforms.Compose(transformer) transformer = gdata.vision.transforms.Compose(transformer)
mnist_train = gdata.vision.FashionMNIST(root=root, train=True) mnist_train = gdata.vision.FashionMNIST(root=root, train=True)
mnist_test = gdata.vision.FashionMNIST(root=root, train=False) mnist_test = gdata.vision.FashionMNIST(root=root, train=False)
num_workers = 0 if sys.platform.startswith('win32') else 4
train_iter = gdata.DataLoader( train_iter = gdata.DataLoader(
mnist_train.transform_first(transformer), batch_size, shuffle=True, mnist_train.transform_first(transformer), batch_size, shuffle=True,
num_workers=4) num_workers=num_workers)
test_iter = gdata.DataLoader( test_iter = gdata.DataLoader(
mnist_test.transform_first(transformer), batch_size, shuffle=False, mnist_test.transform_first(transformer), batch_size, shuffle=False,
num_workers=4) num_workers=num_workers)
return train_iter, test_iter return train_iter, test_iter
batch_size = 128 batch_size = 128
......
...@@ -88,12 +88,17 @@ show_fashion_mnist(X, get_fashion_mnist_labels(y)) ...@@ -88,12 +88,17 @@ show_fashion_mnist(X, get_fashion_mnist_labels(y))
```{.python .input n=28} ```{.python .input n=28}
batch_size = 256 batch_size = 256
transformer = gdata.vision.transforms.ToTensor() transformer = gdata.vision.transforms.ToTensor()
if sys.platform.startswith('win'):
num_workers = 0 # 0 表示不用额外的进程来加速读取数据。
else:
num_workers = 4
train_iter = gdata.DataLoader(mnist_train.transform_first(transformer), train_iter = gdata.DataLoader(mnist_train.transform_first(transformer),
batch_size, shuffle=True, batch_size, shuffle=True,
num_workers=4) num_workers=num_workers)
test_iter = gdata.DataLoader(mnist_test.transform_first(transformer), test_iter = gdata.DataLoader(mnist_test.transform_first(transformer),
batch_size, shuffle=False, batch_size, shuffle=False,
num_workers=4) num_workers=num_workers)
``` ```
我们将获取并读取Fashion-MNIST数据集的逻辑封装在`gluonbook.load_data_fashion_mnist`函数中供后面章节调用。该函数将返回`train_iter``test_iter`两个变量。随着本书内容的不断深入,我们会进一步改进该函数。它的完整实现将在[“深度卷积神经网络(AlexNet)”](../chapter_convolutional-neural-networks/alexnet.md)一节中描述。 我们将获取并读取Fashion-MNIST数据集的逻辑封装在`gluonbook.load_data_fashion_mnist`函数中供后面章节调用。该函数将返回`train_iter``test_iter`两个变量。随着本书内容的不断深入,我们会进一步改进该函数。它的完整实现将在[“深度卷积神经网络(AlexNet)”](../chapter_convolutional-neural-networks/alexnet.md)一节中描述。
......
...@@ -64,14 +64,14 @@ y = net(x) ...@@ -64,14 +64,14 @@ y = net(x)
```{.python .input} ```{.python .input}
filename = 'mlp.params' filename = 'mlp.params'
net.save_parameters(filename) net.save_params(filename)
``` ```
接下来,我们再实例化一次定义好的多层感知机。跟随机初始化模型参数不同,我们在这里直接读取保存在文件里的参数。 接下来,我们再实例化一次定义好的多层感知机。跟随机初始化模型参数不同,我们在这里直接读取保存在文件里的参数。
```{.python .input n=8} ```{.python .input n=8}
net2 = MLP() net2 = MLP()
net2.load_parameters(filename) net2.load_params(filename)
``` ```
因为这两个实例都有同样的模型参数,那么对同一个输入`x`的计算结果将会是一样。我们来验证一下。 因为这两个实例都有同样的模型参数,那么对同一个输入`x`的计算结果将会是一样。我们来验证一下。
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
```{.python .input n=1} ```{.python .input n=1}
import collections import collections
import gluonbook as gb
import math import math
from mxnet import autograd, gluon, nd from mxnet import autograd, gluon, nd
from mxnet.gluon import data as gdata, loss as gloss, nn from mxnet.gluon import data as gdata, loss as gloss, nn
...@@ -182,9 +181,10 @@ def batchify(data): ...@@ -182,9 +181,10 @@ def batchify(data):
```{.python .input n=14} ```{.python .input n=14}
batch_size = 512 batch_size = 512
num_workers = 0 if sys.platform.startswith('win32') else 4
dataset = gdata.ArrayDataset(all_centers, all_contexts, all_negatives) dataset = gdata.ArrayDataset(all_centers, all_contexts, all_negatives)
data_iter = gdata.DataLoader(dataset, batch_size, shuffle=True, data_iter = gdata.DataLoader(dataset, batch_size, shuffle=True,
batchify_fn=batchify, num_workers=4) batchify_fn=batchify, num_workers=num_workers)
for batch in data_iter: for batch in data_iter:
for name, data in zip(['centers', 'contexts_negatives', 'masks', for name, data in zip(['centers', 'contexts_negatives', 'masks',
'labels'], batch): 'labels'], batch):
...@@ -275,10 +275,8 @@ print('%.7f' % ((sigmd(1.1) + sigmd(-0.6) + sigmd(-2.2)) / 3)) ...@@ -275,10 +275,8 @@ print('%.7f' % ((sigmd(1.1) + sigmd(-0.6) + sigmd(-2.2)) / 3))
```{.python .input n=22} ```{.python .input n=22}
embed_size = 100 embed_size = 100
net = nn.Sequential() net = nn.Sequential()
net.add(nn.Embedding(input_dim=len(idx_to_token), output_dim=embed_size, net.add(nn.Embedding(input_dim=len(idx_to_token), output_dim=embed_size),
sparse_grad=True), nn.Embedding(input_dim=len(idx_to_token), output_dim=embed_size))
nn.Embedding(input_dim=len(idx_to_token), output_dim=embed_size,
sparse_grad=True))
``` ```
### 训练 ### 训练
...@@ -287,15 +285,13 @@ net.add(nn.Embedding(input_dim=len(idx_to_token), output_dim=embed_size, ...@@ -287,15 +285,13 @@ net.add(nn.Embedding(input_dim=len(idx_to_token), output_dim=embed_size,
```{.python .input n=23} ```{.python .input n=23}
def train(net, lr, num_epochs): def train(net, lr, num_epochs):
ctx = gb.try_gpu() net.initialize(force_reinit=True)
net.initialize(ctx=ctx, force_reinit=True)
trainer = gluon.Trainer(net.collect_params(), 'adam', trainer = gluon.Trainer(net.collect_params(), 'adam',
{'learning_rate': lr}) {'learning_rate': lr})
for epoch in range(num_epochs): for epoch in range(num_epochs):
start_time, train_l_sum = time.time(), 0 start_time, train_l_sum = time.time(), 0
for batch in data_iter: for batch in data_iter:
center, context_negative, mask, label = [ center, context_negative, mask, label = batch
data.as_in_context(ctx) for data in batch]
with autograd.record(): with autograd.record():
pred = skip_gram(center, context_negative, net[0], net[1]) pred = skip_gram(center, context_negative, net[0], net[1])
# 使用掩码变量 mask 来避免填充项对损失函数计算的影响。 # 使用掩码变量 mask 来避免填充项对损失函数计算的影响。
......
...@@ -235,13 +235,14 @@ def load_data_fashion_mnist(batch_size, resize=None, root=os.path.join( ...@@ -235,13 +235,14 @@ def load_data_fashion_mnist(batch_size, resize=None, root=os.path.join(
mnist_train = gdata.vision.FashionMNIST(root=root, train=True) mnist_train = gdata.vision.FashionMNIST(root=root, train=True)
mnist_test = gdata.vision.FashionMNIST(root=root, train=False) mnist_test = gdata.vision.FashionMNIST(root=root, train=False)
num_workers = 0 if sys.platform.startswith('win32') else 4
train_iter = gdata.DataLoader(mnist_train.transform_first(transformer), train_iter = gdata.DataLoader(mnist_train.transform_first(transformer),
batch_size, shuffle=True, batch_size, shuffle=True,
num_workers=4) num_workers=num_workers)
test_iter = gdata.DataLoader(mnist_test.transform_first(transformer), test_iter = gdata.DataLoader(mnist_test.transform_first(transformer),
batch_size, shuffle=False, batch_size, shuffle=False,
num_workers=4) num_workers=num_workers)
return train_iter, test_iter return train_iter, test_iter
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册