前言: 我很喜欢《洛克菲勒写给儿子的信》这本书,不知道是有人故意翻译的通俗易懂还是想在字里行间传达一些关于成功经验的一些体会,信中有三句话让我很感慨,第一句话是“ 在多数情况下,父母的位置决定了孩子的人生起点”、“机会永远都不会平等”、“找到自己的路,上帝就会帮你”,这篇博客先分享这么多,这三句话你们会更赞同哪一句呢?接下来进入正题。
很显然,学习Python的目的是为了利用深度学习的库、函数来拟合我们的数据,找到规律,但是Python运行的快不快呢?其实不快,因为在深度学习的训练过程中,会涉及到大量的运算,所以大多数底层的机器学习框架都是用C/C++编写的,然后用python去封装它,实现易用和快速运行的问题,从这的角度我们可以知道,C/C++必须要会,因为大厂找计算机视觉和图像处理的工程师面试要求会有,同时当一个问题难以解决的时候,是否应该考虑调用另一个子问题来辅助,比如Python在充当底层逻辑困难的时候,是否可以调用C/C++来干这个活。
Python有两个版本,2和3,互不兼容,这里推荐Python3.6版本。除此之外必须使用Anaconda,原因是conda可以在帮你创建Python虚拟环境的同时分割运行环境,主要是解决在不同的问题面前包冲突的问题。 方便理解我做了实验一——用conda创建TensorFlow和Pytorch的运行环境 并总结一些常用操作。
# 0.如果是高手,在帮别人改BUG的时候会先查看一下有那些环境
conda env list
进入环境再pip list
# 1.先创建一个TF虚拟环境
conda create -n tensorfw python=3.6
# 2.创建完成需要激活环境
conda activate tensorfw
# 3.Python3使用conda/pip去管理包
conda install/remove packagenm
pip install/unstall packagenm
# 4.拷贝/载入环境包,注意的是要在打包环境中打包,文件名位置不记得不要紧,利用everything这个软件去搜
conda env export > 1.yaml #打包
conda env create -f 1.yaml #载入,创建一个虚拟环境,然后载入
# 5.TensorFlow版本<=>cuda<=>cudnn<=python版本是有很强的关联关系,注意下载哪个版本的tf要先控制cuda版本
# 关系网址https://www.tensorflow.org/install/source_windows
#5.1检测cuda版本打开cmd
nvcc --version #我的是8.0.60
# 5.2安装cuda
cuda install cudatoolkit=8.0 #卡的话多试几次
# 5.3搜索condnn版本
conda search cudnn
#5.4 安装condnn
conda install condnn=7.1.4
#5.5 安装Tensorflow
conda install tensorflow-gpu=1.14.0 #版本查一下,这里占个位
#测试tf是否可用,打开pycharm
import tensorflow as tf
print(tf.test.is_gpu_available())
#安装pytorch(前提是cuda和cudnn安装好)
conda create -n pytorchtest python=3.6
conda activate pytorchtest
# 添加Anaconda的清华镜像,复制不行的话就一句一句加
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
# 设置搜索时显示通道地址
config --set show_channel_urls yes
#在官网上https://pytorch.org/根据条件复制下载命令,不过去掉后面尾巴-c pytorch
conda install pytorch torchvision cudatoolkit=10.0
#打开pycharm测试
import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
|