飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)

飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习—21日学习打卡(学习心得)

**

第一周

第一周的学习安排从8月10号开始,8月10号开课仪式,并给大家留个一个小小的作业就是在本地安装飞桨PaddlePaddle和一个简单的输出九九乘法表的程序,对于初学者来说是相当友好的。之后的一周里毕然老师带领大家学习了零基础入门深度学习的一章,讲述了深度学习的产生,发展,及应用前景等等,利用一个真实的例子–房价预测模型从建立模型到数据处理到梯度下降一步步带着大家熟悉怎么建模来解决房价预测问题。最后还教了大家怎么使用百度飞桨平台,不得不说这个平台是真的强大啊,赞一个!
下图描述的就是构建神经网络的基本步骤:
飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)_第1张图片
在数据处理过程中,一个极为重要的步骤就是要进行特征归一化,为了在梯度下降的过程中让步长更加合适。
飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)_第2张图片
如图所示,特征归一化之后,不同参数输出的Loss是一个比较规整的曲线,学习率可以设置成统一的值 ;特征输入未归一化时,不同特征对应的参数所需的步长不一致,尺度较大的参数需要大步长,尺寸较小的参数需要小步长,导致无法设置统一的学习率。
毕然老师带大家学习了一个案例吃透深度学习,从房价预测模型转移到了手写数字识别模型。
下面是构建手写数字识别模型的神经网络的过程:
飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)_第3张图片
在本章的教学过程中,课程采用横纵式教学法,对深度学习初学者非常友好。
飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)_第4张图片
本章的学习过程是先用一段简单的代码完整的实现手写数字识别模型,可以进行基本的数字识别,但准确度不是很高,接下里层层递进,逐步完善代码,提高其识别的准确度。
初始训练过程代码如下:

# 通过with语句创建一个dygraph运行的context
# 动态图下的一些操作需要在guard下进行
with fluid.dygraph.guard():
    model = MNIST()
    model.train()
    train_loader = paddle.batch(paddle.dataset.mnist.train(), batch_size=16)
    optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.001, parameter_list=model.parameters())
    EPOCH_NUM = 10
    for epoch_id in range(EPOCH_NUM):
        for batch_id, data in enumerate(train_loader()):
            #准备数据,格式需要转换成符合框架要求
            image_data = np.array([x[0] for x in data]).astype('float32')
            label_data = np.array([x[1] for x in data]).astype('float32').reshape(-1, 1)
            # 将数据转为飞桨动态图格式
            image = fluid.dygraph.to_variable(image_data)
            label = fluid.dygraph.to_variable(label_data)
            
            #前向计算的过程
            predict = model(image)
            
            #计算损失,取一个批次样本损失的平均值
            loss = fluid.layers.square_error_cost(predict, label)
            avg_loss = fluid.layers.mean(loss)
            
            #每训练了1000批次的数据,打印下当前Loss的情况
            if batch_id !=0 and batch_id  % 1000 == 0:
                print("epoch: {}, batch: {}, loss is: {}".format(epoch_id, batch_id, avg_loss.numpy()))
            
            #后向传播,更新参数的过程
            avg_loss.backward()
            optimizer.minimize(avg_loss)
            model.clear_gradients()

    # 保存模型
    fluid.save_dygraph(model.state_dict(), 'mnist')

接下来通过拆分数据集、将单层网络变成多层网络、改变损失函数、设置合适的学习率等多种方法提高其识别的精度。

第二周

第二周老师就开始带大家学习计算机视觉方向相关的知识了,介绍了计算机视觉是什么,讲述了卷积神经网络相关的知识,如:卷积、池化、批归一化、激活函数、丢弃法等等,介绍了图像分类所使用的各种卷积神经网络:LeNet、AlexNet、VGG、GoogleNet、ResNet等等。
图像分类流程:
飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)_第5张图片

接下来讲述的重中之重就是我们的YoloV3算法了,YOLO-V3使用单个网络结构,在产生候选区域的同时即可预测出物体类别和位置,不需要分成两阶段来完成检测任务。另外,YOLO-V3算法产生的预测框数目比Faster R-CNN少很多。Faster R-CNN中每个真实框可能对应多个标签为正的候选区域,而YOLO-V3里面每个真实框只对应一个正的候选区域。这些特性使得YOLO-V3算法具有更快的速度,能到达实时响应的水平。
YOLO-V3算法训练流程图
飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习---21日学习打卡(学习心得)_第6张图片
接下来讲述的就是怎样使用YOLO-V3算法一步步实现图像检测。

第三周

第三周的学习任务已经公布,就是利用YOLO-V3算法来实现图像识别,希望各位小伙伴取得好成绩!

你可能感兴趣的:(深度学习,机器学习,计算机视觉)