diff --git a/chapter_programming_interface/index.md b/chapter_programming_interface/index.md
index e899f3d..f0d79d1 100644
--- a/chapter_programming_interface/index.md
+++ b/chapter_programming_interface/index.md
@@ -2,7 +2,7 @@
现代机器学习框架包含大量的组件。这些组件使得用户得以高效开发机器学习算法,处理数据,部署模型,性能调优和使用硬件加速器。在设计这些组件的编程接口时,一个核心的诉求是:如何平衡框架性能和易用性?为了达到最优的性能,开发者需要利用硬件亲和的编程语言如:C和C++来进行开发。这是因为:C和C++的使用使得机器学习框架可以高效调用硬件的底层API,从而最大限度发挥硬件性能。同时,现代操作系统(如Linux和Windows)提供丰富的基于C和C++的编程接口(如文件系统,网络编程,多线程管理等),通过直接调用操作系统API,可以降低框架运行的开销。
-从易用性的角度分析,机器学习框架的使用者往往具有丰富的行业背景(如数据科学家,生物学家,化学家,物理学家等)。他们的常用的编程语言是高层次脚本语言:Python,Matlab,R和Julia。相比于C和C++,这些语言在提供编程的易用性的同时,丧失了C和C++对底层硬件和操作系统进行深度优化的能力。因此,机器学习框架的核心设计目标是:其要具有易用编程接口来支持用户用高层次语言如Python来实现机器学习算法,同时其也要具备以C和C++为核心的低层次编程接口,使得框架开发者可以用C和C++实现大量高性能组件,从而在硬件上高效执行。在本章中,我们将会讲述如何达到这个设计目标。
+从易用性的角度分析,机器学习框架的使用者往往具有丰富的行业背景(如数据科学家,生物学家,化学家,物理学家等)。他们常用的编程语言是高层次脚本语言:Python,Matlab,R和Julia。相比于C和C++,这些语言在提供编程的易用性的同时,丧失了C和C++对底层硬件和操作系统进行深度优化的能力。因此,机器学习框架的核心设计目标是:其要具有易用编程接口来支持用户用高层次语言如Python来实现机器学习算法,同时其也要具备以C和C++为核心的低层次编程接口,使得框架开发者可以用C和C++实现大量高性能组件,从而在硬件上高效执行。在本章中,我们将会讲述如何达到这个设计目标。
本章的学习目标包括:
diff --git a/chapter_programming_interface/ml_workflow.md b/chapter_programming_interface/ml_workflow.md
index ea2ffd0..5e3aa97 100644
--- a/chapter_programming_interface/ml_workflow.md
+++ b/chapter_programming_interface/ml_workflow.md
@@ -19,7 +19,7 @@
- **测试和调试:**
训练过程中,用户需要测试API来对当前模型的精度进行评估。当精度达到目标后,训练结束。这一过程中,用户往往需要调试API来完成对模型的性能和正确性进行验证。
-
+
:width:`800px`
:label:`img_workflow`
diff --git a/chapter_programming_interface/summary.md b/chapter_programming_interface/summary.md
index a386a63..6a86d6f 100644
--- a/chapter_programming_interface/summary.md
+++ b/chapter_programming_interface/summary.md
@@ -19,3 +19,8 @@
- Python和C之间的互操作性一般通过CType等技术实现。
- 机器学习框架一般具有多种C和C++接口允许用户定义和注册C++实现的算子。这些算子使得用户可以开发高性能模型,数据处理函数,优化器等一系列框架拓展。
+
+## 扩展阅读
+
+- MindSpore编程指南:[MindSpore](https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.6/index.html)
+- Python和C/C++混合编程:[Pybind11](https://pybind11.readthedocs.io/en/latest/basics.html#creating-bindings-for-a-simple-function)
\ No newline at end of file
diff --git a/img/ch02/img_workflow.svg b/img/ch02/img_workflow.svg
new file mode 100644
index 0000000..79db4fd
--- /dev/null
+++ b/img/ch02/img_workflow.svg
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/img/ch02/workflow.svg b/img/ch02/workflow.svg
deleted file mode 100644
index 3cce87a..0000000
--- a/img/ch02/workflow.svg
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-