Tensorflow笔记

news2024/11/16 3:20:07

Tensorflow笔记

  • 基础概念
    • 计算图
    • Eager Execution(即刻执行)
      • eager模式下计算梯度
  • 基本使用
    • tf.app
      • 加载flag(tf.app.flags)
      • 启动( tf.app.run )

基础概念

计算图

Tensor(张量),在Tensorflow中可以理解为多维数组。
Flow(流),指数据流动的过程。
在计算图中,每一个计算就是一个节点,数据从一个计算“流”入下一个计算,形成图。
Tensorflow计算图
为什么使用计算图?

这里我们引用tensorflow 中计算图理解的说法

  1. 并行化,因为计算图是对计算的一种抽象,点之间的关系取决其依赖关系。因此,互相不依赖的计算可以并行计算,在多集群环境下可以进行分布式计算。
  2. 可移植性性,因为图是一种语言无关的表示方式,tensorflow 中使用protobuf来存储图,可以使用C++,python,jave等语言来解析图。

Eager Execution(即刻执行)

推荐阅读:Tensorflow官方文档:Eager Execution
给出了大量eager excution的例子和解释

TensorFlow 的 Eager Execution 是一种命令式编程环境,可立即评估运算,无需构建计算图:运算会返回具体的值,而非构建供稍后运行的计算图。这样能使您轻松入门 TensorFlow 并调试模型,同时也减少了样板代码。
官方教程中给出的一个例子:

def fizzbuzz(max_num):
  counter = tf.constant(0)
  max_num = tf.convert_to_tensor(max_num)
  for num in range(1, max_num.numpy()+1):
    num = tf.constant(num)
    if int(num % 3) == 0 and int(num % 5) == 0:
      print('FizzBuzz')
    elif int(num % 3) == 0:
      print('Fizz')
    elif int(num % 5) == 0:
      print('Buzz')
    else:
      print(num.numpy())
    counter += 1

调用函数

fizzbuzz(15)

输出

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

在这一过程中,使用了依赖于张量值的条件语句,并会在运行时输出这些值,这在非eager模式下是不行的。


在不同框架中,自动微分实现原理各有不同:

  1. 以Google的TensorFlow为代表的图方法
  2. 以Facebook的PyTorch为代表的运算符重载
  3. 以华为的MindSpore为代表的源码转换方法

eager模式下计算梯度

推荐阅读Tensorflow2梯度带tape.Gradient的用法_(全面,深入)
举出多种例子,深入阐述了tape的各种形式

GradientTape是eager模式下进行梯度计算和跟踪的工具,支持嵌套和多目标跟踪。

基本使用

tf.app

通用入口点,主要的功能是:

  1. 加载flag
  2. 启动(调用用户定义的主函数)

加载flag(tf.app.flags)

用于接受从终端传入的命令行参数,例如模型名称、epoch、dropout等等。
加载过程

flags.DEFINE_string('model', 'graphsage_mean', 'model names.')  # 加载一个字符串,名称为model,默认值为graphsage_mean,这个flag的解释为model names. 
flags.DEFINE_float('learning_rate', 0.01, 'initial learning rate.') # 加载一个浮点数,名称为learning_rate,默认值为0.01,这个flag的解释为initial learning rate. 
flags.DEFINE_integer('epochs', 10, 'number of epochs to train.') # 加载一个整数,名称为epochs,默认值为10,这个flag的解释为number of epochs to train. 

使用

FLAGS = tf.app.flags.FLAGS
if FLAGS.model == 'graphsage_mean':
    # Create model
    sampler = UniformNeighborSampler(adj_info)
     

启动( tf.app.run )

推荐阅读tensorflow学习:tf.app.run()函数

tf.app.run()是tensorflow运行的入口,执行tf.app.run()时,首先加载flags参数项,然后执行用户定义的主函数(一般为main())。
例子:

def main(argv=None):
    print("Loading training data..")
    train_data = load_data(FLAGS.train_prefix)
    print("Done loading training data..")
    train(train_data)

if __name__ == '__main__':
    tf.app.run()

当然,如果你所定义的主函数不是main(),而是叫test()那么也是可以的,那么启动语句需要写成tf.app.run(test())

def test(argv=None):
    print("Loading training data..")
    train_data = load_data(FLAGS.train_prefix)
    print("Done loading training data..")
    train(train_data)

if __name__ == '__main__':
    tf.app.run(test)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

畅聊两小时后谈谈chatGPT体验感受

文章目录背景注册聊天实录基于自然语言的SQL翻译shell解析k8s回答其他类型我的问题为何这么接近人类的回答?回答是离线的吗?背景 最近几周不管是T还是微信公众号,大家都在疯玩这个东西。 我姑且将这个应用叫小C吧。我和小C愉快的聊了几个小…

ComponentOne Studio Enterprise 2022

ComponentOne Studio Enterprise 2022 添加了Microsoft.NET 7支持。 FlexGrid for.NET MAUI预览版-您现在可以使用以前使用的相同.NET数据网格,只是它是为MAUI本机开发的,因此您不必学习多种移动开发平台。 WinForms 2022 v3中的新功能 增强的.NET 6控件…

Android系统属性文件浅析

Android的属性文件是Android系统攻防中重要的一环,属性中的一些只读字段(以ro开头)通常会被当作大厂的指纹而加入检测,于是如何mock和检测mock成了安全中举足轻重的知识。属性的检测有几种方案: 通过java标准接口的Build类读取通过shell的getprop [属性key]的方式读取通过sh…

Python作业题:函数和代码复用

本次练习题涉及到的知识点: Python中函数的定义和使用传入函数的参数个数不固定的使用语法lambda函数的使用语法Python异常处理的相关语法 1.关于函数的描述,错误的选项是(A)。 解析:Python使用保留字def定义一个函…

聚类算法OPTICS的理解及实现

前言 前面给大家介绍到了聚类算法中比较经典的 DBSCAN 算法,对于数据量小而且相对比较密集、密度相似的数据集来说,是比较合适的。那么接下来给大家介绍它的改进版 OPTICS (Ordering points to identify the clustering structure),针对 DBS…

4年外包终上岸,我只能说这类公司以后能不去就不去

我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是4年。现在终于跳槽到了互联网公司了,我想说的是,但凡有点机会,千万…

vue使用axios+element上传文件

引言 springboot后端接口类型:post,其它接口信息如下图 后端接口的实现 代码示例 post 请求头改成’Content-Type’: ‘multipart/form-data’用new FormData() 方式去传对象数据 axios封装请求 import request from /utils/request export function up…

线性表-顺序表

线性表 线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。 前驱元素:若A元素在B元素的前面,则称A为B的前驱元素后继元素:若B元素在A元素的后面,则称B为A的后继元素 线性表…

将gitee上的项目拉取到本地

gitee:中国最大的开源代码共享社区 目录 一、安装git 二、拉取项目 1、首先在gitee上找到自己想要学习的项目 2、在本地新建一个文件夹(用来存放你从gitee上拉下来的项目) 3、输入命令 4、选择下载的分支代码(我这里是mas…

【web课程设计】基于html鲜花商城项目的设计与实现

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

windows下使用免安装(.zip)MariaDB数据库

1. 下载 https://downloads.mariadb.org/ 2. 解压 3. 配置 cmd 进入bin目录 命令行输入:./mysqld.exe --install MariaDB 输出: 至此 安装成功 接下来进行data配置和初始化 4. 初始化 提示:非必要 如果直接执行服务启动命令&#xff1…

TF3-MongoDB基础

TF3-MongoDB基础课程介绍1、通用设置1.1 需求分析1.1.1 需求分析1.1.2 数据库表1.1.3 搭建提供者环境实体类mapper接口api接口api服务实现类1.2 查询通用设置1.2.1 接口文档1.2.2 代码实现vo对象SettingsControllerSettingServiceQuestionApiSettingApi1.2 陌生人问题1.2.1 接口…

STM32单片机软件模拟I2C读取AM2320温湿度传感器数据

STM32单片机使用软件模拟IIC读取AM2320温湿度传感器的数据并显示在0.96寸OLED屏上。 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的。 STM32使用硬件I2C读取SHTC3温湿度传感器:https://blog.zeruns.tech/archives/692.html STM32单片机读取AHT1…

力扣242.有效的字母异位词(Java语言,排序法、散列表法)

题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 解题思路: 思路1:排序法 根据题目意思…

[附源码]Python计算机毕业设计SSM基于微信的基层党建信息系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

容量测试解决了什么问题?

前面几篇性能测试知识科普系列的文章,介绍了性能测试中的核心术语和指标、常用测试策略、压测工具选型、性能需求分析、测试能力分层、新手学习路径以及监控分析工具相关的内容,这些知识可以说是性能测试最基本的能力,也是日常工作中需要经常…

三大宇宙速度

文章目录第一宇宙速度:7.9km/s第二宇宙速度:11.2km/s第三宇宙速度:16.7km/s光年太阳系第一宇宙速度:7.9km/s 1.第一宇宙速度(环地飞行速度):航空器绕地球飞行,成为地球卫星的最低速度。 2.提出者牛顿。基于…

springcloud-05分布式事务

第五章 分布式事务Seata 在微服务系统中,分布式事务是我们必须要面临和解决的问题!!! 1. 分布式事务问题的产生 下图中的例子可以很好的解释分布式事务问题出现的场景: 图中问题的产生就在于更新库存数量是1个单独…

泛型Java

泛型 泛型:标签 集合接口和集合类在jdk5.0之后都修改为带泛型的结构在实例化集合类时,可以指明具体的泛型类型指明完以后,在集合类或者集合接口中凡是定义类或接口时,内部结构使用到泛型的位置,都指定为实例化时的泛…

Java姓名与手机号中间用*号代替 字符串*号替换

/*** 姓名与手机号中间用*号代替*/public static String caseStarSymbol(String nameStr){ // String nameStr "程序源码论坛"; // String mobile "15888888888";String nameStr1 null;char[] r nameStr.toCharArray(); // char[] m mobi…