Tensorflow笔记
创始人
2024-03-27 23:12:35

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 modelsampler = 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)

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...