Jupyter Notebook的使用
1 在本地编辑和运行代码
假设项目路径为xx/yy/dive-into-dl
。使用Shell将目录更改为此路径(cd xx/yy/dive-into-dl
)并运行命令jupyter notebook
,如图1.1所示。若浏览器未自动打开,请打开网址:[http://localhost:8888](http://localhost:8888)
。此时你将看到Jupyter的界面以及包含项目代码的所有文件夹,如图1.2所示。
你可以通过单机网页上显示的文件夹来访问notebook文件。它们通常有后缀“.ipynb”。单击后显示的内容如图1.3所示。
如下图1.4所示,双击编辑单元格以进入编辑模式。单击菜单栏中的Cell
→ Run Cells
以运行编辑后的单元格。
如下图1.5所示,也可以直接单机运行
按钮直接运行选中单元格。
你还可以使用快捷键(默认情况下为Ctrl+Enter)运行单元格。
当一个notebook包含更多单元格时,我们可以单击菜单栏中的Kernel
→Restart & Run All
来运行整个notebook中的所有单元格。通过单击菜单栏中的Help
→Edit Keyboard Shortcuts
,可以根据你的首选项编辑快捷键。
2 高级选项
除了本地编辑,还有两件事非常重要:以markdown格式编辑notebook和远程运行Jupyter。当我们想要在更快的服务器上运行代码时,后者很重要。前者很重要,因为Jupyter原生的ipynb格式存储了大量辅助数据,这些数据实际上并不特定于notebook中的内容,主要与代码的运行方式和运行位置有关。这让git感到困惑,并且使得合并贡献非常困难。幸运的是,还有另一种选择——在markdown中进行本地编辑。
2.1 Jupyter中的Markdown文件
首先,安装notedown插件,运行Jupyter Notebook并加载插件:
pip install d2l-notedown # 你可能需要卸载原始notedown
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'
要在运行Jupyter Notebook时默认打开notedown插件,请执行以下操作:首先,生成一个Jupyter Notebook配置文件(如果已经生成了,可以跳过此步骤)。
jupyter notebook --generate-config
然后,在Jupyter Notebook配置文件的末尾添加以下行(通常位于~/.jupyter/jupyter_notebook_config.py
):
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
在这之后,你只需要运行jupyter notebook命令就可以默认打开notedown插件。
2.2 在远程服务器上运行Jupyter Notebook
有时,你可能希望在远程服务器上运行Jupyter Notebook,并通过本地计算机上的浏览器访问它。如果本地计算机上安装了Linux或MacOS(Windows也可以通过PuTTY等第三方软件支持此功能),则可以使用端口转发:
ssh myserver -L 8888:localhost:8888
2.3 执行时间
我们可以使用ExecuteTime插件来计算Jupyter Notebook中每个代码单元的执行时间。使用以下命令安装插件:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime