【PaddlePaddle】data()分析及使用
官方文档
本文为作者对官方文档的解读+自己在平时开发练习中的一些总结,但总得一切以官方为准
背景&简介
深度学习中第一大问题就是用于计算模型的数据量实在是过于庞大,且类型复杂。如果只用一般的列表、数组、向量这样的数据结构进行计算的话,肯定是不行的。因此在深度学习中,主流的学习框架一般用Tensor(张量)来表示数据,这是一个不定维度的多维数组。
在Paddlepaddle中,Tensor类型被返回为类型名为Variable的变量。一般来说,二者是一个概念
data()方法就是用于创建tensor(variable)的方法。
data()方法在PaddlePaddle下有两处接口,在开发中基本用法一致。
layers
先看下layers下的data()
paddle.fluid.layers.data(name, shape, append_batch_size=True, dtype='float32', lod_level=0, type=VarType.LOD_TENSOR, stop_gradient=True)
(一直不知道为什么Python的许多库不可以像Java一样在IDE中查看UML图)
data是layers类中的一个成员方法,主要作用是构建一个类型为Variable的算子,该算子在计算图中是一个全局变量。
但同时,请注意官方文档中有如下说明:
不推荐使用 paddle.fluid.layers.data ,因其在之后的版本中会被删除。请使用 paddle.fluid.data 。
paddle.fluid.layers.data 在组网期间会设置创建的变量维度(shape)和数据类型(dtype),但不会检查输入数据的维度和数据类型是否符合要求。 paddle.fluid.data 会在运行过程中由Executor/ParallelExecutor检查输入数据的维度。
也就是说,在layers类中的data()方法可能存在一定的安全隐患,因此不推荐从这里引用
参数解释
- name (str)- 被创建的变量的名字 。
- shape (list)- 声明维度信息的list。如果 append_batch_size 为True且内部没有维度值为-1,则应将其视为每个样本的形状。 否则,应将其视为batch数据的形状。
- appen