tensorflow学习笔记

这篇具有很好参考价值的文章主要介绍了tensorflow学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

tensorflow学习过程中记录的笔记

1. 安装

cuda的安装过程略,参考pytorch的那篇笔记。

一个稳定版本的tensorflow2.5版本匹配:

conda create -n hi_hand_det python=3.7.0
conda install cudatoolkit=11.3.1
conda install cudnn=8.2.1
pip install tensorflow-gpu==2.5.0

2. 验证GPU是否可用

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

如果返回为True,说明GPU已经可用。

3. 静态图说明

参考:tensorflow静态图原理

笔记:在模型训练初始化init阶段的最后,需要用任意数值的指定矩阵形状让模型先运行一次,从而生成静态图,这样后续就会直接运行静态图。

4. CPU和多GPU选择

在代码开头设置仅有需要的GPU可见

# 设置仅1号gpu可见
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

# 设置-1则为cpu运行
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

5. 设置显存动态分配

如果不设置动态分配,默认会占据全部显存,导致一张显卡不能跑多个训练

动态分配内存
 # 配置gpu设备
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

print(tf.config.list_physical_devices("GPU"))
gpus = tf.config.experimental.list_physical_devices(device_type="GPU")
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)

6. 模型权重融合

注:融合后的模型在PC上测试结果符合预期,但是在量化后却出现了性能的明显下降文章来源地址https://www.toymoban.com/news/detail-644581.html

# 收集所有权重
weights = [model.get_weights() for model in [model_1, model_2]]
# 创建一个新的平均权重
new_weights = list()
for weights_list_tuple in zip(*weights):
    new_weights.append(
        np.array([np.array(weights_).mean(axis=0)\
            for weights_ in zip(*weights_list_tuple)]))
# 在模型中覆盖平均得到的权重
model_1.set_weights(new_weights)
# 保存权重
model_1.save_weights(Config.model_output)

7. 调整tensorflow输出日志信息等级

os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"

8. 模型整体架构

import tensorflow as tf
from tensorflow.keras import layers
import tensorflow_addons as tfa

class MyModel(tf.keras.Model):
    def __init__(self, load_path=""):
        super().__init__()

        # 添加各种类初始化参数

        # 构建网络结构
        self.__build()

        # 模拟图像的输入尺寸,输入1次0构成的矩阵,让tensorflow完成初次运行的初始化
        self(tf.ones([1, self.img_size[1], self.img_size[0], 1]))

        # 加载.h5格式的预训练模型
        if load_path.split(".")[-1] == "h5":
            self.load_weights(load_path, by_name=True, skip_mismatch=True)

    # 构建网络结构
    def __build(self):
        # 构建网络层layer的细节
        self.backbone = self.make_backbone()

    # 构建具体运算路线
    def call(self, x):
        # 具体运算路线
        return x

    # 预处理
    @staticmethod
    def preprocess(self, image):
        return image

    # 后处理
    @staticmethod
    def postprocess(self, data):
        return data

    # 计算loss
    @tf.function
    def loss(self, data):
        return data

到了这里,关于tensorflow学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI人工智能中的概率论与统计学原理与Python实战:35. Python实现量子计算与量子机器学习...

    量子计算和量子机器学习是人工智能领域的一个重要分支,它们利用量子物理现象来解决一些传统计算方法无法解决的问题。量子计算的核心是量子比特(qubit),它可以存储多种信息,而不是传统的二进制比特(bit)。量子机器学习则利用量子计算的优势,为机器学习问题提供更

    2024年04月14日
    浏览(57)
  • 如何学习人工智能AI技术

    目录 1.基础知识准备 2.软件环境 3.理论学习  4.常见人工智能技术 5.样本库 5.1 图像识别与计算机视觉 5.2自然语言处理 5.3语音识别与合成 5.4其他领域 6.算力        学习人工智能是一项系统性的任务,涉及到理论知识、编程技能、算法理解、项目实践等多个层面。下面是一个

    2024年04月29日
    浏览(57)
  • 人工智能_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_001---人工智能工作笔记0096

    使用centos安装,注意安装之前,保证系统可以联网,然后执行yum update 先去更新一下系统,可以省掉很多麻烦 20240219_150031 这里我们使用centos系统吧,使用习惯了. ChatGlm首先需要一台个人计算机,或者服务器, 要的算力,训练最多,微调次之,推理需要算力最少 其实很多都支持CPU,但为什么

    2024年02月20日
    浏览(58)
  • 人工智能该如何学习?详细的AI学习

    英杰社区 https://bbs.csdn.net/topics/617804998        OpenAI最近发布了一款名为ChatGPT的聊天机器人模型,它受到了广泛的关注和赞誉。ChatGPT以一种更贴近人类对话方式进行交互,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求等。它提供高质量的回答,并且与用

    2024年02月08日
    浏览(54)
  • 人工智能_CPU安装运行ChatGLM大模型_安装清华开源人工智能AI大模型ChatGlm-6B_004---人工智能工作笔记0099

    上一节003节我们安装到最后,本来大模型都可以回答问题了,结果, 5分钟后给出提示,需要GPU,我去..继续看官网,如何配置CPU运行  没办法继续看: 这里是官网可以看到  需要gcc的版本是11.3.0,这里我们先没有去安装,直接试试再说 yum install epel-release yum install gcc-11.3.0 安装的话执行这

    2024年02月21日
    浏览(64)
  • 人工智能入门学习笔记(一)

    家人们,好久不见哈!最近在尝试着学习人工智能的相关知识和具体技能呀。说实话,当像我这样的 小白初探人工智能体系 时,总是被很多未知的名词以及茫茫内容所淹没,便去想通过网络学习帮助自己建立正确的人工智能基本概念认知。在此,我便进一步对人工智能体系

    2024年02月02日
    浏览(63)
  • 【AI】了解人工智能、机器学习、神经网络、深度学习

    一、深度学习、神经网络的原理是什么? 深度学习和神经网络都是基于对人脑神经系统的模拟。下面将分别解释深度学习和神经网络的原理。 深度学习的原理: 深度学习是一种特殊的机器学习,其模型结构更为复杂,通常包括很多隐藏层。它依赖于神经网络进行模型训练和

    2024年02月06日
    浏览(69)
  • AI人工智能 机器学习 深度学习 学习路径及推荐书籍

    人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的,三者的关系:人工智能 机器学习 深度学习。 人工智能(ArtificialIntelligence,AI)是最宽泛的概念,是研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学 机器学习(MachineLear

    2023年04月24日
    浏览(57)
  • 人工智能学习笔记六——CBOW模型

    连续词袋模型(CBOW)模型是word2vec下的一个模型,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。 网络 以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,

    2024年02月14日
    浏览(39)
  • 走进人工智能|强化学习 AI发展的未来引擎

    前言: 强化学习是一种通过智能体与环境交互,通过尝试最大化累计奖励来学习最优行为策略的机器学习方法。 本篇带你走进强化学习!一起来学习了解吧!!! 强化学习是一种机器学习方法,旨在通过试错来学习正确的行为。与其他机器学习方法不同,强化学习的主要目

    2024年02月10日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包