这一次我们讲讲paddlepadle这个百度开源的机器学习框架,一个图像分类任务从训练到测试出结果的全流程。
将涉及到paddlepaddle和visualdl,git如下:https://github.com/PaddlePaddle
相关的代码、数据都在我们 Git 上,希望大家 Follow 一下这个 Git 项目,后面会持续更新不同框架下的任务。
longpeng2008/LongPeng_ML_Course
01 paddlepaddle是什么
正所谓google有tensorflow,facebook有pytorch,amazon有mxnet,作为国内机器学习的先驱,百度也有PaddlePaddle,其中Paddle即Parallel Distributed Deep Learning(并行分布式深度学习),整体使用起来与tensorflow非常类似。
sudo pip install paddlepaddle
安装就是一条命令,话不多说上代码。
02 paddlepaddle训练
训练包括三部分,数据的定义,网络的定义,以及可视化和模型的存储。
2.1 数据定义
定义一个图像分类任务的dataset如下:
from multiprocessing import cpu_count
import paddle.v2 as paddle
class Dataset:
def __init__(self,cropsize,resizesize):
self.cropsize = cropsize
self.resizesize = resizesize
def train_mapper(self,sample):
img, label = sample
img = paddle.image.load_image(img)
img = paddle.image.simple_transform(img, self.resizesize, self.cropsize, True)
#print "train_mapper",img.shape,label
return img.flatten().astype('float32'), label
def test_mapper(self,sample):
img, label = sample
img = paddle.image.load_image(img)
img = paddle.image.simple_transform(img, self.resizesize, self.cropsize, False)
#print "test_mapper",img.shape,label
return img.flatten().astype('float32'), label
def train_reader(self,train_list, buffered_size=1024):
def reader():
with open(train_list, 'r') as f:
lines = [line.strip() for line in f.readlines()]
print "len of train dataset=",len(lines)
for line in lines:
img_path, lab = line.strip().split(' ')
yield img_path, int(lab)
return paddle.reader.xmap_readers(self.train_mapper, reader,
cpu_count(), buffered_size)
def test_reader(self,test_list, buffered_size=1024):
def reader():
with open(test_list, 'r') as f:
lines = [line.strip() for line in f.readlines()]
print "len of val dataset=",len(lines)
for line in lines:
img_path, lab = line.strip().split(' ')
yield img_path, int(lab)
return paddle.reader.xmap_readers(self.tes