MXNet (.json, .params)
背景
-
- Wolfram 语言使用的 MXNet 深度学习框架的根本格式.
- MXNet 网络被保存为两个单独的文件: 一个指定网络拓扑的 .json 文件和一个指定笔记本中使用的数值数组的 .params 文件. 当加载 .json 文件时,Wolfram 语言会自动查找合适的 .params 文件.
Import 和 Export
- Import["file.json","MXNet"] 导入存为 .json 文件的 MXNet 网络,如果有的话,会从对应的 .params 文件加载权重.
- 对应于 "file.json" 的参数文件被假设为匹配模式 "file*.params" 并位于同样的文件夹中.
- Import["file.params","MXNet"] 也可用于直接导入网络参数.
- Import["file.json",{"MXNet",elem}] 和 Import["file.params",{"MXNet",elem}] 从对应文件导入指定参数 elem.
- 默认情况下,Import["file.json"] 导入为 "JSON" 格式,而非 "MXNet".
- 请到以下参考页面了解完整的基本信息:
-
Import, Export 从文件导入或导出到文件 CloudImport, CloudExport 从云对象导入或导出到云对象 ImportString, ExportString 从字符串导入或导出到字符串 ImportByteArray, ExportByteArray 从字节数组导入或导出到字节数组
Import 参数
- Import 的通用参数:
-
"Elements" 该文件可用的参数和选项列表 "Summary" 文件摘要 "Rules" 所有可用参数的规则列表 - 当导入 .json 文件时,可用网络 Import 参数:
-
"InputNames" 网络输入的名称 "NetExternalObject" 将网络导入为 NetExternalObject "NodeDataset" MXNet 符号结点的数据集 "NodeGraph" MXNet 符号的结点图形 "NodeGraphPlot" MXNet 符号的结点绘图 - Import["file.json","MXNet"] 默认使用 "Net" 参数.
- 当导入 .params 文件时,可用参数 Import 参数:
-
"ArrayAssociation" 以关联形式导入参数 "ArrayList" 以列表形式导入参数 "ArrayNames" 参数数组的名称 - Import["file.params","MXNet"] 默认使用 "ArrayAssociation" 参数.
范例
打开所有单元关闭所有单元基本范例 (1)
Import 参数 (9)
NetExternalObject (2)
以 NetExternalObject 形式导入 MXNet 网络:
"ArrayPath" 选项可被用于避免导入参数文件,这等同于生成未初始化的网络:
请注意,生成的 NetExternalObject 具有额外的输入,其中必须提供缺失数组的值.
导入选项 (1)
"ArrayPath" (1)
当设置为 None 时,不导入参数,等同于生成未初始化网络:
请注意,生成的 NetExternalObject 具有额外的输入,其中必须提供缺失数组的值.
可能存在的问题 (4)
MXNet 模型定义不保留输入与输出维度的信息. 定义一个带有指定 "Input"维度的 NetChain:
必须提供一组最小的一致维度. 在这种情况下,为单个输入提供形状就足以推断网络的其余部分:
包含转换为作用于批量元素的 MXNet 运算符的层的网络在往返时需要额外的输入维度. 创建一个小型卷积网络:
必须明确提供额外的输入尺寸,即批处理维度。它通常可以有任何值:
任何添加于网络的 NetEncoder 或 NetDecoder 将不会被导出:
所导入的 NetExternalObject 不再含有 NetEncoder: