Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
f6a360d2
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,发现更多精彩内容 >>
提交
f6a360d2
编写于
9月 13, 2018
作者:
A
Aston Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2pass readwrite
上级
7b113124
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
14 deletion
+10
-14
chapter_deep-learning-computation/read-write.md
chapter_deep-learning-computation/read-write.md
+10
-14
未找到文件。
chapter_deep-learning-computation/read-write.md
浏览文件 @
f6a360d2
...
...
@@ -5,7 +5,7 @@
## 读写NDArrays
我们
首先看如何读写NDArray。我们可以直接使用
`save`
和
`load`
函数分别存储和读取NDArray。下面的例子我们创建
`x`
,并将其存在文件名同为
`x`
的文件里。
我们
可以直接使用
`save`
和
`load`
函数分别存储和读取NDArray。下面的例子创建了NDArray变量
`x`
,并将其存在文件名同为
`x`
的文件里。
```
{.python .input}
from mxnet import nd
...
...
@@ -15,14 +15,14 @@ x = nd.ones(3)
nd.save('x', x)
```
然后我们
再将数据从
文件读回内存。
然后我们
将数据从存储的
文件读回内存。
```
{.python .input}
x2 = nd.load('x')
x2
```
同样我们
可以存储一列NDArray并读回内存。
我们还
可以存储一列NDArray并读回内存。
```
{.python .input n=2}
y = nd.zeros(4)
...
...
@@ -31,7 +31,7 @@ x2, y2 = nd.load('xy')
(x2, y2)
```
或者是一个从字符串
到NDArray的字典。
我们甚至可以存储并读取一个从字符串映射
到NDArray的字典。
```
{.python .input n=4}
mydict = {'x': x, 'y': y}
...
...
@@ -42,9 +42,7 @@ mydict2
## 读写Gluon模型的参数
Block类提供了
`save_parameters`
和
`load_parameters`
函数来读写模型参数。它实际做的事情就是将所有参数组成一个从名称到NDArray的字典并保存到文件。读取的时候会根据参数名称找到对应的NDArray并赋值。下面的例子我们首先创建一个多层感知机,初始化后将模型参数保存到文件里。
下面,我们创建一个多层感知机。
除了NDArray以外,我们还可以读写Gluon模型的参数。Gluon的Block类提供了
`save_parameters`
和
`load_parameters`
函数来读写模型参数。为了演示方便,我们先创建一个多层感知机,并将其初始化。回忆
[
“模型参数的延后初始化”
](
deferred-init.md
)
一节,由于延后初始化,我们需要先运行一次前向计算才能实际初始化模型参数。
```
{.python .input n=6}
class MLP(nn.Block):
...
...
@@ -58,27 +56,25 @@ class MLP(nn.Block):
net = MLP()
net.initialize()
# 由于延后初始化,我们需要先运行一次前向计算才能实际初始化模型参数。
x = nd.random.uniform(shape=(2, 20))
y = net(x)
```
下面
我们把该模型的参数存起来
。
下面
把该模型的参数存成文件,文件名为“mlp.params”
。
```
{.python .input}
filename = 'mlp.params'
net.save_parameters(filename)
```
然后,我们再实例化一次我们定义的多层感知机。但跟前面不一样的是我们不是随机初始化模型参数,而是
直接读取保存在文件里的参数。
接下来,我们再实例化一次定义好的多层感知机。跟随机初始化模型参数不同,我们在这里
直接读取保存在文件里的参数。
```
{.python .input n=8}
net2 = MLP()
net2.load_parameters(filename)
```
因为这两个实例都有同样的
参数,那么对同一个
`x`
的计算结果将会是一样
。
因为这两个实例都有同样的
模型参数,那么对同一个输入
`x`
的计算结果将会是一样。我们来验证一下
。
```
{.python .input}
y2 = net2(x)
...
...
@@ -87,8 +83,8 @@ y2 == y
## 小结
*
通过
`save`
和
`load`
可以很方便地读写NDArray。
*
通过
`load_parameters`
和
`save_parameters`
可以很方便地读写Gluon的模型
参数。
*
通过
`save`
和
`load`
函数
可以很方便地读写NDArray。
*
通过
`load_parameters`
和
`save_parameters`
函数可以很方便地读写Gluon模型的
参数。
## 练习
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录