直观地感受

池化

ReLU

Sigmoid

明确概念

人工智能、机器学习、深度学习

人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

机器学习是使计算机具有智能的一类算法,如神经网络算法。

深度学习是机器学习中一种基于对数据进行表征学习的算法,可认为是改良版的神经网络算法。

一图流

mxnet、pytorch、tensorflow

待补充

AnaConda、Conda、MiniConda

关于conda

虽说,学习一样知识不应过于关注其以外的内容,就像学习编程语言不应过于关注IDE,能跑就行,学习深度学习,也不应过于关注环境,同样能跑就行。

但我有强迫症,研究conda到底是个什么东西,要从这个Warning说起。

google查询发现是pytorch和CUDA的版本兼容问题,需要cudatoolkit=11.3,但

我的虚拟环境装的CUDA版本就是11.3,所以它可能用了我base环境里的10.3的CUDA。

问题引入完毕,我们先来看看conda到底是什么

Conda 是一个开源包管理系统和环境管理系统。

可见Conda是pip功能的一个超集,不只可以管理包、还可以管理环境。

那让我们看看Conda所管理的环境,事实上这个目录是Conda的base环境。

再看看python环境

可以看到,Conda环境确实是python环境的超集。

再来看看Conda所管理的其他环境,进入~\envs

除Conda自带的base环境外,我还创建了两个Conda环境:gluonmyenv

进入myenv看看

可见也是python环境的超集。

那么为了区分二者,我们可以简单地认为Conda环境不是python环境,它包含的功能比python环境要多。

接下来介绍一下两种环境如何安装包。

python环境下,python官方推荐使用pip进行包管理。

接下来插入一下多个python环境并存的情况。

当系统中有多个python环境时,比如我有一个python3.9,一个python3.10(下面那个估计是微软自己装的依赖)。

它优先使用的python环境是在系统环境变量中靠上的那个

如图,在系统环境变量中python39比python310靠上,所以在命令行中操作时若输入了二者环境中都有的程序时,会优先使用上面环境中的程序。

下面以pip程序来举个例子

先来看看两个python环境下的pip程序都有哪些

接下来试着调用一下这些程序

当调用两个环境下独有的程序时,使用相应的环境。

当调用两个环境下共有的程序时,使用系统环境变量中靠上的环境。

那么Conda命令行的pip呢?

可以看出这个现象是等价于在我们的python环境变量上方加入了Conda环境。

这样,直接使用pip就会往Conda环境里下载包(装程序)。

同样地,在哪个Conda环境下使用pip,就会往哪个Conda环境里下载包。

conda命令自不用说,也是往自己的环境里下载包(激活不同的Conda环境一试便知)

既然在Conda命令行下conda install SomePackagepip install SomePackage是往同一个地方下载包,那么他们有什么区别吗?

以下引自其他博客。

pip是用来安装python包的,安装的是python wheel或者源代码的包。从源码安装的时候需要有编译器的支持,pip也不会去支持python语言之外的依赖项。

conda是用来安装conda package,虽然大部分conda包是python的,但它支持了不少非python语言写的依赖项,比如mkl cuda这种c c++写的包。然后,conda安装的都是编译好的二进制包,不需要你自己编译。所以,pip有时候系统环境没有某个编译器可能会失败,conda不会。这导致了conda装东西的体积一般比较大,尤其是mkl这种,动不动几百兆甚至一G多。

conda和pip对于环境依赖的处理不同,总体来讲,conda比pip更加严格,conda会检查当前环境下所有包之间的依赖关系,pip可能对之前安装的包就不管了。这样做的话,conda基本上安上了就能保证工作,pip有时候可能装上了也不work。

这个我比较有感触,比如cudatoolkit它是一个C++库,就只能用conda install cudatoolkit=11.3,而不能用pip install cudatoolkit==11.3,注意一点微小的区别,conda install SomePackage 指定版本时要用=,而pip install SomePackage指定版本时要用==

另外,pip还可以指定版本的上下界,如pip install 'SomePackage>=1.0.4'。(能不能同时指定还未知)

conda应该也能,暂时用不到就懒得测试了,再说。

另外,我说了半天的cudatoolkit和NVIDIA的CUDA是一回事吗?

不是,cudatoolkit可以理解为CUDA在深度学习场景下的最小安装,只包含了CUDA中的动态链接库,这样就足以支持深度学习框架。

确实就只有库。

装好了,爽。

jupyter notebook、jupyter lab的优雅启动方式

  1. 生成配置文件

    jupyter notebook --generate-config

  2. 改两行代码,去掉注释使其生效

    改默认路径

    1
    c.NotebookApp.notebook_dir = r'E:\d2l-zh-2.0-pytorch'

    改默认浏览器

    1
    c.NotebookApp.browser = 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe %s'
  3. 把快捷方式拷到桌面上

    这个快捷方式可以在开始菜单找到

    但是怎么创建的我给忘了。。