[TensorFlow] 笔记0

【TF简介】

 
TensorFlow
Tensor 张量 表明了它的数据结构
张量简单理解为多维数组,
零阶张量是标量,一阶张量是矢量,二阶张量是矩阵,三阶张量是立体矩阵

Flow 流 体现了它的计算模型
 

编程模型

数据流图

TensorFlow 的数据流图是由节点(node)和边(edge)组成的有向无环图(directed acycline graph,DAG)。
Tensor代表了数据流图中的边,而Flow这个动作就代表了数据流图中节点所做的操作。
在这里插入图片描述

#overview
flow
图中包含输入(input)、塑形(reshape)、Relu 层(Relulayer)、Logit 层(Logit layer)、Softmax、交叉熵(cross entropy)、梯度(gradient)、SGD 训练(SGD Trainer)等部分,是一个简单的回归模型。

#process
在这里插入图片描述
在这里插入图片描述
 
 
#概念

节点

设备

内核

 
 
 
 
 

【基础】

 

4个重要类型:

Variable
计算图谱中的变量

在使用前应该初始化,tf.global_variables_initializer().run(xxx)
若是在Session中运行,则tf.global_variables_initializer().run(Session=定义的Session名)
v1 = tf.Variable(15)
sess = tf.Session()
tf.global_variables_initializer().run(Session = sess)
sess.close()

Graph - 计算模型
一个计算图谱
在tensorflow程序中,会默认存在一个计算图,当然可以通过graphplus=tf.Graph()生成额外的计算图
如果没有特殊指定,运算会自动加入这个默认生成的计算图中。

获得当前默认计算图tf.get_default_graph()
举个例子
print(tf.get_default_graph())
输出
<tensorflow.python.framework.ops.Graph object at 0x000001D325C42F98>

在这里插入图片描述
在这里插入图片描述

Tensor - 数据模型
一个多维矩阵,带有很多方法

张量在TensorFlow 中的实现并不是直接采用数组的形式,它只是对TensorFlow 中运算结果的引用。在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。

向量加法运算

主要存在三个属性:名字( name )、维度( shape )和类型( type )。

1.名字
(作为该张量的唯一标识符,也表明该张量是如何计算出来的)
张量名字
2.维度
(维度信息)

3.类型
TensorFlow 支持14 种不同的类型,主要包括了实数( tf.float32 、tf.float64 )、整数( tf.int8 、tf.int16 、tf.int32 、tf.int64 、tf.uint8 )、布尔型( tf.bool ) 和复数( tf.complex64 、tf.complex128 ) 。
在这里插入图片描述

如果不指定类型, TensorFlow 会给出默认的类型,比如不带小数点的数会被默认为int32 ,带小数点的会默认为float32。

Session - 运行模型
用来运行计算图谱
TensorFlow 不会自动生成默认的会话,而是需要手动指定。
不过,
在这里插入图片描述

会话拥有并管理TensorFlow 程序运行时的所有资源。所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄漏的问题。(所以要关闭会话函数)

1.调用close函数以关闭会话并释放资源
sess = tf.Session()
sess.run(...)
sess.close()

2.通过Python的上下文管理器以使用会话
with tf.Session() as sess:
   sess.run()

当默认的会话被指定之后可以通过⬇来计算一个张量的取值。
tf.Tensor.eval()
#tf.Tensor是指任意一个张量

 
 
 
 

3个重要的函数

 
constant 常量
constant是TensorFlow的常量节点,通过constant方法创建,其是计算图(Computational Graph)中的起始节点,是传入数据。

#创建
cons = tf.constant(value=[1,2],dtype=tf.float32,shape=(1,2),name=‘testconst’, verify_shape=False)

#原始模型
tf.constant(
  value,
  dtype=None,
  shape=None,
  name='Const',
  verify_shape=False
)
 

#说明

value:初始值,必填,必须是一个张量(1或[1,2,3]或[[1,2,3],[2,2,3]]或…)

dtype:数据类型,选填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64…)

shape:数据形状,选填,默认为value的shape,设置时不得比value小,可以比value阶数、维度更高,超过部分按value 提供最后一个数字填充
示例代码如下

import tensorflow as tf
sess = tf.InteractiveSession()
cons1 = tf.constant([1, 2, 3], shape=[2, 3])
print(sess.run(cons1))
#[[1 2 3]
# [3 3 3]]

name:常量名,选填,默认值不重复,根据创建顺序为(Const,Const_1,Const_2…)

verify_shape:是否验证value的shape和指定shape相符,若设为True则进行验证,不相符时会抛出异常

https://blog.csdn.net/csdn_jiayu/article/details/82155224

https://www.cnblogs.com/Vulpers/p/7809276.html

 
 

Variable 变量

#原始模型
W = tf.Variable(
   initial_value=tf.zeros([9, 5]), # 初始值,必填,张量或可以转换为张量的Python对象。初始值必须有指定一个形状,除非validate_shape设置为False。这里的意思是9x5的矩阵,初始值为0。

   trainable=True, # 如果True,则默认值也将变量添加到图形中集合GraphKeys.TRAINABLE_VARIABLES。这个集合用作Optimizer类使用的默认变量列表

   collections=None, # 图表集合键的列表。新的变量被添加到这些集合。默认为[GraphKeys.GLOBAL_VARIABLES]。

   validate_shape=True, # 如果False,允许变量用初始化未知形状的值。如果True,默认的形状initial_value必须是已知的。

   caching_device=None, # 可选设备字符串,描述变量的位置应该被缓存以供阅读。默认为变量的设备。如果不是None,则缓存在另一个设备上。典型的用途是缓存在使用变量的Ops所在的设备上进行重复数据删除复制Switch和其他条件语句。

   name='W', # 变量的可选名称。默认为Variable并获取自动去重(Variable_1,Variable_2…)。

   variable_def=None, # VariableDef协议缓冲区。如果不是“无”,则重新创建变量对象及其内容,引用变量的节点在图中,必须已经存在。图形没有改变。variable_def和其他参数是互斥的。

   dtype=tf.float32, # 如果设置,initial_value将被转换为给定的类型。如果None,数据类型将被保存(如果initial_value是一个张量),或者“convert_to_tensor”来决定。

   expected_shape=None, # 张量的Shape。如果设置,initial_value需要符合这个形状。

   import_scope=None
) # 可选的字符串。名称范围添加到Variable.仅在从协议缓冲区初始化时使用。

 
 

#一般情况下的创建
一般用到:initial_value,dtype,name,
W = tf.Variable(tf.zeros([3, 10]), dtype=tf.float64, name='W')

 
 

placeholder 暂时变量

#创建
X = tf.placeholder(dtype=tf.float32, shape=[144, 10], name=‘X’)

#说明
dtype:数据类型,必填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64…)

shape:数据形状,选填,不填则随传入数据的形状自行变动,可以在多次调用中传入不同形状的数据

name:常量名,选填,默认值不重复,根据创建顺序为(Placeholder,Placeholder_1,Placeholder_2…)

 
 

《TensorFlow:实战Google 深度学习框架(第二版)》

https://www.youtube.com/watch?v=cx3vio3so8A&list=PLwY2GJhAPWRcZxxVFpNhhfivuW0kX15yG&index=3

《TensorFlow技术解析与实战_李嘉璇》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值