大家好,又见面了,我是你们的朋友全栈君。
前言
目前考虑进入梦寐以求的 机器学习、人工智能 等领域的学习,因此安装主流的机器学习框架 Tensorflow 迫在眉睫。
然而网上的安装教程大多是1.xx 版本的。
笔者目前安装的环境是 win10,Python版本是 3.8。
最近在安装Tensorflow最新版2.4.1时,参考了不少大佬博客,也遇到不少问题,因此借此机会,更新下最新的安装教程。
参考了许多许多博客 捂脸哭o(╥﹏╥)o
必须要感谢 csdn 知乎… 各位大神的文章
Tensorflow 简介
任何曾经试图在 Python 中只利用 NumPy 编写神经网络代码的人都知道那是多么麻烦。 编写一个简单的一层前馈网络的代码尚且需要 40 多行代码,当增加层数时,编写代码将会更加困难,执行时间也会更长。 TensorFlow 使这一切变得更加简单快捷,从而缩短了想法到部署之间的实现时间。 TensorFlow 是由 Google Brain 团队为深度神经网络(DNN)开发的功能强大的开源软件库,于 2015 年 11 月首次发布,在 Apache 2.x 协议许可下可用。 截至今天,短短的两年内,其 GitHub 库大约 845 个贡献者共提交超过17000 次,这本身就是衡量 TensorFlow 流行度和性能的一个指标。
下图列出了当前流行的深度学习框架,从中能够清楚地看到 TensorFlow 的领先地位:
Anaconda 简介
- what’s Anaconda?
Anaconda在英文中是“蟒蛇”,麻辣鸡(Nicki Minaj妮琪·米娜)有首歌就叫《Anaconda》,表示像蟒蛇一样性感妖娆的身体。 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。 —— 百度百科
- 为什么需要先安装Anaconda?
Tensorflow是属于很高层的应用。高层应用的一个比较大的麻烦就是需要依赖的底层的东西很多,如果底层依赖没有弄好的话,高层应用是没法玩转的。 在极客学院有关Tensorflow的教程中,提到了这样几种安装方式:Pip, Docker, Virtualenv, Anaconda 或 源码编译的方法安装 TensorFlow。 在这里,我强烈推荐大家使用Anaconda的方式安装!因为采用这种方式安装的时候,相当于将所有的底层依赖细节全部已经打包给封装好了!并且,Anaconda还能创建自己的计算环境,相当于将tensorflow的环境与其他环境做了隔离,这样你就可以将tensorflow随便玩,爱怎么玩怎么玩,也不用担心破坏之前的环境! 如果是玩数据玩ML的同学,如果你还不知道Anaconda,你就out啦!Anaconda是一个基于python的科学计算平台,这个平台里包含有python,r,scala等绝大部分主流的用于科学计算的包。
- 你可能已经安装了 Python,那么为什么还需要 Anaconda?
1)Anaconda 附带了一大批常用数据科学包,它附带了 conda、Python 和 150 多个科学包及其依赖项。因此你可以立即开始处理数据。 2)管理包 Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的。在数据分析中,你会用到很多第三方的包,而conda(包管理器)可以很好的帮助你在计算机上安装和管理这些包,包括安装、卸载和更新包。 3)管理环境 为什么需要管理环境呢? 比如你在A项目中用了 Python 2,而新的项目B老大要求使用Python 3,而同时安装两个Python版本可能会造成许多混乱和错误。这时候 conda就可以帮助你为不同的项目建立不同的运行环境。 还有很多项目使用的包版本不同,比如不同的pandas版本,不可能同时安装两个 Numpy 版本,你要做的应该是,为每个 Numpy 版本创建一个环境,然后项目的对应环境中工作。这时候conda就可以帮你做到。
Anaconda 优点?
Anaconda的优点总结起来就八个字:省时省心、分析利器。 省时省心: Anaconda通过管理工具包、开发环境、Python版本,大大简化了你的工作流程。不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目。
Anaconda 安装
官网下载地址:Link
- Products — Individual Edition 选择产品中的个人发行版
- 点击Download跳转到最下面,下载相应的版本(目前大多都是64位电脑)
该官网下载文件速度还是很快的
- 下载完成后点击安装
- 就和安装普通的软件一样,全部选择默认即可,注意勾选将 python3.8 添加进环境变量。
- 在非C盘创建一个新的目录
- 这里可以将第一个对勾打上(Add … to my Path),这样就不用配置环境变量,直接Install
- 若上面未勾选第一个选项,则需要手动配置环境变量
安装成功后,开始菜单会多出Anaconda3相关组件
安装完成Anaconda,进行环境变量的测试
- 进入cmd命令窗口
- 验证Anaconda环境是否安装成功:
conda --version
- 检测目前安装了哪些环境变量:
conda info --envs
这样就安装成功了
我们可以通过下面的命令来查看Anaconda已经安装了哪些包。
运行 开始菜单 -> Anaconda3 -> Anaconda Prompt
在Anaconda Prompt 命令界面输入:
conda list
可以看到已经安装了numpy、sympy等常用的包。
恭喜你完成第一步
TensorFlow CPU & GPU
- 前提
TensorFlow 安装的前提是系统安装了 Python 2.5 或更高版本,教程中的例子是以 Python 3.8(Anaconda 3版)为基础设计的。 为了安装 TensorFlow,首先确保你已经安装了Anaconda。 可以从网址(https://www.continuum.io/downloads)中下载并安装适用于Windows/macOS 或 Linux 的 Anaconda。
- what’s CPU & GPU?
安装了 Anaconda,下一步决定是否安装 TensorFlow CPU 版本或 GPU 版本。 几乎所有计算机都支持 TensorFlow CPU 版本,而 GPU 版本则要求计算机有一个 CUDA compute capability 3.0 及以上的 NVDIA GPU 显卡(对于台式机而言最低配置为 NVDIA GTX 650)。
- CPU 与 GPU 的对比
中央处理器(CPU)由对顺序串行处理优化的内核(4~8个)组成。 图形处理器(GPU)具有大规模并行架构,由数千个更小且更有效的核芯(大致以千计)组成,能够同时处理多个任务。 对于 TensorFlow GPU 版本,需要先安装 CUDA toolkit 7.0 及以上版本、NVDIA【R】驱动程序和 cuDNN v3 或以上版本。Windows 系统还另外需要一些 DLL 文件,读者可以下载所需的 DLL 文件或安装 Visual Studio C 。 还有一件事要记住,cuDNN 文件需安装在不同的目录中,并需要确保目录在系统路径中。当然也可以将 CUDA 库中的相关文件复制到相应的文件夹中。
内容来源: Link
Tensorflow 安装
- 打开Anaconda Prompt,输入清华仓库镜像,这样更新会快一些:
输入命令:
代码语言:javascript复制conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
附(可以忽略以下内容):
Python默认的pip包来源是国外的Pypi服务站点:https://pypi.python.org/simple。 对于国内用户来说,由于网络原因,下载速度太慢,因此推荐使用国内镜像源站点。 目前,比较常用的pip镜像站点有: 1)清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/ 2)中国科大:https://mirrors.ustc.edu.cn/pypi/web/simple/ 3)豆瓣:http://pypi.doubanio.com/simple/
- pip使用国内镜像站点
方式一:直接在 pip install xxx 后加上镜像源地址。
例如:下载numpy包:
代码语言:javascript复制 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
但是利用这种方式,每次下载python包,都需要在后面加上镜像源地址,操作繁琐,不建议。
方式二:修改配置文件 目前,在windows系统上使用python安装包安装时,都会自带安装pip软件,此时可以通过下述方式修改pip的配置文件。
首先在
C:Users×××
目录中创建名为pip的文件夹(×××为用户名),然后在里面创建名为pip.ini
的文件,最后在该文件中添加以下内容,保存即可。[global] index-url=https://pypi.tuna.tsinghua.edu.cn/simple timeout = 6000 [install] trusted-host=pypi.tuna.tsinghua.edu.cn disable-pip-version-check = true
说明:请注意,该方式不适合于linux系统和MacOS。
- 创建虚拟环境
- 同样在Anaconda Prompt中利用Anaconda创建一个python3.8的环境,环境名称为tensorflow ,输入下面命令:
conda create -n tensorflow python=3.8
其中(环境名称,可以随意设置)
运行 开始菜单->Anaconda3—>Anaconda Navigator 点击Navigator左侧的 Environments,可以看到tensorflow的环境已经创建好了。
- 在Anaconda Prompt中启动tensorflow环境
格式:activate 虚拟环境名
activate tensorflow
注:当不使用tensorflow时,关闭tensorflow环境,命令为:deactivate 虚拟环境名
- 安装cpu版本的TensorFlow
代码语言:javascript复制用pip命令安装。这里高潮 (climax)来了,官方还有网上各种命令层出不穷,让人眼花缭乱。 下面先列举几个常见的命令方式,声明以下几条命令都能安装成功,但是能不能用就不一定了。
1.pip install tensorflow # 最新的稳定发行版本,2.0×后默认是CPU和GPU版本在一起,1.×只表示CPU版本
2.pip install tensorflow-gpu # 1.×的GPU版本
3.pip install tensorflow==1.15 # 1.×的最后一个更新版本
- 第一个指令:什么叫CPU和GPU版本在一起?我理解的意思就是,CPU和GPU一家亲,不搞什么分裂,一条安装命令搞定就可以了嘛,至于怎么选择,看你机器的显卡支不支持CUDA了。 因此,对于显卡支持gpu版本,而又只想用cpu版本练手的小伙伴来说,就不要用第一条命令进行安装,要不然在导包的时候就会有一大堆错误,缺这个少那个,基本是由显卡驱动程序版本、CUDA版本、CUDDN版本等问题引起的。如果不想安装gpu版本,何必自找麻烦呢。
这里的安装步骤是我copy前辈的文章,我之前直接用的这条安装命令 pip install tensorflow,但是最后使用时,它提示我没有CUDA之类的东西,我查看安装的包时,发现tensorflow-cpu与tensorflow-gpu都安装上,看完这篇博客后,才知道gpu也捆绑安装了,运行代码时,总是报红提示我缺少 “动态链接”等,好像使用GPU时需要安装 cuda8 cudnn5等,比较麻烦,小白的我未尝试。
- 第二个指令:安装1.×的GPU版本,我们不涉及,请忽略。
- 第三个指令:按照对于1.x 版本,tensorflow默认是CPU版本的逻辑。这个确实没问题,安装成功后能用,诚不欺我。虽然能运行成功,但是总是输出一些异常。
运行结果。大致意思是,我的显卡支持GPU版本,所以提示我找不到一些库,如果想用gpu版本,请安装这些库,并且最后正确输出了Tensorflow的版本是1.15,无法使用gpu。虽然程序正常运行结束,但是明显基于计算机的硬件,官方还是强推了gpu版本,输出了一大堆的提示来安利你。可是,我明明只是想用cpu版本的,不想要推荐,这些输出报错不想看到。如果你不介意,当然也可以凑活着这么用。
上面说了这么多,如何才能安装简洁的tensorflow?
利用下面的命令安装,强制安装CPU版本。
pip install tensorflow-cpu
最后 完美的安装了最新的tensorflow 2.4.1 cpu版本。
注:这里没有介绍GPU版本的安装方法,GPU版本需要安装cuda8 cudnn5,如果需要 请搜索其他博文。
注意:一定要在 刚刚创建的tensorflow的环境下安装!
- 测试tensorflow 在Anaconda Prompt 中启动tensorflow环境,并进入python环境。
在tensorflow命令行中:输入python便是进入python环境
测试代码
代码语言:javascript复制import tensorflow as tf
#查看tensorflow版本
print(tf.__version__)
如图所示 恭喜你安装成功 ヾ(◍°∇°◍)ノ゙
Pycharm &Tensorflow
习惯使用PyCharm来开发,而 Anaconda 集成了python开发环境,因此我们可以修改Project的python编译环境,从而更方便使用tensorflow框架。
配置如下:
- 新建Project
- File-Setting–Project Interpreter选择tensorflow下的Python解释器
部署完便可跑一个 HelloWorld
代码语言:javascript复制import tensorflow as tf
#查看tensorflow版本
print(tf.__version__)
这种方式的好处:不用每次都 开启、关闭环境了。
Tensorflow & Hello world
Hello world
- 安装成功后试一下 Hello world,参考网上的代码:
import tensorflow as tf
#创建一个Tensor字符串常量
hello = tf.constant("hello world ")
print(hello)
- 运行结果如下:
tf.Tensor(b'hello world', shape=(), dtype=string)
- 访问hello中的字符串,我们需要用到 numpy()
#调用numpy(),来访问一个Tensor(张量)值
print(hello.numpy())
运行结果如下: b’hello world’
本程序原期望的运行结果为:hello world 而实际运行结果为:b’hello world’ 在网上查阅后: b 前缀的字符串为bytes类型的字符串 Python语言中有两种不同的字符串 一个用于存储文本(unicode类型文本字符串 u’hello world’ ),一个用于存储原始字节(byte类型字节字符串 b’hello world’ ) 在python3中,str 变量默认采用unicode类型,因而省略了u 前缀
字节型字符串和文本型字符串之间可以通过编码 encode() 和 解码 decode() 相互转换。
代码语言:javascript复制#调用decode()解码,默认为utf-8解码
print(hello.numpy().decode())
运行结果:
hello
具体请参考博客 Link
Session()
测试代码:
代码语言:javascript复制import tensorflow as tf
def add_demo():
# 计算两个变量的和
# 回顾原生的python计算
a = 10
b = 20
c = a b
print('原生python计算', c)
# tensorflow 获取变量值,与 python不同
a_t = tf.constant(10)
b_t = tf.constant(20)
print('a_t', a_t)
c_t = a_t b_t
print('tensorflow计算两数的和:', c_t)
# 开启会话
with tf.Session() as sess:
c_t_value = sess.run(c_t)
print('c_t_value:', c_t_value)
if __name__ == '__main__':
add_demo()
直接报错:
错误的意思是tensortflow模块没有Session属性,后来查阅资料发现,tensorflow2.0版本中的确没有Session这个属性
如果安装的是 tensorflow2.0 版本又想利用Session属性 请参考博客: Link
兼容2.0与1.0版本,需更改import语句:
import tensorflow.compat.v1 as tf
后序
安装一个框架,我觉得好难啊 (可能是我太笨 太low) o(╥﹏╥)o
截止到这里小白的我 花了很长时间,看了许多大佬的博客,资源等,真心的感谢他们,向优秀的人的致敬!
希望我可以越走越远,加油!
参考博客
Link Link Link
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175486.html原文链接:https://javaforall.cn