paddlepaddle如何读取本地数据?

2020-09-11 科技 110阅读

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的构造方式一样。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com