百度飞桨深度学习 21天零基础入门——学习心得

一、前言

       偶然在飞桨公众号"飞桨PaddlePaddle"上看见一个21天零基础深度学习带学的消息,抱着试一试的心态报了名,其实并没报太大期望(OS:之前也报过其他的 "××吧"、"***线"等课程,还是付费的,虽然钱不多,但是讲的真是一般,也没学到啥),AIStudio也许是yiyang。

       进群了解到居然要每天打卡做作业,一度想放弃。刚好赶上最近找房子搬家,不过我也没想到到现在还在坚持每天打卡学习(不想成为优秀工程师的程序猿不是个好咸鱼@_@)。

二、学习心得

       之前并没接触过飞桨,从预习作业开始,安装paddlepaddle-gpu,也算是“零基础”

       之前也看过一些深度学习资料和教程,这个算是有点基础,但当“毕然”老师带着计算梯度反向传播时,才有了深刻的理解。配上作业的图例,对链式法则 乘加运算 梯度求导 学习率 有了更清晰的认识。

       通过numpy实现和飞桨实现的房价预测对比,初步认识到飞桨的便捷。结合minist cifar10等随堂练习和打卡作业,对分类任务有了更深一层的领悟。通过不同optimizer act loss 的尝试,发现我不是一个合格的“调参师”,要学的还很多!

##

由此可见,均方误差表现的“圆滑”的坡度有两个好处:

  • 曲线的最低点是可导的。
  • 越接近最低点,曲线的坡度逐渐放缓,有助于通过当前的梯度来判断接近最低点的程度(是否逐渐减少步长,以免错过最低点)。

而这两个特性绝对值误差是不具备的,这也是损失函数的设计不仅仅要考虑“合理性”,还要追求“易解性”的原因。

##

        好吧!作业做错了!谨记!

        课程深入,计算机视觉基础知识没什么问题,但是对几种分类网络,虽然都跑了一遍,其实理解并不深,很多网络层设计并不明白其奥妙,也看了一些其他讲解,只能说是人云亦云!

         对于目标检测,对YOLO SSD fasterRCNN也看过一些讲解,本次课程条理清晰,跟着视频,听老师的讲解,收获良多。也尝试做调试,反复看了多次YOLO视频,后续答疑课的fasterRCNN串讲没听明白,好吧!道阻且长!

NUM_ANCHORS = 3
NUM_CLASSES = 7
num_filters=NUM_ANCHORS * (NUM_CLASSES + 5)
with fluid.dygraph.guard():
    backbone = DarkNet53_conv_body(is_test=False)
    detection = YoloDetectionBlock(ch_in=1024, ch_out=512, is_test=False)
    conv2d_pred = Conv2D(num_channels=1024, num_filters=num_filters,  filter_size=1)
    
    x = to_variable(img)
    C0, C1, C2 = backbone(x)
    route, tip = detection(C0)
    P0 = conv2d_pred(tip)
    # anchors包含了预先设定好的锚框尺寸
    anchors = [116, 90, 156, 198, 373, 326]
    # downsample是特征图P0的步幅
    pred_boxes = get_yolo_box_xxyy(P0.numpy(), anchors, num_classes=7, downsample=32)
    iou_above_thresh_indices = get_iou_above_thresh_inds(pred_boxes, gt_boxes, iou_threshold=0.7)
    label_objectness = label_objectness_ignore(label_objectness, iou_above_thresh_indices)
    
    label_objectness = to_variable(label_objectness)
    label_location = to_variable(label_location)
    label_classification = to_variable(label_classification)
    scales = to_variable(scale_location)
    label_objectness.stop_gradient=True
    label_location.stop_gradient=True
    label_classification.stop_gradient=True
    scales.stop_gradient=True
    
    total_loss = get_loss(P0, label_objectness, label_location, label_classification, scales,
                              num_anchors=NUM_ANCHORS, num_classes=NUM_CLASSES)
    total_loss_data = total_loss.numpy()
    print(total_loss_data)

     以前重来没考虑过 "scales" 对小目标以及得分较高目标的作用,这次课学到了,虽然还不知道怎么用、@……@

三、小结

    很少写博客,好吧!很少写文档总结,现在发现写的时候学习的过程在脑海里回档,以后尽量多总结!

    课程过半,每天坚持打卡学习,最初几天会觉得不习惯甚至想放弃,现在会觉得期待,每次学习,有期待有收获!

    感谢飞桨团队各位老师!昨晚看了”芮芮“的直播,立个flag: 努力!奋斗!参加下一期的论文复现营!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值