神经网络: 正向传播与反向传播

点击量:108

在进行深层神经网络的计算过程中,现在主流框架(比如TensorFlow、Pytorch、MXNet等)提供了自动求导函数,极大地简化了深度学习模型训练算法的实现。但求导,又称反向传播(back-propagation),是Deep Learning中的一个重要概念,所以在这一篇文章中主要用数学和计算图两个方式来描述正向传播和反向传播。我们将使用一个带有L2范数正则化的单隐藏层感知机为例解释正向传播和反向传播。 继续阅读“神经网络: 正向传播与反向传播”

在人工智能时代,程序设计是重要的基础

点击量:96

写在前面:本文是从作者在某大学提交的一份专业报告中的主要内容修改而来,由于作者觉得具有一定的现实意义,故发布出来。

近年来,越来越多的人们,无处不谈人工智能,不论是在大街上,还是媒体上,或者社交软件上。仿佛,我们突然经过了一个人工智能时代开始的时间节点,任何事情,加入了人工智能,就立即变得高端了起来。中国的多所一流大学,自2017年的中国科学院大学和西安电子科技大学先后成立人工智能学院以来,在2018年,包括清华在内,也纷纷成立人工智能学院,掀起了一股“成立人工智能学院”的浪潮。不过,人工智能是建立在计算机科学、应用数学、统计学等多学科交叉的基础之上的,其中,计算机科学是关键,是人工智能的灵魂,是实现我们未来智能生活的工具。而大学中,计算机软件方面的课程,尤其是程序设计和算法,是未来人工智能时代,AI人才培养的基础。

继续阅读“在人工智能时代,程序设计是重要的基础”

数据结构:树和二叉树

点击量:112

在数据结构中,存在着线性结构和非线性结构两种,而树型结构就是其中的一种非线性结构,最常用的有树和二叉树。树是一种以分支关系定义的层次结构,其实例广泛存在与人类的社会生活中的方方面面,比如社会组织机构中的层次关系等。在计算机领域中,树在编译程序、数据库系统中,也有着很重要的应用。

继续阅读“数据结构:树和二叉树”

数据结构:队列

点击量:75

队列是一种先进先出(FIFO, first in first out)的线性表,这一点跟栈是刚好相反的。这种数据结构只允许在表的其中一端插入元素,在另一端删除元素,就像我们日常生活中的排队一样。在队列中,最早进入队列的元素是最早离开的,进入越晚的元素离开的也越晚,不能从中间插队。

继续阅读“数据结构:队列”

数据结构:栈

点击量:92

栈是数据结构中的一种重要的线性结构,也是一种线性表,只是其操作受限。使用的过程,就像往桶里装和取物品一样,最先放进去的物品必须把后来放进去的压在上面的物品拿出去,才能取出。因此,栈是一种限定性的数据结构,其广泛应用与各类软件系统中。本文主要介绍栈的原理,并以一些应用实例来说明栈的功能。

继续阅读“数据结构:栈”

西安电子科技大学焦李成:AI发展,人才培养首当其冲

点击量:93

本文转载自 机器之心 · 大数据文摘

9月8日,以“人工智能:技术创新与社会影响”为主题的百千万人才工程创新大讲堂在京开幕。中国科学院副院长相里斌、人力资源社会保障部副部长汤涛出席活动。中国科学院院士、中科院自动化所智能感知与计算中心主任谭铁牛、中国科学院院士陈霖分别发表主旨报告。

其中,就人工智能人才培养的探索,来自西安电子科技大学的焦李成教授发表看法。

继续阅读“西安电子科技大学焦李成:AI发展,人才培养首当其冲”

数据结构:线性表

点击量:98

数据结构中的线性表是一种线性结构的数据集合,是n个数据元素的有限序列,其存在唯一的一个被称作“第一个”的数据元素,也存在着唯一的一个被称作“最后一个”的数据元素,每个元素至多只有一个前驱和一个后继。其中,第一个元素没有前驱,最后一个元素没有后继。我们编程中最常用的一维数组(Array类)就是一种典型的线性表结构,高级一点的比如列表(List类),也是一种典型的线性表结构。这是一种最常用且最简单的数据结构。

继续阅读“数据结构:线性表”

浅谈深度学习:如何计算模型以及中间变量的显存占用大小

点击量:202

前言

亲,显存炸了,你的显卡快冒烟了!

torch.FatalError: cuda runtime error (2) : out of memory at /opt/conda/conda-bld/pytorch_1524590031827/work/aten/src/THC/generic/THCStorage.cu:58

想必这是所有炼丹师们最不想看到的错误,没有之一。

OUT OF MEMORY,显然是显存装不下你那么多的模型权重还有中间变量,然后程序奔溃了。怎么办,其实办法有很多,及时清空中间变量,优化代码,减少batch,等等等等,都能够减少显存溢出的风险。

但是这篇要说的是上面这一切优化操作的基础,如何去计算我们所使用的显存。学会如何计算出来我们设计的模型以及中间变量所占显存的大小,想必知道了这一点,我们对自己显存也就会得心应手了。

{
本文转载自:Oldpan的个人博客
浅谈深度学习:如何计算模型以及中间变量的显存占用大小(https://oldpan.me/archives/how-to-calculate-gpu-memory)
}

继续阅读“浅谈深度学习:如何计算模型以及中间变量的显存占用大小”