从Python入门-如何成为一名AI工程师

开课时间:5月开课,每周定时更新
开课时长:30+课时,实践项目和案例

算法

1. 逻辑控制

分支

if-elif-else

循环

for、while

- for 循环次数固定、while 不固定

- 中止语句:continue 、break

- pass

- return、yield

- exit

异常

try-except-finally

2. 基础算法

排序(visualgo数据结构可视化网站)

- 内部排序

  - 交换排序:冒泡、快速排序

  - 插入排序:直接插入、希尔排序

  - 选择排序: 简单选择、堆排序

  - 归并排序

  - 基数排序

- 外部排序

查找

3. 简单算法

分治

递归

贪心

动态规划

回溯

分支限界

[展开全文]

AI 改变生活:

- 图像、语音、文字、游戏、无人驾驶

- NLP

DL发展历史:

神经元-->单层神经网络-->两层神经网络-->多层神经网络

三大因素:

- 海量数据

- 计算能力

- 算法突破

DL结构:

- 基础知识:

    - 线性代数、概率、信息论、数值计算

    - 机器学习

 - 深度学习算法:

    - FFN、正则化、优化

    - CNN、RNN

    - 实战、应用

- 展望:

   - 线性因子模型、自编器

   - 结构概率模型、蒙特卡洛方法

   - 深度生成模型

 

 

 

[展开全文]

神经网络的优点:

网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解内部机制复杂的问题。

网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力。

网络具有一定的推广、概括能力。

神经网络的缺点:

对初始权重非常敏感,极易收敛于局部极小。

容易 Over Fitting 和 Over Training。

如何选择隐藏层数和神经元个数没有一个科学的指导流程,有时候感觉就是靠猜。

[展开全文]

不同的生物有不同的视觉系统,相同的图片经过不同的视觉系统可能的到不同的图像,卷积神经网络本质上是模拟了人的生物视觉系统。卷积圣经网络通常用于网格结构数据,如图像、时序数据(NLP)等

传统常用图像人工特征提取方法:

  • SIFT:Scale Invariant Feature Transform
  • Hog:Histogram of Oriented Gradients

卷积神经网络就是至少一层使用卷积运算的神经网络,其特性包含:

  • 稀疏交互(Sparse interaction)
  • 参数共享(Parameter sharing)
  • 等变表示(Equivariant representation)

基本运算包含:

  • 卷积:提取特征
  • 池化:降维

CNN的特性:

  • 稀疏连接:卷积和的规模远小于图像规模,层数越深,感受野越大

  • 参数共享:在同一层中,卷积核里面的权重不变,与全连接相比,可以节省很大空间
  • 等变表示:多次变化、顺序无关。函数相互独立。f(g(x)) = g(f(x))
 

 

 

 

 

 

 

 

 

[展开全文]

与常规神经网络不同,RNN适用于需要有前后依赖关系的情形,如:机器翻译、股票预测等场景。

类型包括:简单RNN、双向RNN

LSTM、GRU等

 

RNN常见应用:

  • 聊天机器人
  • 机器翻译
  • 语音识别
  • 图像描述
聊天机器人结构示例:
一般是使用Seq2seq方法,也就是两个RNN相互编码与解码,基本算法如下图:

 
对于图像描述可考虑CNN与RNN结合的方式。
 
 
 
 
[展开全文]

《线性代数的本质》

《马同学高等数学》

对于初学者来说,良好的解释比证明重要得多。

  • 线性变换 + 平移变换 = 仿射变换

线性空间的任意点在线性变换前后一定保持等距分布。

  • 特征值就是运动的速度
  • 特征向量就是运动的方向

对一个向量做线性变换,N(A^N)次以后它会趋近于一个方向,这个方向就是矩阵分解的最大特征值对应的方向。

高斯混合模型:

  • 通过简单的概率分布构造复杂的概率分布
  • 万能近似器
[展开全文]
Boylad · 03-20 · 数学基础 1
x = [12, 74, 23, 43, 19]
x.append(54)
print(x)
x.extend([34, 37])
print(x)

print('Hello %$!' %('World'))
x = [12, 74, 23, 43, 19]
print(x)
x.append(54) #在list后追加一个元素
print(x)
x.extend([34, 37]) #在列表后追加列表
print(x)
print(x[1:4]) #字符串切片操作
del(x[3]) #字符串删除操作,小心使用,不要在遍历时改变list结构
print(x) 
y = x[1:4]
print(y) #切片,左闭右开
x.insert(6,6666)
print(x)
x.pop() #尾部删除
print(x)
x.remove(6666) #删除指定元素
print(x)
print(x.count(23)) #统计元素出现个数
print(x.index(23)) #查找元素,返回下标
x.reverse() #列表逆置
print(x)
x.sort()
print(x) #排序(默认升序)
  •   转义:\
  •  横向制表符:\t
  • -纵向制表符: \v
  • -换行(软回车):\n
  • -硬回车:\r\n
  • 字符串运算符:+,*,[],in,not in
a = 'hello Python'
print(a.capitalize()) #将字符串首字母大写
print(a.center(20)) #将字符串a置于20个空格字符的中间
print(a.startswith('H')) #判断字符串是否以某个字母开始
print(a.startswith('h'))
print(a.endswith('n')) #判断字符串是否以某个字母结束
print(a.lower()) #将字符串统一小写
print(a.upper()) #将字符串统一大写
print(a.islower()) #判断字符串是否小写
print(a.isupper()) #判断字符串是否大写
print(a.find('l')) #查找字符串,返回第一个查找到的字符串的首字符的索引,找不到不报错返回-1
print(a.index('P')) #查找字串,返回索引,查不到报错
print(a.replace('l', 'W')) #替换所有

 

[展开全文]
  • 数据结构 + 算法 = 程序
  • 栈: 先进后出
  • 队列: 先进先出
  •  Python数据类型:整型\浮点\字符串\布尔
  • type(x)获取x的数据类型
  • 逻辑运算: and\or\not
  • Python的数据结构:列表\元组\字典\集合 
  • 列表追加元素: list.append()
  • 列表追加列表: list.extend([...])
  • 不要在遍历时改变列表结构
  • 任意位置插入: x.insert()
  • 尾部删除: x.pop
  • 删除指定元素: x.remove()
  • 清空: x.clear()
  • 复制: x.copy()
  • 统计元素出现个数: x.count()
  • x.index()查找元素,找到返回索引,未找到返回-1
  • 逆置: x.reverse()
  • 排序(默认升序): x.sort()
  • list是顺序结构,结合数组+队列+栈
  • tuple不能修改.x = {1,2,3,4,5)
  • d['a']获取,不存在时报错
  • d.get('a',0)不存在时给默认值
  • d['c'] = 5增加
  • d.update({'c':5, 'd':8})更新
  • del d['d']删除
  • d.popitem()从尾部删除键值对
  • d.keys()获取所有key值,返回list
  • d.values()获取所有value值,返回list
  • 字典也可以有序:inport collections \n ordered_dict = collections.OrderedDict(items)
  • a = set([a,s,d,])
  • 并集: a.union(b)
  • 交集: a.intersection(b)
  • c = a - b 差集(a独有)
  • c = b - a 差集(b独有)
  • c = a ^ b 对称差集(a ,b独有)
  • a.symmetric_difference(b)
  • a.symmetric_difference_update(b)
  • 添加元素: a.add(20)
  • 用一个列表更新集合: a.update([10, 11])
  • 删除集合中的元素: a.remove(10),元素不存在时报错
  • 删除集合中的元素:a.discard(10),元素不存在时不报错
  • a.pop(10)移除尾部元素
  • 把集合变成不能变的集合: c = frozenset(a),类似tuple与list的关系
  • 两个集合判断: a == b, a != b
  • a in b 是否 $\blong$ a.issubset(b), a.issuperset(b)
  • a mot in b
  • a.isdisjoint(b), 是否存在交集
[展开全文]
Boylad · 03-13 · 数据结构 4
  • python intro_raw.py——执行脚本,import部分生成pyc字节码文件。
  • 首次执行或者文件更新时才有pyc
  • 下次执行时,如果pyc时间戳跟py无差异就直接调用pyc给解释器执行,否则重新生成。
  • pyc,即PythonCodeObject,提速+代码加密
  • python -m filename.py——执行包,生成pyc。
  • python -c "print('hello')"——执行单行脚本
  • windows下生成的pyc文件在——_pycache_目录里。
  • 调试工具:IDLE的debugger、pdb、pudb。
  • python -m pdb filename.py
[展开全文]
Boylad · 03-11 · Hello World 1

阶段性小结:

机器学习经典算法案例+总结

1 获取数据

1.1导入sklearn数据集

1.2创建数据集

2 数据预处理

2.1数据归一化

2.2正则化(normalize)

2.3one-hot编码

3 数据集拆分

4 定义模型

4.1线性回归

4.2逻辑回归LR

4.3朴素贝叶斯算法NB

4.4决策树DT

4.5支持向量机SVM

4.6k近邻算法KNN

4.7多层感知机(神经网络)

5 模型评估与选择篇

5.1交叉验证

5.2检验曲线

6 保存模型

6.1保存为pickle文件

6.2sklearn自带方法joblib

 

 

 

[展开全文]

学习方法总结:

传统式:从入门到放弃

突击式:蜻蜓点水,覆盖率有限

实战式:理论部分欠佳

敏捷式:突击+实战 从案例入手 以点带面 逢山开路 遇水架桥 get√

[展开全文]

学习效率,学习质量(广度和深度),态度和意识,学习强度.

拒绝烂,拒绝懒.

有监督--目标明确,严格要求.

学到能给别人讲明白的程度,自我反思.勤于实践.

理解为主,脑图,Xmind.

贪多必失,理解--重构--呈现.

明确目标,写出自己的理解,化整为零,总结提炼.

用提问学习.多角度,深度提问.

走出舒适区.目标可实现(经过努力).

大量重复,刻意训练.

图谱结构+注意力+联想记忆+推理反思

多看多动手多思考

好奇心+分享+上进心

归纳演绎

[展开全文]

搜索排序,推荐算法,计算机视觉,自然语言处理.深度学习,机器学习.

多层神经网络

海量数据,计算能力,算法突破.

入门学习

[展开全文]

进入小组观看课程

以下为该课程相关学习小组,您可以选择任意小组加入学习课程并交流