NotebookExport

将 Swift for TensorFlow (S4TF) 笔记本中的单元格导出为 Swift 包。

这是一个旨在作为 swift-jupyter 环境中安装的扩展程序运行的库,并且基于 fastai 当前用于 Python 和 S4TF Jupyter 笔记本的导出机制。

安装

使用 swift-jupyter%install 指令来安装此包,以及您的笔记本需要的任何其他包。

%install-location $cwd/swift-install
%install '.package(url: "https://github.com/mxcl/Path.swift", from: "0.16.1")' Path
%install '.package(url: "https://github.com/JustHTTP/Just", from: "0.7.1")' Just
%install '.package(url: "https://github.com/latenitesoft/NotebookExport", from: "0.6.0")' NotebookExport

有关更多详细信息,请参阅 swift-jupyter 安装和使用指南。

使用

标记可导出的单元格

在每个可导出单元格的第一行使用 //export 注释来标记您希望导出的单元格。 例如

//export

public func notebookFunction()
{
	/* Code */
}

标记可执行单元格

您可以将特定单元格中的代码提取为导出包中的可执行产品。 例如,以下注释将生成一个名为 ls 的产品,您可以通过在导出包目录中发出命令 swift run ls 来运行它。

//executable: ls

print("/bin/ls".shell("-lh"))

生成的可执行文件会自动导入包名称(其中包含来自 export 单元格的所有代码),以及在 %install 指令中安装的库。 其他未安装的依赖项(TensorFlow、Python)如果需要,必须手动导入。

可以通过这种方式创建多个可执行文件。 每个可执行单元格应具有不同的名称以创建不同的目标。 尚不支持将多个可执行单元格合并到单个可执行目标中。

导出单元格(默认名称)

要导出所有标记的单元格,请在您的 S4TF 笔记本中导入 NotebookExport 包,并在笔记本单元格中像这样使用它

import Path
import NotebookExport
let exporter = NotebookExport(Path.cwd/"swift-notebook.ipynb")
print(exporter.export())

这会将笔记本中标记的单元格以您指定的名称导出到一个名为 FastaiNotebook_<notebook_name> 的新 Swift 包中(减去 .ipynb 扩展名)。 然后,您可以在您正在处理的其他笔记本中 %install 该包。

指定自定义包前缀

print(exporter.export(usingPrefix: "MyProject"))

导出到名为 MyProject_<notebook_name> 的包。

版本

使用 NotebookExport.version 来验证已安装的版本。