Mac M1 安装配置TensorFlow-GPU

2023-11-12

在Mac上安装了TensorFlow,但是import Tensorflow时却一直显示TensorFlow不存在。看了各种安装方法,最后终于成功了。



进入正题:

直接进官网,根据苹果官方给的安装方法进行安装:https://developer.apple.com/metal/tensorflow-plugin/

这个方法真的简单很多很多,实在不明白为什么网上一搜全是那种贼复杂的安装方法,步骤贼多,一看就晕。

  • 安装步骤:

注意: 要求python版本 3.8 or 3.9

以下几步均在终端运行

Step 1: Environment setup

选苹果自己的芯片,红框那一栏;
Alt

下载 Miniforge3

下载地址:https://github.com/conda-forge/miniforge
请添加图片描述

# 在终端输入:cd Downloads到Miniforge3的下载目录那
# 输入下面这一句
chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh # 使脚本具有执行权限
# 安装需要几分钟,耐心等待。我第一次就等了几秒没动静,以为方法不对就退了。
# 安装过程一路yes下去,会看到显示安装成功,Thank you for installing Miniforge3!
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

创建conda环境

conda create -n tf_m1 python=3.9
# 也是一路yes下去
# 激活环境
conda activate tf_m1
  • 接下来,安装Tensorflow依赖
    请添加图片描述
    请添加图片描述
# conda install -c apple tensorflow-deps
# conda install -c apple tensorflow-deps==2.5.0
# 直接安装对应版本,我的Tensorflow版本2.7.0,安装的下面这个没问题
conda install -c apple tensorflow-deps==2.6.0

Step 2: Install base TensorFlow

# 不加镜像安装比较慢
python -m pip install tensorflow-macos #下载比较慢
# 如果下载不成功,就像加个景象源就好了,我下载这个时没加镜像下载就很快了
python -m pip install tensorflow-macos -i https://pypi.tuna.tsinghua.edu.cn/simple/

Step 3: Install tensorflow-metal plugin

# 不加镜像我安装两次都没成功,加了镜像就很快安装好了
# python -m pip install tensorflow-metal
# 建议用下面这个
python -m pip install tensorflow-metal -i https://pypi.tuna.tsinghua.edu.cn/simple/

测试是否成功安装tensorflow-GPU版

方法1:

import tensorflow as tf
print(tf.test.is_gpu_available())

方法2:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

输出显示有GPU就是成功了

Metal device set to: Apple M1

systemMemory: 8.00 GB
maxCacheSize: 2.67 GB

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 17101579642361186921
xla_global_id: -1
, name: "/device:GPU:0"
device_type: "GPU"
locality {
  bus_id: 1
}
incarnation: 4245710310575921387
physical_device_desc: "device: 0, name: METAL, pci bus id: <undefined>"
xla_global_id: -1
]



在PyCharm里面配置Tensorflow

已经成功安装好Tensorflow了,但是Pycharm里import Tensorflow显示没有Tensorflow包,此时是因为Pycharm里面没有配置环境。

打开PyCharm -> Preferences ->Project -> Python Interpreter -> Show All -> 点左下角的"+"号
请添加图片描述

选择Conda Environment -> Existing environment ->Interpreter后面的"..." -> Interpreter后面的"..."

在Users里面找miniforge3,再找bin文件夹里面的python,再手动把miniforge3前面的改成~,点ok就好了。

请添加图片描述

请添加图片描述

接着测试一下是否成功,和上面的一样,显示GPU就是成功了。

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

至此,已经可以自由使用Tensorflow了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac M1 安装配置TensorFlow-GPU 的相关文章

  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • XCode 4.2.1 在 Lion 10.7.2 上启动时崩溃

    这周我买了大约 10 年来的第一台 Mac 是的 这是一台二手 Mac Pro 2x2GHz 双核 Xeon 2GB RAM 它全新安装了 Mac OS X Lion 10 7 2 我只安装了 OmniOutlner Pro Textmat

随机推荐

  • 数据可视化(学会用matplotlib绘图)

    1 绘制简单的折线图 import matplotlib pyplot as plt squres 1 4 9 16 25 plt plot squres 把列表传给plot 这个函数尝试根据这些数字绘制出有意义的图形 plt show 打
  • 【取模软件PCtoLCD2002使用教程】

    1 打开取模软件PCtoLCD 2 左上角模式选择为字符模式 3 点击选项 4 设置如下 然后点击确定 5 以16x16汉字取模为例 字宽字高都改为16 然后在输入栏输入汉字 点击生成字模生成的字模如下 然后将字模复制到例程lcdfont
  • 距离向量算法_RIP协议及距离向量算法(上)【44】

    1 RIP协议 RIP 全称Routing Information Protocol 即路由信息协议 RIP是一种分布式的基于距离向量的路由选择协议 是因特网的协议标准 最大优点的简单 RIP协议要求网络中每一个路由器都维护从它自己到其它每
  • Centos 安装mysql8(YUM方式)

    1 执行安装命令 root localhost wget https dev mysql com get mysql80 community release el8 4 noarch rpm root localhost yum modul
  • JAVA 定义静态map并赋值

    private static final Map
  • C语言入门经典三,c语言入门经典第4版和第3版有什么区别

    问 微软的C语言和其他C语言有什么区别吗 答 不知道楼主说的是所谓 微软的c 是指什么概念 个人意见 仅供参考 1 如果是指微软推出的c语言的编译器ms c的话 其实就是c语言各个编译器之间的区别 如果你想深入了解 最好是学习下c标准的制定
  • 【ICS大作业】

    零 摘要 本文对给定的hello程序的生命周期进行了系统性分析 程序经预处理生成hello i 编译生成hello s 汇编生成hello o 最后链接成可执行目标文件hello Shell收到 hello的指令 调用fork函数创建进程
  • 再临SpringBoot——WebFlux处理流程

    文章目录 WebFlux初次尝试 处理过程源码分析 SpringMvc通常是Servlet应用 因此 可能被当前线程阻塞 以远程调用为例 由于阻塞的缘故 导致Servlet容器使用较大的线程池处理请求 而Spring WebFlux通常是非
  • 第一篇——开始

    第一篇 开始 个人简介 学习经历 学习过程 后记 个人简介 个人简介 以山河作礼 学习经历 作为一名本科大一的软件工程专业学生 我已经在CSDN学习了近一年的时间 同时也深入学习了C语言半年 在我的CSDN博客上 我将记录下我在学习过程中的
  • Vue3.0监听props方法

    学习vue3 0记录下props监听 第一种直接监听这个props export default defineComponent props isOpen Boolean emits close modal null setup props
  • 算术表达式的前缀式、中缀式、后缀式相互转换

    中缀表达式 中缀记法 中缀表达式是一种通用的算术或逻辑公式表示方法 操作符以中缀形式处于操作数的中间 中缀表达式是人们常用的算术表示方法 虽然人的大脑很容易理解与分析中缀表达式 但对计算机来说中缀表达式却是很复杂的 因此计算表达式的值时 通
  • 02Nginx源码分析之总结内存开辟的相关函数(ngx_alloc.c,ngx_palloc.c)

    02Nginx源码分析之总结内存开辟的相关函数 ngx alloc c ngx palloc c 前言 写这一篇的目的是为了方便接下来的阅读 否则每次都要对应查找相应的函数 非常麻烦 并且注意 下面所说的内存对齐 实际上是通过倍数来对齐的
  • Mac下使用Xcode的freopen读取输入输出

    很多使用Mac的小伙伴都知道 类似于win或者linux系统下的直接freopen是不行的 或者说强制读入也是不可的 于是 就是去想办法去读入它了 那么怎么读文件和写文件呢 创建 txt 文件 找到文本编辑 点击新建文稿 但是发现 怎么是这
  • 我要自学网视频教程ajax,这么逆天的自学网站,还是第一次见,难怪考不上清华北大...

    原标题 这么逆天的自学网站 还是第一次见 难怪考不上清华北大 有很多朋友 工作了N年之后 工资一直不涨 其实就是没有找到正确的方法 这个时候呢 我们就需要用到一些非常好用的自学网站 去帮助自己在所在的领域进行充电啦 首选的当然就是下面几个啦
  • Servlet 的应用程序设计

    目录 1 基于 Servlet Controller 的应用程序设计 2 基于 Filter Dispatcher 的应用程序设计 3 使用表单验证器 4 添加数据库访问 5 依赖注入 在该模型中 用一个 Servlet 或者过滤器充当控制
  • Flex中字符串String按照格式转化为日期Date的方法

    在Flex中 要通过传入时间的字符串和格式字符串的方式来转换出Date Flex本身没有完善的方法 不知道Adobe在想什么 这么简单实用的功能都没有 回想起来 还是java神马的好 在网上找了好久都没有完善的解决方案 最后偶然发现Date
  • cout << 输出格式突然变成了16进制

    1 背景 在工程中 我通过cout打印一个被频繁调用的函数里面某个参数的值 在前面若干次调用中 cout lt lt 工作正常 是打印的10进制 突然 不清楚什么原因 就开始打印16进制的值 而且是不加0x的16进制 导致我一直以为是10进
  • 力扣:338. 比特位计数

    给你一个整数 n 对于 0 lt i lt n 中的每个 i 计算其二进制表示中 1 的个数 返回一个长度为 n 1 的数组 ans 作为答案 示例 1 输入 n 2 输出 0 1 1 解释 0 gt 0 1 gt 1 2 gt 10 示例
  • 枪神纪紫霄系列服务器,枪神纪紫霄左轮枪简测评

    枪神纪最新的新年红包武器紫霄左轮枪上线 小编这就给各位玩家带来 枪神纪紫霄左轮枪武器测评 枪神纪紫霄左轮枪怎么样 红包武器 紫霄左轮枪 面板 面板伤害比重击左轮高出10点伤害 穿甲多出65 稳定高出20 便携高6 外观 简直和这皮肤是一套的
  • Mac M1 安装配置TensorFlow-GPU

    在Mac上安装了TensorFlow 但是import Tensorflow时却一直显示TensorFlow不存在 看了各种安装方法 最后终于成功了 进入正题 直接进官网 根据苹果官方给的安装方法进行安装 https developer a