人工智能编程心得

  • 了解python语言对人工智能程序的影响
  • GPU加速
  • 保存好程序的中间变量
  • 多线程处理数据


了解python语言对人工智能程序的影响


基于python的人工智能控制论文 python与人工智能论文_人工智能

首先,我们要了解业界最常用的一门语言,那就是python,python是一门解释性语言,在人工智能编程的过程中, 我们须知它的底层是依赖C代码实现的,所以我们需要知道,在每次程序运行的过程中,我们需要将python转换为C语言去运行,这需要我们考虑到程序的时间复杂度。尽可能在程序中少写显式的循环而使用内置函数去替代,可以提升程序的运算效率。
2021-07-27更新
至于为什么要选择python语言?听过的其中一个方面是因为python语言的编写比较友好,可以让AI编程者们更关注于算法而不是编程语言的条条框框。

GPU加速

为什么要使用GPU加速?要知道,GPU设计的初衷可是为了进行图形任务。原来,人们发现,用于图形任务的GPU单元上,有非常多的计算单元,而神经网络通常需要进行大规模的计算,于是人们就将GPU算力用于了神经网络训练,大量计算单元的加持下,相较CPU而言,速度大大提升。然而GPU算力需要耗费许多的电力,曾经在自媒体上听某旦的一位教授说,他们有时候实验用电仅一天就耗费一万度,换做人一般是不可能产生这么大规模的用电的。近期爆出矿场的高度用电也说明了GPU算力会带来巨大的能源消耗。

保存好程序的中间变量

人工智能编程一般都存在数据清洗,特征工程等阶段,而这些工作在小规模数据集上每次训练都进行也不会有太大的影响(其实会有)。所以可以把字典啥的,特征向量啥的都存下来(保存变量可以看我的这篇博客),在训练的时候直接加载就行,这样可以减少程序的处理时间,在需要处理大规模的数据时尤为明显。
2021-8-21更新

多线程处理数据

先明白一个前提,由于python的GIL锁(同一时刻只能有一个线程访问CPU ),多线程对于计算密集型程序没有用,因为它一直连续计算,但对I/O密集型程序(延迟IO,网络等)有用,因为切换线程可以避免这类程序的持续等待。在处理大量数据时,我们可以创建多线程进行并发处理。需要关注的是,多线程io要处理好锁的运用,线程也不是越多越好,在工程级的多线程任务中, 需要注意线程池的维护。如果想要简单使用多线程来处理自己的数据,可以参考我的这篇博客。
2021-8-23更新