paddlepaddle有四种数据类型和三种序列格式。四种数据类型分别是:dense_vector,sparse_binary_vector,sparse_float_vector和integer。三种序列格式分别是SequenceType.NO_SEQUENCE,SequenceType.SEQUENCE,SequenceType.SUB_SEQUENCE。详细的介绍可参考paddlepaddle官网说明。
举个简单的例子:
如果你的数据是 x = [1.0, 2.0, 3.0, 4.0, 5.0],那么就应该使用dense_vector,维度为输入数据的维度,这里是5,代码如下:
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(5))
如果你的数据是 x = [[1.0, 2.0, 3.0], [2.0, 3.0, 4.0], [3.0, 4.0, 5.0], [3.0, 5.0, 6.0]],那么这个数据有4个时间步长,每个步长维度为3,代码如下:
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector_sequence(3))
同样的其他类似。
另外,你提到reader,你可能更想知道的是如何构造reader。paddle的reader是一个生成器,返回的是一个函数。
def train_reader(train_x, train_y):
def reader():
for i in xrange(train_y.shape[0]):
yield train_x[i], train_y[i]
return reader
定义好reader后,现在我们生成我们需要的训练数据
data = np.array([[1, 1], [1, 2], [3, 4], [5, 2]])
label = np.array([[-2], [-3], [-7], [-7]])
train_reader = paddle.batch(
paddle.reader.shuffle(
train_reader(data, label), buf_size=100),
batch_size=50)
如此就可以使用train_reader进行模型训练了,test_reader的构造方式一样。