udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook

文章目录

    • Jupyter notebook简介
      • notebook 如何工作
    • 安装 Jupyter notebook
    • 启动 notebook 服务器
      • 增加“Conda”选项卡
      • 关闭 Jupyter
    • notebook 界面
      • 工具栏
      • 命令面板
      • 更多事项
    • 代码单元格
    • 快捷键
    • Magic 关键字
      • 代码计时
      • 在 notebook 中嵌入可视化内容
      • 在 notebook 中进行调试
      • 补充读物
    • 转换 notebook
    • 创建幻灯片
      • 运行幻灯片

Jupyter notebook简介

Jupyter 挺难记的,一般读成猪皮特/朱庇特好了!

notebook 如何工作

Jupyter notebook 源自 Fernando Perez 发起的 IPython 项目。

IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些很好的功能(例如语法高亮显示和代码补全)。最初,notebook 的工作方式是,将来自 Web 应用(你在浏览器中看到的 notebook)的消息发送给 IPython 内核(在后台运行的 IPython 应用程序)。内核执行代码,然后将结果发送回 notebook。当前架构与之相似,具体见下图。

udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第1张图片

核心是 notebook 的服务器。你通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。你在 Web 应用中编写的代码通过该服务器发送给内核,内核运行代码,并将结果发送回该服务器。之后,任何输出都会返回到浏览器中。保存 notebook 时,它将作为 JSON 文件(文件扩展名为 .ipynb)写入到该服务器中。

此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。

例如,早期的两个非 Python 内核分别是 R 语言和 Julia 语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称 JupyterJuliaPythonR 组合而成。

另一个优点是,你可以在任何地方运行 notebook 服务器,并且可通过互联网访问服务器。

安装 Jupyter notebook

目前,安装 Jupyter 的最简单方法是使用 Anaconda。该发行版附带了 Jupyter notebook。你能够在默认环境下使用 notebook。

要在 conda 环境中安装 Jupyter notebook,请使用 conda install jupyter notebook

也可以通过 pip 使用 pip install jupyter notebook 来获得 Jupyter notebook。

启动 notebook 服务器

要启动 notebook 服务器,请在终端或控制台中输入 jupyter notebook。服务器会在你运行此命令的目录中启动。这意味着任何 notebook 文件都会保存在该目录下。你通常希望在 notebook 文件所在的目录中启动服务器,所以如下,我是先用了pushd切换到notebook 文件所在的目录,再启动:
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第2张图片

运行此命令时,服务器主页会在浏览器中打开。默认情况下,notebook 服务器的运行地址是 http://localhost:8888。该地址的含义是:localhost 表示你的计算机,而 8888 是服务器的通信端口。只要 notebook 服务器仍在运行,你随时都能通过在浏览器中输入 http://localhost:8888 返回到 web 页面中。

如果同时启动了另一个 notebook 服务器,由于8888端口已被占用,因此新服务器会在端口 8889 上运行。之后,你可以通过 http://localhost:8889 连接到新服务器。每个额外的 notebook 服务器都会像这样增大端口号。

如果你尝试启动自己的服务器,它应类似以下所示:
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第3张图片
你可能会看到上面列表中的一些文件和文件夹,具体取决于你在哪里启动服务器。

在右侧,你可以点击“New”(新建),创建新的 notebook、文本文件、文件夹或终端。“Notebooks”下的列表显示了你已安装的内核。由于我在 Python 3 环境中运行服务器,因此列出了 Python 3 内核。

增加“Conda”选项卡

在terminal中安装“Conda”选项卡,语句为conda install jupyter notebook nb_conda, 则你还能访问以下所示的“Conda”选项卡。

可以通过该选项卡管理 Jupyter 中的环境。你可以执行多种操作,例如创建新的环境、安装包、更新包、导出环境。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第4张图片

关闭 Jupyter

通过在服务器主页上选中 notebook 旁边的复选框,然后点击“Shutdown”(关闭),你就可以关闭notebook。但是,在这样做之前,请确保你保存了工作!否则,在你上次保存后所做的任何更改都会丢失。下次运行 notebook 时,你还需要重新运行代码。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第5张图片

通过在终端中按两次 Ctrl + C,可以关闭整个服务器。再次提醒,这会立即关闭所有运行中的 notebook,因此,请确保你保存了工作!

notebook 界面

创建新的 notebook 时,你会看到如下所示的界面:

udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第6张图片
你会看到外框为绿色的一个小方框。它称为单元格。单元格是你编写和运行代码的地方。你也可以更改其类型,以呈现 Markdown(标记)。我会在后面更详细地介绍 Markdown(标记)。在工具栏中点击“Code”,将其改为 Markdown(标记),然后改回来。小型的播放按钮用于运行单元格,而向上和向下的箭头用于上下移动单元格。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第7张图片
运行代码单元格时,单元格下方会显示输出。单元格还会被编号(左侧会显示 In [1]:)。这能让你知道运行的代码和运行顺序(如果运行了多个单元格的话)。在 Markdown(标记) 模式下运行单元格会将 Markdown(标记) 呈现为文本。

工具栏

从左侧开始,工具栏上的其他控件是:

  • 软盘符号表示“保存”。请记得保存 notebook!
  • + 按钮用于创建新的单元格
  • 然后是用于剪切复制粘贴单元格的按钮。
  • 运行停止重新启动内核
  • 单元格类型:代码Markdown(标记)原始文本标题
  • 命令面板(见下文)

命令面板

小键盘符号代表命令面板。点击它会弹出一个带有搜索栏的面板,供你搜索不同的命令。这能切实帮助你加快工作速度,因此你将无需使用鼠标翻查各个菜单。你只需打开命令面板,然后键入要执行的操作。例如,如果要合并两个单元格:
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第8张图片

更多事项

顶部显示了标题。点击它可以将 notebook文件 重命名。

右侧是内核类型(在我的例子中是 Python 3),旁边是一个小圆形。在内核运行单元格时,会填充这个小圆形。对于大多数快速运行的操作,并不会填充它。它是一个小型指示器,在代码会运行较久时让你知道其实际是在运行中的。

工具栏包含了保存按钮,但 notebook 也会定期自动保存。标题右侧会注明最近一次的保存。你可以使用保存按钮手动进行保存。

在“File”(文件)菜单中,你可以选择多种格式进行 notebook 的下载。通常,你会希望将它作为 HTML 文件下载,以便与不使用 Jupyter 的其他人共享。也可以将 notebook 作为普通的 Python 文件下载,此时所有代码都会像平常一样运行。要在博客或文档中使用 notebook,Markdown 和 reST 格式很合适。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第9张图片

代码单元格

notebook 中的大部分工作均在代码单元格中完成。这是编写和执行代码的地方。在代码单元格中可以执行多种操作,例如编写代码、给变量赋值、定义函数和类、导入包等。在一个单元格中执行的任何代码在所有其他单元格中均可用。

我创建了一个 notebook,你可以将它当作练习来完成。请在下面下载此 notebook Working With Code Cells,然后放在你运行notebook命令的目录,这时会自动列出,双击即可测试:
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第10张图片

快捷键

notebook 自带一组快捷键,能让你使用键盘与单元格交互,而无需使用鼠标和工具栏。熟悉这些快捷键需要花费一点时间,但如果能熟练掌握,将大大加快你在 notebook 中的工作速度。要详细了解这些快捷键和练习它们的用法,请在下面下载 notebook Keyboard Shortcuts。

Magic 关键字

Magic 关键字是可以在单元格中运行的特殊命令,能让你控制 notebook 本身或执行系统调用(例如更改目录)。例如,在 notebook 中可以使用 %matplotlib 将 matplotlib 设置为以交互方式工作。

Magic 命令的前面带有一个或两个百分号(%%%),分别对应行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。

注意:这些 Magic 关键字是特定于普通 Python 内核的关键字。如果使用其他内核,这些关键字很有可能无效。

代码计时

有时候,你可能要花些精力优化代码,让代码运行得更快。在此优化过程中,必须对代码的运行速度进行计时。可以使用 Magic 命令 timeit 测算函数的运行时间,如下所示:

from math import sqrt

def fibo1(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    return fibo1(n-1) + fibo1(n-2)

def fibo2(n):
    return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))
%timeit fibo1(20)
%timeit fibo2(20)

udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第11张图片

在 notebook 中嵌入可视化内容

如前所述,notebook 允许你将图像与文本和代码一起嵌入。这在你使用 matplotlib 或其他绘图包创建可视化内容时最为有用。在 notebook 中可以使用 %matplotlibmatplotlib 设置为以交互方式工作。默认情况下,图形呈现在各自的窗口中。但是,你可以通过命令传递参数,以选择特定的“后端”(呈现图像的软件)。要直接在 notebook 中呈现图形,应将通过命令 %matplotlib inline 内联后端一起使用。

提示:在分辨率较高的屏幕(例如 Retina 显示屏)上,notebook 中的默认图像可能会显得模糊。可以在 %matplotlib inline 之后使用 %config InlineBackend.figure_format = 'retina' 来呈现分辨率较高的图像。

%matplotlib inline
%config InlineBackend.figure_format='retina'

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2,300)
for w in range(2, 6, 2):
    plt.plot(x, np.sin(np.pi*x)*np.sin(2*w*np.pi*x))

udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第12张图片

在 notebook 中进行调试

对于 Python 内核,可以使用 Magic 命令 %pdb 开启交互式调试器。出错时,你能检查当前命名空间中的变量。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第13张图片
在上图中,可以看到我尝试对字符串求和,这造成了错误。调试器指出了该错误,并提示你检查代码。

要详细了解 pdb,请阅读此文档。要退出调试器,在提示符中输入 q 即可。

补充读物

Magic 命令还有很多,我只是介绍了你将会用得最多的一些命令。要了解更多信息,请查看此列表,它列出了所有可用的 Magic 命令。

转换 notebook

Notebook 只是扩展名为 .ipynb 的大型 JSON 文件

由于 notebook 是 JSON 文件,因此,可以轻松将其转换为其他格式。Jupyter 附带了一个名为 nbconvert 的实用程序,可将 notebook 转换为 HTML、Markdown、幻灯片等格式。

例如,要将 notebook 转换为 HTML 文件,请在终端中使用

jupyter nbconvert --to html notebook.ipynb

我们也可以在notebook界面中点击File,在弹出的菜单中点击Download as,之后选择我们需要转换的格式。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第14张图片
像平常一样,要详细了解 nbconvert,请阅读相关文档。

创建幻灯片

通过 notebook 创建幻灯片是我最爱的功能之一,你可以在浏览器中直接打开它,它介绍了用于处理数据的 Pandas。

在 notebook 中创建幻灯片的过程像平常一样,但需要指定作为幻灯片的单元格和单元格的幻灯片类型。在菜单栏中,点击“View”(视图)>“Cell Toolbar”(单元格工具栏)>“Slideshow”(幻灯片),以便在每个单元格上弹出幻灯片单元格菜单。

udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第15张图片
这会在每个单元格上显示一个下拉菜单,让你选择单元格在幻灯片中的显示方式。
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第16张图片
Slides(幻灯片)是你从左向右移动的完整幻灯片。按向上或向下的箭头时,Sub-slides(子幻灯片)会出现在幻灯片中。Fragments(碎片)最初是隐藏的,在你按下按钮时会出现。选择Skip(跳过)会在幻灯片中忽略该单元格,而选择 Notes(备注)会将为演讲者保留备注。

运行幻灯片

要通过 notebook 文件创建幻灯片,需要使用 nbconvert,要转换它并立即看到它,进入到ipynb文件所保存的文件夹中,并使用

jupyter nbconvert test1.ipynb --to slides --post serve

这时候会自动打开一个网页,同时我们发现,在保存test1.ipynb文件的文件夹之下,多了一个名为test1.slides.html 的网页文件,这就是刚打开的那个网页,网页上显示着前面编辑的第一个单元格cell里面的内容,包括代码和运行的结果。

我们发现,我们编辑的slide会以网页的形式播放,在幻灯片的右下角会出现上下左右四个方向按钮,我们可以通过它控制幻灯片的放映。运行结果如下面所展示的动图所示:
udacity深度学习--2. 深度学习简介--LESSON5 Jupyter notebook_第17张图片

你可能感兴趣的:(AI)