PaddlePaddle做为国内首个深度学习框架,最近发布了更增强大的Fluid1.2版本, 增长了对windows环境的支持,全面支持了Linux、Mac、 windows三大环境。python
PaddlePaddle在功能完备的基础上,也尽可能秉承易学易用的特色,在Windows的安装方面,体现了一键式的特色,大部分状况下,只须要一条简单的命令就能够完成安装。git
用户在使用的过程当中可能会面对安装和编译方面的问题,下面就从这两个方面来分别说明。github
在深度学习框架上, python语言因为自己的易用性和丰富的类库,被众多深度学习框架做为了应用方面的首选,PaddlePaddle也将python语言做为了本身的应用语言,以下介绍在python下怎么安装PaddlePaddle。windows
1. 系统检查网络
PaddlePaddle目前支持windows7,8,10系列的专业和企业版本,且只支持64位的操做系统。框架
PaddlePaddle目前支持的python版本覆盖了2.7,3.5,3.6,3.7版本,基本上包含了目前主流使用的全部python版本,能够经过以下方式检查操做系统和python版本状况 ide
>>>import platform函数
>>>platform.architecture()工具
('64bit','WindowsPE') # 64 bits on windows 64 bitsoop
>>> platform.version()
'10.0.17134' # windows 10
>>> platform.python_version()
'2.7.15' # python 2.7
如笔者本身的系统就显示了如上信息。
2. 拉取安装包的方式
Paddlepaddle能够选择经过pip命令在线或离线安装,下面展现一下如何离线下载安装包。
PaddlePaddle的安装包已经放到了python官方支持的发布渠道上,打开PyPI官方网站,按图中所示输入Paddlepaddle,
用户将会获得当前全部的Paddlepaddle安装包,根据系统和python版本号选择对应版本便可
3. 安装过程
若是是在线安装,用户直接输入 pip install paddlepaddle便可正常安装。
若是是离线安装,用户输入 pip install paddlepaddle_xxx.whl 包也能够完成安装。
一般状况下pip命令伴随python安装包一块儿已经获得安装,若是用户发现本身没有安装pip,能够到PyPA
Documentation,按照提示安装pip便可。
若是出现错误,用户能够检查
请使用管理员权限帐户操做(好比Administrator帐号),并确保使用64位python(查看系统检查章节)
[MO用1]
经过 控制面板 – 帐号 – 管理用户帐号 便可看到如上界面。
安装完成后,用户能够打开python命令,输入以下语句,
>>> import paddle.fluid
>>> print(paddle.__version__)
1.2.0 # 当前paddle版本
若是出现错误,用户能够检查
1. PaddlePaddle依赖python的动态库,若是当前python没有选择安装到环境变量,则可能出现找不到依赖库的状况,用户能够在以下图中加入环境路径,再次启动便可。
不想本身作编译的用户能够直接跳过此节。
1、 前期准备
1. 环境检查
当前paddle的编译只支持window10 专业/企业版本。
2. 工具准备
2.1 请安装Visual Studio 2015 update3版本。
2.2 下载cmake 3.0及以上版本 安装
2.3 下载git安装
2.4 下载python安装,请注意当前支持版本为2.7,3.5,3.6,3.7
2.4.1 下载pip安装
2.4.2 请运行 pip install protobuf numpy wheel
2、编译过程
Paddlepaddle的编译过程须要保证网络可用,由于部分依赖包须要经过网络环境获取。Paddlepaddle编译须要访问GitHub。
1. 用户须要到 GitHub PaddlePaddle 下载源代码,选择 release 1.2 分支,下载zip包或者 经过命令
a. git clone https://github.com/paddlepaddle/paddle
b. cd paddle
c. git checkout release /1.2
2. 在源代码目录下,建一个build子目录并进入
3. 运行cmake .. -G "Visual Studio 14 2015 Win64" -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS} -DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
a. 其中PYTHON_INCLUDE_DIRS指的是python的include目录,好比 c:\Python35\include\
b. 其中PYTHON_LIBRARY指定是pythonxx.lib所在的目录,好比c:\Python35\libs\
c. 其中PYTHON_EXECUTABLE指的是python.exe,好比c:\Python35\ python.exe
d. 其中DWITH_FLUID_ONLY=ON指的是paddlepaddle在windows下只支持fluid版本
e. 其中WITH_GPU=OFF指的是paddlepaddle当前只支持CPU
f. 其中WITH_TESTING=OFF指的是关闭测试
g. 其中CMAKE_BUILD_TYPE=Release指的是只支持Release编译
h. 其中-G "Visual Studio 14 2015 Win64"指的是只支持VS2016的64bit编译
4. 目录下会生成paddle.sln文件,用Visual Studio 2015打开,选择64位Release模式,开始编译。
3、编译完成检查
1. 检查方法
若是编译过程不出错则代表编译成功,用户能够到 build\python\dist 目录下查找对应的生成 whl 文件。
2. 常见编译问题
【问】为何个人paddle.sln文件没有生成?
【答】请按编译过程要求检查是安装了指定的软件和版本
【问】编译过程当中为何出现ssl一类的网络错误?
【答】编译过程须要访问网络,请检查系统代理和网络连通状况。
【问】whl文件为何没有生成?
【答】请按编译过程要求检查python的变量是否正确设置。
1. 导入网络
PaddlePaddle在使用方面为了贴合用户需求,尽可能作到了将复杂的概念简化,深度学习用户将网络结构会理解为多个层结构的叠加,相对应的,PaddlePaddle也对应的有了层的封装。
在定义网络方面,用户能够统一使用fluid.layers里面定义好的结构,来方面的构建一个神经网络结构,好比
# Include libraries.
import paddle
import paddle.fluid as fluid
import numpy
# Configure the neural network.
def net(x, y):
y_predict = fluid.layers.fc(input=x, size=1, act=None)
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
return y_predict, avg_cost
2. 定义训练和预测函数
训练和预测方面,能够统一成为输入,计算和输出三个大的方面,用户可使用fluid.layers.data来定义输入数据,对应在具体在执行层面,executor的run函数中,使用feed来接受输入数据。
下面能够定义预测函数和训练函数,示例
# Define train function.
def train(save_dirname):
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict, avg_cost = net(x, y)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_cost)
train_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500),
batch_size=20)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
def train_loop(main_program):
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
exe.run(fluid.default_startup_program())
PASS_NUM = 1000
for pass_id in range(PASS_NUM):
total_loss_pass = 0
for data in train_reader():
avg_loss_value, = exe.run(
main_program, feed=feeder.feed(data), fetch_list=[avg_cost])
total_loss_pass += avg_loss_value
if avg_loss_value < 5.0:
if save_dirname is not None:
fluid.io.save_inference_model(
save_dirname, ['x'], [y_predict], exe)
return
print("Pass %d, total avg cost = %f" % (pass_id, total_loss_pass))
train_loop(fluid.default_main_program())
# Infer by using provided test data.
def infer(save_dirname=None):
place = fluid.CPUPlace()
exe = fluid.Executor(place)
inference_scope = fluid.core.Scope()
with fluid.scope_guard(inference_scope):
[inference_program, feed_target_names, fetch_targets] = (
fluid.io.load_inference_model(save_dirname, exe))
test_reader = paddle.batch(paddle.dataset.uci_housing.test(), batch_size=20)
test_data = test_reader().next()
test_feat = numpy.array(map(lambda x: x[0], test_data)).astype("float32")
test_label = numpy.array(map(lambda x: x[1], test_data)).astype("float32")
results = exe.run(inference_program,
feed={feed_target_names[0]: numpy.array(test_feat)},
fetch_list=fetch_targets)
print("infer results: ", results[0])
print("ground truth: ", test_label)
2. 执行训练和预测
接着能够简单调用上面定义函数,训练过程会产生输出,用户能够自定义输出目录,在后面的预测过程当中,加载训练输出的模型
# Run train and infer.
if __name__ == "__main__":
save_dirname = "fit_a_line.inference.model"
train(save_dirname)
infer(save_dirname)
程序将输出预测结果,好比在笔者的环境中输出为(仅做参考,用户环境可能有出入)
很是欢迎您为PaddlePaddle贡献文档,咱们的文档在PaddlePaddle/FluidDoc (GitHub PaddlePaddle专区中的FluidDoc) 中统一管理,如您对PaddlePaddle有任何问题,也很是欢迎您在此Repo提交Issue,您的反馈是咱们进步的动力