diff --git a/chapter_programming_interface/ml_workflow.md b/chapter_programming_interface/ml_workflow.md index f4b5e96..3d71c77 100644 --- a/chapter_programming_interface/ml_workflow.md +++ b/chapter_programming_interface/ml_workflow.md @@ -5,7 +5,7 @@ - **数据处理:** 首先,用户需要数据处理API来支持将数据集从磁盘读入。进一步,用户需要对读取数据进行数据预处理,从而可以将数据输入后续的机器学习模型中。 -- **模型定义:** +- **模型结构:** 完成数据的读取后,用户需要模型定义API来定义机器学习模型。这些模型带有模型参数,可以对给定的数据进行推理。 - **损失函数和优化算法:** @@ -16,7 +16,7 @@ - **训练过程:** 给定一个数据集,模型,损失函数和优化器,用户需要训练API来定一个循环(Loop)从而将数据集中的数据按照小批量(mini-batch)的方式读取出来,反复计算梯度来更新模型。这个反复的过程称为训练。 -- **测试和调优:** +- **测试和调试:** 训练过程中,用户需要测试API来对当前模型的精度进行评估。当精度达到目标后,训练结束。这一过程中,用户往往需要调试API来完成对模型的性能和正确性进行验证。 ![机器学习系统工作流](../img/ch02/workflow.svg) diff --git a/chapter_programming_interface/neural_network_layer.md b/chapter_programming_interface/neural_network_layer.md index b16ad89..14fa32d 100644 --- a/chapter_programming_interface/neural_network_layer.md +++ b/chapter_programming_interface/neural_network_layer.md @@ -47,9 +47,9 @@ 有了卷积、池化、全连接组件就可以构建一个非常简单的卷积神经网络了, :numref:`nn_network`展示了一个卷积神经网络的模型结构。 给定输入$3 \times 64 \times 64$的彩色图片,使用16个$3 \times 3$大小的卷积核做卷积,得到大小为$16 \times 64 \times 64$; 再进行池化操作降维,得到大小为$16 \times 32 \times 32$的特征图; -对特征图再卷积得到大小为$32 \times 32 \times 32$特征图,再进行池化操作得到$3 \times 16 \times 16$大小的特征图; -我们需要对特征图做全连接,此时需要把特征图平铺成一维向量这部操作称为Flatten,压平后输入特征大小为$3\times 16 \times 16 = 768$; -之后做一次全连接对大小为768特征变换到大小为128的特征,再依次做两次全连接分别得到64,10。 +对特征图再卷积得到大小为$32 \times 32 \times 32$特征图,再进行池化操作得到$32 \times 16 \times 16$大小的特征图; +我们需要对特征图做全连接,此时需要把特征图平铺成一维向量这步操作称为Flatten,压平后输入特征大小为$32\times 16 \times 16 = 8192$; +之后做一次全连接对大小为8192特征变换到大小为128的特征,再依次做两次全连接分别得到64,10。 这里最后的输出结果是依据自己的实际问题而定,假设我们的输入是包含$0 \sim 9$的数字图片,做分类那输出对应是10个概率值,分别对应$0 \sim 9$的概率大小。 ![卷积神经网络模型](../img/ch02/nn_network.svg) @@ -69,7 +69,7 @@ input:(3,64,64)大小的图片 # 创建卷积模型的训练变量,使用随机数初始化变量值 conv1_filters = variable(random(size=(3, 3, 3, 16))) conv2_filters = variable(random(size=(3, 3, 16, 32))) -fc1_weights = variable(random(size=(768, 128))) +fc1_weights = variable(random(size=(8192, 128))) fc2_weights = variable(random(size=(128, 64))) fc3_weights = variable(random(size=(64, 10))) # 将所有需要训练的参数收集起来