更详细的版本根据这个博客
1、 安装anaconda, 这里已经安装成功,所以忽略!
conda --version
conda info --envs
分别看自己现在的环境
2、 查看默认的python版本(也就是anaconda下的)
python
exit()
3、安装环境
conda create --name tf37 python=3.7
这里默认给我安装的是python=3.7.11版本的
再次查看python版本! 到此完成了python环境的创建!
退出环境查看环境是不是创建成功
上面的这些基本就可以对于Anaconda有一个比较简单的了解,其实它就类似于JDK的一些操作,比如我们查看jdk的版本,也可以用java --version ,所以说对于Anaconda去安装tensorflow是比较简单的原因也正是这样,也就是是给我们提供了一个基础的依赖环境,这样就方便我们进行后面的安装操作
4、安装tensorflow
CPU版本:
pip install tensorflow
GPU版本:
pip install tensorflow-gpu
两者都是默认安装的tf2.6
5、出现了问题
为什么呢? 经过网上的资料是tf版本和cuda版本不对应导致的;
版本对应
是版本不对应的问题! 也就是tensorflow 和 cudatoolkit 和 cudnn!
我们降低tf的版本到2.3 or 2.2 还是不成功!
但是可能2.1就会成功! 我没有这么做,而是直接采用了下面这种,修改cudnn的方法! 你可以先尝试改改2.1(这样说岂不是这个bazel有问题???)
这次我们更改cudnn,但是这也会带来一些问题! 原来配置好的torch的环境可能会出现问题,因为它们在建库的时候是按照原来的cudatoolkit = 10.2建立的!!! 看看情况!
怎么看自己cudnn的版本?
错误变成了一个
经过网上查阅发现这是正确的! 哈哈哈! 没有什么问题! 代表成功运行了!
当然也可以取消这样的提示!
6. 测试tf安装成功
1.0和2.0是不一样的,是因为tf.Session()在2.0版本已经被遗弃了!为什么呢?
2.0版本:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()#保证sess.run()能够正常运行
hello = tf.constant('hello,tensorflow')
sess= tf.compat.v1.Session()#版本2.0的函数
print(sess.run(hello))
运行结果如下:
中间的就胜省略了!
这样就表示成功了!
1.0版本
import tensorflow as tf
hello = tf.constant("Hello, Tensorflow!")
sess = tf.Session()
print(sess.run(hello))
7. 配置到pycharm中
新建一个项目
- 选择我们的虚拟环境
我们创建一个项目! 注意这里有三种图片,其中我们需要的是conda里面的虚拟环境(圆圈)! 为什么称之为虚拟环境呢,因为这里就像一个虚拟机一样,我们可以创建一个一个独立的环境(python版本)而不相互影响! 但是在普通的环境中(也就是我们的电脑上,姑且这么认为),一个python版本只能对应一个环境,是定义好的!
再次
新建py文件进行测试
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
tf.compat.v1.disable_eager_execution()#保证sess.run()能够正常运行
hello = tf.constant('hello,tensorflow')
sess= tf.compat.v1.Session()#版本2.0的函数
print(sess.run(hello))
8. 在jupyter上运行
直接在jupyter上运行上面的程序是肯定有问题的
jupyter需要提前选择环境!
在jupyter中添加其它的工作环境
安装Python环境的命令:
conda create -n env_name python=2.7
env_name是你给自定义的python2.7的名字
activate env_name
进入这个Python
pip install ipykernel
安装ipykernel
需要导入!!!!!!!
python -m ipykernel install --name env_name
将刚才安装的python环境加入kernel
现在验证一下是否成功吧,打开你的jupyter notebook,看看创建新文件的地方是否多了你刚才新创建的python环境
补充:
jupyter kernelspec remove kernel_name
、
可以使用pycharm中安装
- 怎么使得jupyter每次都默认打开指定路径
修改jupyter自启动!!!
但是这样十分麻烦,有什么办法可以自动打开呢,我查了百度,又查了不少别人的博客,亲测有效的
1.去cmd 命令窗口执行jupyter notebook --generate-config 可以找到 Jupyter_notebook_config.py文件
2.在文件中 找到
#c.NotebookApp.notebook_dir = ‘’
3.在下面复制以下代码
import webbrowser
webbrowser.register(“Chrome”, None,
webbrowser.GenericBrowser(u"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"))
c.NotebookApp.browser = u’Chrome’
坑一: 注意要是双引号。 原来不知道是不是单引号的问题所以一直没有成功
坑二: 注意要是双 u !!!!!
补充: CUDA相关
后面的两者都是需要安装的,但是在使用的时候(也就是配置环境的时候),是遵从于后者的!
但是前者版本必须大于等于后者,至于有没有问题,需要不需要改动,需要看情况!
查看驱动版本CUDA版本(无需配置环境变量 )
nvidia-smi
查看cudatoolkit版本(需要配置环境变量)
但是这样是有缺陷的,如果你要安装不同的cuda版本的时候,需要将环境变量给清除,这样才不会影响后面的操作! 因为你在安装torch的时候,命令语言会获取你环境变量中的信息而自动给你确定要安装什么版本的cuda or cudatoolkit! 所以要小心啊!
相同的道理这也就是为什么java也需要配置环境变量,因为只有你在装上基础**jdk(Java development kit)**基础环境之后,需要配置环境的原因,因为后续的操作要看这个版本号来确定安装or不安装什么!
是不是和CUDA Toolkit 很一样,也是一个基本的开发工具包
nvcc-V
- 查看cudatoolkit的安装位置
set cuda
- cudatoolkit安装目录一般为:
C:\Program Files\NVIDIA GPU Computing
Toolkit\CUDA\vXX.X\extras\CUPTI\libx64
conda activate XXX
- 查看自己安装的torch版本
import torch
torch.version
- cudatoolkit版本(就是在cuda上使用的工具组件库),并且验证是不是cuda是不是可以成功运行:
进入python,
import torch
torch.version.cuda
这里必须和自己电脑安装的cuda版本要一致的!!
对应关系:
1.这里pytorch和cudatoolkit版本对应关系:
2.cudatoolkit版本和系统cuda对应关系(cuda >= cudatoolkit):
3.系统cuda和nvidia对应关系:
4.cuda和cuDNN的关系和对应关系:
小结:
gpu有驱动,系统cuda用于加速,cudnn是系统cuda的深度学习小应用,cudatoolkit是深度学习框架,对系统cuda的适应器(cudatoolkit是不完整系统cuda,可能深度学习只需要用一小部分的系统cuda?)
驱动版本和运行版本可以不一致
https://blog.csdn.net/qxqxqzzz/article/details/103453413
https://blog.csdn.net/ljp1919/article/details/102640512
只要驱动版本大于等于运行版本就可以了!
而且在我们配置torch 或者是 tensorflow环境的时候,依赖的是cudatoolkit版本(说白了就是工具cuda)
后面我们修改也是修改这个就可以了
JDK: JDK 是Java开发工具包 (Java Development Kit ) 的缩写。从字面意思翻译过来就是java开发的工具。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。
JRE: Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由太阳微系统所研发,JRE可以让计算机系统运行Java应用程序(Java Application)。JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。
可以通俗的讲,就是JDK的开发是需要JRE的,但是最终的运行是在JRE上