使用 Jupyter 笔记本

本节介绍如何使用 Jypyter 笔记本编辑和运行本书代码。请确保你已按照“安装和运行”一节中的步骤安装好 Jupyter 笔记本并获取了本书代码。

在本地编辑和运行本书代码

下面我们介绍如何在本地使用 Jupyter 笔记本来编辑和运行本书代码。假设本书代码所在的本地路径为“xx/yy/gluon_tutorials_zh-1.0/”。在命令行模式下进入该路径(cd xx/yy/gluon_tutorials_zh-1.0),然后运行命令jupyter notebook。这时在浏览器打开 http://localhost:8888 (通常会自动打开)就可以看到 Jupyter 笔记本的界面和本书代码所在的各个文件夹,如图 11.1 所示。

本书代码所在的各个文件夹。

本书代码所在的各个文件夹。

我们可以通过点击网页上显示的文件夹访问其中的笔记本文件。它们的后缀通常是“ipynb”。 为了简洁起见,我们创建一个临时的“test.ipynb”文件,点击后所显示的内容如图 11.2 所示。该笔记本包括了格式化文本单元(markdown cell)和代码单元(code cell)。其中格式化文本单元中的内容包括“这是标题”和“这是一段正文。”。代码单元中包括两行 Python 代码。

“test.ipynb”文件包括了格式化文本单元和代码单元。

“test.ipynb”文件包括了格式化文本单元和代码单元。

双击格式化文本单元,我们进入了编辑模式。在该单元的末尾添加一段新文本“你好世界。”,如图 11.3 所示。

编辑格式化文本单元。

编辑格式化文本单元。

如图 11.4 所示,点击菜单栏的“Cell” \(\rightarrow\) “Run Cells”,运行编辑好的单元。

运行单元。

运行单元。

运行完以后,图 11.5 展示了编辑后的格式化文本单元。

编辑后的格式化文本单元。

编辑后的格式化文本单元。

接下来,点击代码单元。在最后一行代码后添加乘以 2 的操作 * 2,如图 11.6 所示。

编辑代码单元。

编辑代码单元。

我们也可以用快捷键运行单元(默认“Ctrl + Enter”),并得到图 11.7 中的输出结果。

运行代码单元得到输出结果。

运行代码单元得到输出结果。

当一个笔记本包含的单元较多时,我们可以点击菜单栏的“Kernel” \(\rightarrow\) “Restart & Run All”,以运行整个笔记本中的所有单元。点击菜单栏的“Help” \(\rightarrow\) “Edit Keyboard Shortcuts”后可以根据自己的喜好编辑快捷键。

高级选项

以下是有关使用 Jupyter 笔记本的一些高级选项。你可以根据自己的兴趣参考其中内容。

用 Jupyter 笔记本读写 GitHub 源文件

如果你希望为本书内容做贡献,需要修改在 GitHub 上 markdown 格式的源文件(.md 文件非.ipynb 文件)。通过 notedown 插件,我们就可以使用 Jupyter 笔记本修改并运行 markdown 格式的源代码。Linux/macOS 用户可以执行以下命令获得 GitHub 源文件并激活运行环境。

git clone https://github.com/mli/gluon-tutorials-zh
cd gluon-tutorials-zh
conda env create -f environment.yml
source activate gluon # Windows 用户运行 activate gluon

下面安装 notedown 插件,运行 Jupyter 笔记本并加载插件:

pip install https://github.com/mli/notedown/tarball/master
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'

如果你希望每次运行 Jupyter 笔记本时默认开启 notedown 插件,可以参考下面步骤。

首先,执行下面命令生成 Jupyter 笔记本配置文件(如果已经生成可以跳过)。

jupyter notebook --generate-config

然后,将下面这一行加入到 Jupyter 笔记本配置文件的末尾(Linux/macOS 上一般在~/.jupyter/jupyter_notebook_config.py)

c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'

之后,我们只需要运行jupyter notebook即可默认开启 notedown 插件。

在远端服务器上运行 Jupyter 笔记本

有时候,我们希望在远端服务器上运行 Jupyter 笔记本,并通过本地电脑上的浏览器访问。如果本地机器上安装了 Linux 或者 macOS(Windows 通过 putty 等第三方软件也能支持),那么可以使用端口映射:

ssh myserver -L 8888:localhost:8888

以上myserver是远端服务器地址。然后我们可以使用 http://localhost:8888 打开运行 Jupyter 笔记本的远端服务器myserver。我们将在下一节详细介绍如何在 AWS 实例上运行 Jupyter 笔记本。

运行计时

我们可以通过 ExecutionTime 插件来对 Jupyter 笔记本的每个代码单元的运行计时。以下是安装该插件的命令。

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime

小结

  • 我们可以使用 Jupyter 笔记本编辑和运行本书代码。

练习

  • 尝试在本地编辑和运行本书代码。

扫码直达讨论区