入门深度学习真的这么难吗?

news2024/11/29 10:43:25

今天微信私信回答了一个同学的问题:?我在入门深度学习的过程中,从配环境到 debug 全是坑,解决问题的时间远超跑模型的时间,为什么入门深度学习这么难?

这个问题真的问到我的心坎里了,我只能说,入门深度学习这件事,我是真的有经验。

1、我是如何入门深度学习的

我从机械硕士毕业就转码开始搞软件开发,然后转行做深度学习算法,已有不少年了。

这个过程,经历了不少。

无论是自学 C++、python 这种基础编程技能,还是从零学习 AI 算法,还是钻研计算机体系结构,每一部分都有很多的感悟。

这里重点说一下学习 AI 算法的经历和感受。

记得第一次参加与深度学习算法的面试时,是一个小公司,面试官问我什么是权值?

那会儿深度学习还远不像现在这么火,面试问的问题很基础,什么是权值这种简单的问题,我估计是真的很难再碰到了。

我当时的回答是:你说的是不是达不溜(w)。

面试官笑着说,什么达不溜?

我说我看很多文章中的权值,都用 w 表示。

那次的面试是失败了,后来又面过很多公司。最后幸运的是进入了一家 AI 芯片算法公司,在那里有大量的时间边工作边学习,算是入门了深度学习。

从我的经历来看,现在很多打算入门深度学习的同学的水平,包括上面问问题的同学的水平,是绝对可以很好的回答上来"什么是权值的"。

虽然我现在在 AI 行业混了很久了,也熟悉了不少算法和神经网络,但我相信你肯定可以比我学的更好。

看下我当时是怎么入的门?

2、基础技能欠缺,就买课看课

我当时 C++ 基础薄弱,就买了一个 399 的 C++ 课程,是一个百度资深工程师的录播课。

我每天上下班路上坚持看。

从家里到公司坐地铁刚好半小时,每天上下班看一个小时,坚持了 3 个月,将课程视频来回看了 6 遍,然后到公司一有闲暇时间就练习课程中的技术,3个月下来,C++ 就真的是很熟练了。

以至于后来的某次面试,我甚至可以和面试官探讨“引用计数”的底层实现。

学会了 C++ 再去学 python 就真的很容易。

2、深度学习算法一定要练手,一定要亲自写算法

吴恩达的课程很经典,很多入门深度学习的同学都会看,我当时也看了,吴恩达也算是我半个深度学习理论的领路人吧。

在学习算法原理的基础上,我会把很多算法都自己实现一遍,这得益于C++和 python 技能的熟练。

自己手写这些算法是为了加深对这些算法的理解,比如我手写过很多版本的卷积算法等等。

为什么我要手写,因为调用三方库和自己手写是两种完全不一样的学习体验。

调用三方库比如 numpy 或者 torch,很多人都会调用,但是对初学者来说只是会使用,我认为算法本身只有自己可以手写出来才是真正学到手。

我还手写过不少的神经网络,比如Github上放的这个 https://github.com/dongtuoc/resnet50_zero,是我曾经写过的一个,最近打算重构。

竟然还被 20 个小伙伴星标了,有点意外。

在完成以上两点(编程基础和算法基础)之后,我的深度学习入门基本就完成了。

剩下的就是在工作中不断地打磨自己对算法的理解,不断的精进自己的水平。

业余的时间写一些文章,谈一下自己对于一些算法和行业的认识。

当你看到这篇文章的时候,我已经在公众号上发了100篇原创文章,很多都是在给想入门深度学习算法的同学做算法科普。

因为我经历过当时初学算法的难度,也就知道有些算法该怎么理解起来会更加简单。

这里放一个我认为到目前为止写的最棒的一篇算法科普文章:5分钟搞懂矩阵乘法的本质。

最后,再回答一下上面那个同学的问题。

深度学习入门确实很难,但秘诀也很简单,那就是:学习加实践,再加一条坚持就可以了。

初学确实很多东西看起来都不懂,但是一点点啃下来之后,就会发现难点正在就一点点消失,这其中最怕的就是半途而废。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1299960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python轴承故障诊断 (二)连续小波变换CWT

目录 前言 1 连续小波变换CWT原理介绍 1.1 CWT概述 1.2 CWT的原理和本质 2 基于Python的CWT实现与参数对比 2.1 代码示例 2.2 参数介绍和选择策略 2.2.1 尺度长度: 2.2.2 小波函数(wavelet): 2.3 凯斯西储大学轴承数据的…

御剑工具学习

御剑 1.1 工具的下载路径1.2 工具的安装流程1.3 工具的详细使用 1.1 工具的下载路径 百度网盘 链接:https://pan.baidu.com/s/1Bn7GtWb7AStcjzVahFOjSQ 提取码:zkaq 1.2 工具的安装流程 御剑不用安装,直接下载下来解压,双击“御…

【Java实现百钱买百鸡的两种写法】

Java实现百钱买百鸡的两种写法 Java双重嵌套for循环实现百钱买百鸡的写法(一)Java三重嵌套for循环实现百钱买百鸡的写法(二) Java双重嵌套for循环实现百钱买百鸡的写法(一) //定义一个记录循环次数变量int …

C语言指针基础题(一)

目录 例题一题目解析答案 例题二题目解析答案 例题三题目解析答案 例题四题目解析答案 例题五题目解析答案 例题六题目解析答案 例题七题目解析答案 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 &#x…

202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制

202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制 2023/12/9 22:07 应该也可以适用于RK3399的Android12系统 --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/default…

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发,可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

10款装系统启动工具

1、GhostWin10 PE: GhostWin10 PE主要适用于安装Windows 10操作系统。它是一个基于Ghost Win10制作的PE系统,提供了安装Windows 10的功能 2、老毛桃PE: 老毛桃PE适用于各种Windows操作系统的安装和修复。它是一个基于Windows PE环境的工具…

epoll实现同时承载100w客户端的数量

概念 先表明,这里是让epoll能够同时承受100w的连接,不针对业务处理。 对于百万并发的业务处理,其前提条件就是要同时承受住100w的连接。 程序源码 epoll的源码直接给出来 /*支持百万并发的 reactor1.其主要限制在于Linux系统的限制,需要修改一…

小白教学!几个步骤入门AI动画视频制作

公众号:算法一只狗 文章目录 文本视频生成软件:PIKA小黑子表情包熊猫头表情包 动画视频制作故事和分镜文本制作动画生成与拼接 总结 要介绍动画生成之前,先让大家来看看我生成的动画视频: AI动画生成故事 上面的视频我只用了不到2…

Android12 WIFI 无法提供互联网连接

平台 RK3588 Android 12 问题描述 ConnectivityService是Android系统中负责处理网络连接的服务之一。它负责管理设备的网络连接状态,包括Wi-Fi、移动数据、蓝牙等。 在Android系统中,ConnectivityService提供了一些关键功能,包括但不限于…

Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

【Java期末复习资料】(2)常见例题 //持续更新

本文章主要是常见例题,解析不会太详细,有问题、不会的可以给我发消息哦,后续会出模拟卷 常见例题: 1.下列跟Java技术平台有关的是(ABD) A.JVM B.JDK C.JPN D.JRE 2.面向对象的特征包括(ACD&…

uniapp实战 —— 可滚动区域 scroll-view (自适配高度,下拉刷新)

自适配高度 自定义的顶部导航栏,可参考博文 https://blog.csdn.net/weixin_41192489/article/details/134852124 如图可见,在页面滚动过程中,顶部导航栏和底栏未动,仅中间的内容区域可滚动。 整个页面的高度设置为 100%&#xf…

【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…

漏洞复现-用友NC任意文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

架构LNMP

目录 1.安装Nginx服务 2.安装 MySQL 服务 3.安装配置 PHP 解析环境 4.部署 Discuz!社区论坛 Web 应用 1.安装Nginx服务 实验准备 systemctl stop firewalld systemctl disable firewalld setenforce 0 安装依赖包 yum -y install pcre-devel zlib-devel gcc…

Linux_CentOS_7.9 VNC安装卸载以及相关配置开机自启动服务简易记录

VNC安装卸载以及相关配置开机自启动服务: 查看环境:(yum镜像源配置可以参考我之前文章里面有详细参考http://t.csdnimg.cn/mzGoI) [rootorcl238 ~]# rpm -qa | grep vnc ##查看系统现有VNC软件版本 gtk-vnc2-0.7.0-3.el7.x86…

DDD领域驱动设计系列-原理篇-战略设计

概述 DDD领域驱动设计是架构方法论,适用于业务逻辑较复杂系统。 DDD核心目的能输出领域如何划分,以及架构分层如何构建。 本文章系列会分2部分讲述DDD:1、DDD原理;2、DDD实践。DDD原理分为战略及战术设计2篇来讲述;…

TCP/IP的体系结构

目录 一、TCP/IP的体系结构 二、TCP/IP四层协议的表示方法举例 三、现在因特网使用的TCP/IP体系结构 四、互联网应用层的客户——服务器方式 一、TCP/IP的体系结构 二、TCP/IP四层协议的表示方法举例 三、现在因特网使用的TCP/IP体系结构 四、互联网应用层的客户——服务器…

CSK6环境搭建

前期准备 开发板测试 (1)根据这个视频教程来进行测试:示例工程快速上手 Ubuntu环境搭建 (1)聆思官方推荐使用Linux开发,因此我于是采用VMware搭建Ubuntu的方式进行开发。不清楚Ubuntu搭建的请看&#xff1…