人工智能入门笔记(二)

0 写在之前

经过了10天的深度学习入门计划,成果比较显著,目前已经基本了解了整个神经网络发挥作用的流程。日后仍然要继续积累经验,以下几个方面,都有很多要学习和提高的地方:

  1. 网络构建技巧
  2. 调参技巧
  3. 数据预处理
  4. 代码可读性、规范性

参加了飞浆的学习赛,赛中学习,过程中诞生了很多疑问。

1 list array tensor DataFrame

在数据处理过程中,涉及这四个数据类型之间的各种操作与转换,让我经常摸不着头脑,郁闷不已。为什么要设置这四种数据类型呢?

python几种基本的数据类型,有

  • 元组(tuple)
  • 列表(list)
  • 字典(dict)
    其中元组不能修改其中的元素,但是列表可以。实际上元组很少被使用,一般都用list。

万物都可以被放入list中,但是list永远都是一维的,也只能进行一维索引。虽然可以通过嵌套操作,一层层取出内部元素,总归比较麻烦。

于是有array。array是numpy中的类,对标matlab,重点在于实现矩阵运算。而矩阵运算,只在1维以及2维。但是其实ndarray也可以实现多维,本质是是多维的数组。

tensor是张量,主要面向的就是高纬度数组的批量计算,他跟array最本质的区别就是它是存储在显存中的,利用gpu加速计算。而array就跟一般的变量一样,存储在内存当中。

因此也能推断出,对于一个具有优异GPU性能的服务器来说,应该多去用tensor而少用array,以便去提高显存的利用率,节省并不富裕的内存占用,同时加速计算。

而DataFrame是Pandas中的数据类型。Pandas常用来进行数据预处理。它就是一个二维的表格。

因此,与其掌握他们之间的转换,不如把tensor的方法去把握好,尽量用tensor去搞定。

2 显卡是如何加速计算的呢?

“炼丹”并不能光有一个好的显卡。实践中可以发现,在数据预处理阶段,cpu占用很高,而GPU却在“摸鱼”。只有在训练以及推理的时候,GPU才会发挥主要作用。

一般来说,GPU只能读取位于显存中的数据,不能跟内存之间联系。因此,很多时候,需要花费时间进行内存到显存的数据转换(对应就是数据类型转换到tensor的过程)。

显卡相比于CPU,核心数量要多得多。有人将GPU核心比做“教授”,神通广大。将GPU Core比做学生。虽然教授强大,但是进行大量的简单计算时,往往比不过一堆学生同时进行。

3 关于batch_size的选取

不能太大,也不能太小。

之前有一个误解,认为越大越快。实际上,对于随机梯度下降法,除了梯度参数之外,还有一个参数是步长。由于可能不是最优,往往需要多次执行才能找到最优解,而增大batch_size,则会减小执行次数,往往会损失模型的精度。

batch_size取到最大的情况,成为full batch learning。反之,也存在batch_size取到最小的情况,称为online learning,即在线学习。

一般来说,batch_size取到稍大一点比较好,一般喜欢取8的倍数。超参数的选取,很多时候没有那么多确定性,可以随意一点。

4 关于Notebook的使用

使用服务器开发代码,很多时候要用到notebook。要去习惯使用notebook进行代码的开发,好的代码应该能够方便Notebook的使用。多去用Notebook的快捷键。建立程序框架,按照固定的框架去编程。不断去优化自己的框架。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值