From 9e0b3f748b6b4e8cc9a0287202d3b34ce3b4ae27 Mon Sep 17 00:00:00 2001 From: wangguibao Date: Wed, 17 Jul 2019 10:37:53 +0800 Subject: [PATCH] Replace framework image in README.md --- README.md | 2 +- doc/architecture.png | Bin 0 -> 22438 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100755 doc/architecture.png diff --git a/README.md b/README.md index 5e3093c0..9addb543 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ PaddlePaddle是百度开源的机器学习框架,广泛支持各种深度学 # 框架简介 -![图片](doc/framework.png) +![图片](doc/architecture.png) - 基础框架:屏蔽一个RPC服务所需的所有元素,让用户只关注自己的业务算子的开发; - 业务框架:基于Protobuf定制请求接口,基于有限DAG定制业务逻辑,并行化调度; diff --git a/doc/architecture.png b/doc/architecture.png new file mode 100755 index 0000000000000000000000000000000000000000..df20d0a522f354a0806cc3c71e8f945ec04293a7 GIT binary patch literal 22438 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 Um1T>Gb4;&jsOTz}Dxw1Z1$B*I5dZ)H literal 0 HcmV?d00001 -- GitLab