怎么使用paddlepaddle的fit_a_line

2018-01-29  本文已影响0人  sweetsky0901

这个是paddlepaddle最简单的一个book。当你有一个case需要做线性回归的时候。可以使用他。
下面讲讲应该怎么做源数据以及修改代码可以直接跑关于你的数据的线性回归

源数据格式

x1 x2 x3 x4 y

代码修改

再看看代码应该怎么改

第一步

在train.py中的开始部分

import paddle.v2.dataset.uci_housing as uci_housing

这个uci_housing里主要讲了怎么读取源数据。
我改的时候,连名字都懒得修改,直接到框架中去把uci_housing.py文件拷贝到book/01.fit_a_line里面来。然后把引用的文件改成

import uci_housing
第二步 修改uci_housing.py
load_data(paddle.v2.dataset.common.download(URL, 'uci_housing', MD5))

变成

load_data(源文件路径, 源文件的列数, 训练数据比例)

特殊说明,在load_data的里面,已经对数据做了归一化处理。

第二步 修改train.py

先传入x特征的维度

    x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(数据源列数-1))

这个时候如果你跑python train.py的时候,可以训练了,但是训练之后还是会报错。因为在跑预测的时候出错了
那么你可以做的要么是删除这段代码

# inference
    test_data_creator = paddle.dataset.uci_housing.test()
    test_data = []
    test_label = []

    for item in test_data_creator():
        test_data.append((item[0], ))
        test_label.append(item[1])
        if len(test_data) == 5:
            break

    # load parameters from tar file.
    # users can remove the comments and change the model name
    # with open('params_pass_20.tar', 'r') as f:
    #     parameters = paddle.parameters.Parameters.from_tar(f)

    probs = paddle.infer(
        output_layer=y_predict, parameters=parameters, input=test_data)

    for i in xrange(len(probs)):
        print "label=" + str(test_label[i][0]) + ", predict=" + str(probs[i][0])

或者仔细看看,找出错误
原来是因为尽管原来写的代码里已经有

import paddle.v2.dataset.uci_housing as uci_housing

但是在调用的时候,却还是有地方直接写

test_data_creator = paddle.dataset.uci_housing.test()

只要改成

test_data_creator = uci_housing.test()

就可以了。
好了。这个时候你可以执行python train.py尝试训练你的数据了。

有时间再讲怎么修改infer.py.

上一篇下一篇

猜你喜欢

热点阅读