目录

    • 在TensorFlow中,所有的数据通过张量的形式来表示
    • 1张量及属性:
    • 1.1维数(阶)
    • 1.2 形状
    • 1.3数据类型
    • TensorFlow 支持以下三种类型的张量:
    • **1.常量**
    • **2.变量**
    • **3.占位符**:
    • 张量定义方法举例
    • **张量阶次及对应形状(shape)**
    • 操作实例1:输出1-10
    • 操作实例2:计算1-100累计和
  • 传送门:

在TensorFlow中,所有的数据通过张量的形式来表示

1张量及属性:

可理解为一个 n 维数组,所有类型的数据,包括标量、矢量和矩阵等都是特殊类型的张量,张量并没有真正保存数字,它保存的是计算过程

张量(tensor)的属性——维数(阶)、形状和数据类型

Tensor("name", shape=(), dtype=int32)

1.1维数(阶)

张量的维数来被描述为阶,是张量维数的一个数量描述。

阶数 数学实例
0阶 标量
1阶 1 维数组(向量)
2阶 2维数组(矩阵,数据表)
3阶 3维数组(数据立体)

1.2 形状

三个术语描述张量的维度:阶(rank)、形状(shape)、维数(dimension number)
n(n>0)阶张量构成元素是n-1阶张量

形状 维数 例子
0 () 0-D 4
1 (D0) 1-D [1,2]
2 (D0,D1) 2-D [[1,2],[2,3]]
3 (D0,D1,D2) 3-D [[[1,2],[3,4]],[[1,2],[3,4]]]
n (D0,D1,…Dn-1) n-D

1.3数据类型

TensorFlow支持14种不同类型

实数:tf.float32, tf.float64
整数:tf.int8, tf.int16, tf.int32, tf.int64, tf.uint8
布尔:tf.bool
复数:tf.complex64, tf.complet128

不带小数点的数会被默认为int32
带小数点的数会被默认为float32

TensorFlow 支持以下三种类型的张量:

1.常量

常量是其值不能改变的张量。。

a=tf.constant([[1],[2]],name='a')#常量

2.变量

当一个量在会话中的值需要更新时,使用变量来表示。变量在使用前需要被显示初始化。例如,在神经网络中,权重需要在训练期间更新,可以通过将权重声明为变量来实现。
与传统编程语言不同,TensorFlow中的变量定义后,一般无需人工赋值,系统会根据算法模型,训练优化过程中自动调整变量对应的数值。在机器学习模型训练时更能体会,比如权重Weight变量w,经过多次迭代,会自动调整其值。

在TensorFlow中必须进行初始化操作

创建语句:
name_varible = tf.Variable(value, name)
注意:V是大写的

个别变量初始化:init_op = name_variable.initializer()
所有变量初始化:init_op = tf.global_variables_initializer()

def tensor_test():a=tf.Variable([1,2,3],name='a')b=tf.Variable([4,5,6],name='b')s=tf.add(a,b,name='SUM')with tf.Session() as sess:#所有变量初始化init = tf.global_variables_initializer()sess.run(init)# 初始化完成# 单个变量初始化# sess.run(a.initializer)# sess.run(b.initializer)print(sess.run(s))

只有init = tf.global_variables_initializer()一句并未实现变量初始化,它只是定义了一个静态的操作节点,必须利用会话的run()函数去执行这个操作,才能真正实现变量的初始化操作

amount = tf.Variable(0, name='amount', trainable=False)

如果希望自己定义的变量不参加训练,那么需要在定义变量时将参数trainable设置为False。

update_op = tf.assign(variable, new_value)

特殊情况下需要人工更新的,可用变量赋值语句:

3.占位符

TensorFlow中的Variable变量类型,在定义时需要初始化,但有些变量定义时并不知道其数值,只有当真正开始运行程序时,才由外部输入。
需要注意的是,占位符不包含任何数据,因此不需要初始化它们。
在会话中,占位符可以使用 feed_dict 馈送数据。feed_dict是一个字典,在字典中需要给出每一个用到的占位符的取值。
例如在训练神经网络时需要每次提供一个批量的训练样本,如果每次迭代选取的数据要通过常量表示,那么TensorFlow 的计算图会非常大。因为每增加一个常量,TensorFlow 都会在计算图中增加一个结点。所以说拥有几百万次迭代的神经网络会拥有极其庞大的计算图,而占位符却可以解决这一点,它只会拥有占位符这一个结点。
如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量必须通过feed_dict参数传递进去,否则会报错。

使用 tf.placeholder() 创建占位符 ,在 session.run() 过程中再投递数据

占位符定义格式

tf.placeholder(dtype,shape=None,name=None)

注意:使用feed_dict设置tensor的时候,需要你给出的值类型与占位符定义的类型相同

举例

def PlaceHolder_test():a=tf.placeholder(tf.int32,shape=(3,),name='a')b=tf.placeholder('int32',shape=(3,),name='b')add_op=tf.add(a,b,name='ADD')mul_op=tf.multiply(a,b,name='MUL')sub_op=tf.subtract(a,b,name='sub')with tf.Session() as sess:print(sess.run([add_op,mul_op,sub_op],feed_dict={a:[3,2,4],b:[1,2,3]}))with tf.summary.FileWriter('./log',sess.graph) as writer:writer.flush()

运行结果:[array([4, 4, 7]), array([ 3, 4, 12]), array([2, 0, 1])]

张量定义方法举例

张量阶次及对应形状(shape)

操作实例1:输出1-10

def variable_test():#变量赋值输出1-10 value=tf.Variable(0,name='value')one=tf.constant(1,name='one')new_value=tf.add(value,one,name='new_value')update_op=tf.assign(value,new_value)init = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for _ in range(10):#for _ in range(n) 一般仅仅用于循环n次,# 不用设置变量,用 _ 指代临时变量,只在这个语句中使用一次sess.run(update_op)print(value.eval(),end=' ')with tf.summary.FileWriter('./log',sess.graph) as writer:writer.flush()

运行结果:1 2 3 4 5 6 7 8 9 10

操作实例2:计算1-100累计和

def Iteration_test():#1-100的累加和value=tf.Variable(0,name='value')# one=tf.constant(1,name='one')# new_value=tf.add(value,one)# update_op=tf.assign(value,new_value,name='update_op')update_op=tf.assign(value,tf.add(value,1),name='update_op')Sum=tf.Variable(0,name='sum')SUM_OP=tf.assign(Sum,tf.add(Sum,value))init = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for _ in range(100):sess.run(update_op)sess.run(SUM_OP)print(Sum.eval())with tf.summary.FileWriter('./log',sess.graph) as writer:writer.flush()

上述程序计算流程分为两部分:
第一部分:迭代求取新值
第二部分:在迭代过程进行累加和 (sum=sum+new_value)

运行结果:5050

传送门:

TensorFlow学习笔记01:TensorFlow入门
TensorFlow教程:TensorFlow快速入门教程(非常详细)

TensorFlow学习笔记--第三节张量(tensor)及其定义方法相关推荐

  1. TensorFlow学习笔记(一)---graph,op,tensor,Session,Variables,Tensorboard

    1.   机器学习                         深度学习 算法 分类:神经网络(简单)          神经网络(深度)     回归                       ...

  2. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  3. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  4. tensorflow学习笔记1

    tensorflow学习笔记1 本文主要记录我在慕课上观看北大曹建老师的<人工智能实践:Tensorflow笔记>,链接:https://www.icourse163.org/course ...

  5. tensorflow学习笔记(八):LSTM手写体(MNIST)识别

    文章目录 一.LSTM简介 二.主要函数 三.LSTM手写体(MNIST)识别 1.MNIST数据集简介 2.网络描述 3.项目实战 一.LSTM简介 LSTM是一种特殊的RNN,很好的解决了RNN中 ...

  6. tensorflow学习笔记(七):CNN手写体(MNIST)识别

    文章目录 一.CNN简介 二.主要函数 三.CNN的手写体识别 1.MNIST数据集简介 2.网络描述 3.项目实战 一.CNN简介 一般的卷积神经网络由以下几个层组成:卷积层,池化层,非线性激活函数 ...

  7. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  8. 炼数成金Tensorflow学习笔记之2.4_Tensorflow简单示例

    炼数成金Tensorflow学习笔记之2.4_Tensorflow简单示例 代码及分析 代码及分析 # -*- coding: utf-8 -*- """ Created ...

  9. TensorFlow学习笔记02:使用tf.data读取和保存数据文件

    TensorFlow学习笔记02:使用tf.data读取和保存数据文件 使用`tf.data`读取和写入数据文件 读取和写入csv文件 写入csv文件 读取csv文件 读取和保存TFRecord文件 ...

最新文章

  1. AI都会写灵魂Rap了?Transformer跨界说唱,节奏、流畅度都不在话下
  2. SQL Server 2014聚集列存储索引
  3. linux下oracle数据库由于参数文件丢失导致的数据库服务启动失败,报“failure in processing system parameters“错误问题解决
  4. Python基础教程:return函数的用法
  5. 三星手机Android9和10的区别,三星Galaxy S10+ VS 小米9 拍照深度对比评测:神仙打架...
  6. Python学习笔记(二) 第一个Python程序 、 Python基础
  7. java 常量区存放 new_java---堆、栈、常量池的存储数据
  8. 简易 Vue 构建--篇二
  9. java byte(字节_Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutpu......
  10. mipi 屏 通过寄存器调背光
  11. 非NLB网段的客户端无法访问NLB
  12. 181218每日一句
  13. 业务流程图的绘制流程分享(一)
  14. 安装office2007时发生错误1706
  15. HDFS dfsclient读文件过程 源码分析
  16. Room的基本使用(一)
  17. mac数字键盘错乱_苹果电脑键盘打不出数字解决办法
  18. 观点 | 电动汽车变革进行时,芯片IP供应商扮演着怎样的角色?
  19. 2016年,对我影响最大的三本书
  20. 重聚京都 找不到服务器,阴阳师重聚京都活动怎样玩 重聚京都活动玩法攻略

热门文章

  1. [转]博士的学习经验!读后,令人茅塞顿开的科研经典之作
  2. 输入字符数字串输出保存数字串
  3. 圆检测——最小二乘法拟合圆的推导
  4. 问题六十:怎么用ray tracing画回旋体(rotational sweeping / revolution)
  5. async spring 默认线程池_Spring定时任务高级使用篇
  6. Kafka常见面试问题
  7. 大数据安全问题的类型有哪些
  8. 美赛整理之Matlab的工程数学计算学习笔记(高等数学)
  9. VUE-CLI可选的配置文件vue.config.js
  10. aref无效 lisp_Common Lisp专题4:数组