Perfect TensorFlow 是在 TensorFlow C语言函数库基础上的 Swift 对象类封装,用于在服务器端开发Swift在TensorFlow方面的应用,能够存储、读取TensorFlow模型。
目前 Perfect TensorFlow 机器视觉演示程序 展示了本函数方法,具体内容就是加载了一个预先训练好的卷积神经网络模型,并演示:
Graph 构造张量运算图:使用 OperationBuilder 对象构造张量运算图,用于解码、尺寸变换和正规化一个JPEG照片文件。
模型加载:调用Graph.import()方法加载人工智能图像识别模型。
张量运算:使用Session会话对象按图执行张量计算并分析最接近当前图片内容的标签名称。
使用之前,请首先 安装 Perfect TensorFlow 函数库 。
对象类简介
Perfect-TensorFlow 函数库是由一系列张量计算有关的对象类构成;为实现完整的编程和运算,请参考下图用于理解各个对象之间的关系和编程顺序:
TFLib: TensorFlow C 语言接口底层函数库
|
TensorFlow: 运行函数库
|
|------ Shape: 张量的维度信息
| |
| Tensor: 多维数组构成的张量
| |
Graph -- OperationBuilder: 用于构造张量运算表达式的辅助类
| |
| Operation: 运算操作——张量流程图中的一个节点,用于表达张量之间的运算方法
| |
| Output: 从运算操作转化而来的符号句柄
| |
|------ Session: 执行张量运算的驱动程序
|
Runner: 执行具体的张量计算并生成新创建的张量结果
重点需要掌握的六个对象类
名称 | 描述 |
---|---|
TFLib | TensorFlow C 语言接口函数库,建议仅限程序底层内部使用 |
TensorFlow | 封装TensorFlow各对象类的命名空间 |
1-Shape | 张量的维度对象;直接从一个64位整型数组创建而来 |
2-OperationBuilder | 用于构造张量运算表达式的辅助类 |
3-Operation | 运算操作是张量计算图中的一个节点,用于表达张量之间的运算方法 |
4-Output | 从运算操作转化而来的符号句柄 |
5-Graph | 用于代表所有张量计算过程的一个流程图 |
6-Session Runner | 执行具体的张量计算并生成新创建的张量结果 |
Protocol Buffers 谷歌缓冲协议
Perfect TensorFlow 高度依赖于谷歌的缓冲区协议标准,也就是说您可以非常方便的将大多数函数库内的对象实例保存到二进制文件,或者从二进制文件中加载为目标的对象类实例,并且也可以随时按需转化为数据库记录或者JSON字符串。
以张量运算流程图对象Graph为例,您可以从任何一个训练好的模型文件导入到您的Swift程序中,如以下代码所示(代码节选自Perfect TensorFlow 机器视觉演示程序):
import PerfectLib
import PerfectTensorFlow
typealias TF = TensorFlow
// 加载一个第三方张量运算流程图文件:
let fModel = File("/tmp/tensorflow_inception_graph.pb")
try fModel.open(.read)
let modelBytes = try fModel.readSomeBytes(count: fModel.size)
fModel.close()
// 将数据导入为运算流程图对象:
let def =