tensor的含义是张量,张量是什么,听起来很高深的样子,其实我们对于张量一点都不陌生,因为像标量,向量,矩阵这些都可以被认为是特殊的张量。如下图所示:



在TensorFlow中,tensor实际上就是各种“数”的统称。而flow是流动的意思。所以TensorFlow的意思就是“数”的流动,可以说TensorFlow这个名字很形象。一般来说,编程模式有两种,一种是命令式的,一种是符号式的。命令式便于理解和调试,而符号式便于对复杂代码进行封装和抽象(就想我们把一些操作封装成函数,每次调用根据不同的输入值来得到返回值)。TensorFlow是一个符号主义的库,在TensorFlow内部,需要先定义各种变量,然后建立一个计算图(计算流图),计算图指定了各个变量之间的计算关系。计算图就像工厂里的流水线,流水线决定了每一道工序是如何对原料进行加工的。TensorFlow中的原料就是计算图输入的数据,只有输入了数据,形成了数据流(tensor开始flow了),才能形成输出。

张量

import tensorflow as tf

"""
TensorFlow中的张量有三个属性:name,shape,dtype
1.name第一个属性是张量的一个标识符name=’参数为字符串类型’,如果没有指定,会根据张量是通过什么操作(运算)自动添加,后面的0表示张量d是计算节点add的第一个输出.
2.shape,描述张量的维度信息
3.dtype,张量的类型,如果在创建节点时没有指定dtype,没有小数点默认tf.int32,有小数点默认tf.float32.tensorflow会对参与计算张量的类型进行检查,不匹配会报错
"""
#张量的属性
result = tf.add(1,2)
print(result) # Tensor("Add:0", shape=(), dtype=int32) result2 = tf.add(2,3,name='result2')
print(result2) # Tensor("result2:0", shape=(), dtype=int32) result3 = tf.add(3,4,name='result2')
print(result3) # Tensor("result2_1:0", shape=(), dtype=int32) # 创建图
a = tf.constant(1, name='input_a')
b = tf.constant(2, name='input_b',dtype=tf.int8)
f = tf.add(a,b, name='add_ab') #每一个节点(上面的a,b,f)都是一个Op(Operation),每个Op可以接受或输出多个或0个tensor对象,如tf.constant()创建一个常量Op, #TensorFlow可接收Python数值、布尔值、字符串、数组。单个数值转化为0阶张量(标量)。数值列表转化为1阶张量(向量)。由列表构成的列表转化为2阶张量(矩阵)。
#TensorFlow数据类型基于NumPy。任何NumPy数组都可以传递给TensorFlow Op。使用时指定所需数据类型比不指定的代价小。
#TensorFlow返回的张量都是NumPy数组

图和会话


"""
计算图(graph):只定义计算过程和数据(tensor)的操作方式,计算图中并不保存任何数据。
会话(session):会话分配计算资源(一台或者多台的机器)去执行计算图或计算图中的一部分运算操作。当前的变量和结果保存在会话中。
""" #定义一个会话
graph = tf.Graph()
with graph.as_default():
var = tf.Variable(initial_value=1,name='var1')
initialize = tf.global_variables_initializer()
assign = var.assign(value=33)
#如果创建Op前,没有显式的创建计算图,TensorFlow将会在接下来的会话中使用使用默认的计算图 #在会话中运行计算图中定义的计算过程
"""
在TensorFlow中计算图的任何操作都需要在为计算图创建的会话中来运行。会话(session)会给相关的变量分配内存
"""
with tf.Session(graph=graph) as sess:
sess.run(initialize)
sess.run(assign)
print(sess.run(var))
# Output: 13 #变量只在一个session中有效,比如下面的代码会提示变量没有初始化。
with tf.Session(graph=graph) as sess2:
print(sess2.run(var))
# Error: Attempting to use uninitialized value var1 #当然,也可以在多个会话session中使用同一个计算图,但是每个会话中的变量是独立的,就像在多个车间中使用同样规格的生产线。 # 变量的保存和恢复
import tensorflow as tf
import numpy as np
#保存的目录
save_file = './ckpt/mymodel' #创建用来处理保存操作的类
graph = tf.Graph()
with graph.as_default():
x = tf.placeholder(dtype=tf.float32,shape=[None,2])
y = tf.placeholder(dtype=tf.float32,shape=[None,2])
w = tf.Variable(initial_value=np.random.rand(1,2),dtype=tf.float32)
b = tf.Variable(initial_value=[1.0,1.0],dtype=tf.float32)
y_pred = x * w + b
loss=tf.reduce_mean(tf.square(y_pred-y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train = optimizer.minimize(loss) saver = tf.train.Saver()
initialize = tf.global_variables_initializer()
x_data = np.random.rand(1000,2)
with tf.Session(graph = graph)as sess:
sess.run(initialize)
_, tmp_loss = sess.run([train, loss], feed_dict={x: x_data, y: x_data * [[2, 2]]})
print('loss:',tmp_loss)
for i in range(5000):
_,tmp_loss=sess.run([train,loss],feed_dict={x:x_data,y:x_data*[[2,2]]})
_, tmp_loss = sess.run([train, loss], feed_dict={x: x_data, y: x_data * [[2, 2]]})
print('loss:',tmp_loss)
print('w:',sess.run(w))
saver.save(sess,save_path=save_file) with tf.Session(graph = graph) as sess_restore:
saver.restore(sess_restore,save_file)
print('w:',sess_restore.run(w)) """
注意:tf.train.Saver()需要在你想要保存的变量的定义后在创建,并且要求和这些变量在同一个计算图中,否则将会导致TensorFlow的ValueError: No variables to save 错误。
"""

TensorFlow 中的张量,图,会话的更多相关文章

  1. TensorFlow计算图,张量,会话基础知识

    import tensorflow as tf get_default_graph = "tensorflow_get_default_graph.png" # 当前默认的计算图 ...

  2. AI学习---TensorFlow框架介绍[图+会话+张量+变量OP+API]

    TensorFlow的数据流图 TensorFlow的结构分析: 图 + 会话 TensorFlow = 构图阶段(数据与操作的执行步骤被描绘出一个图) + 执行图阶段(使用回话执行构建好的图中操作) ...

  3. 对Tensorflow中tensor的理解

    Tensor即张量,在tensorflow中所有的数据都通过张量流来传输,在看代码的时候,对张量的概念很不解,很容易和矩阵弄混,今天晚上查了点资料,并深入了解了一下,简单总结一下什么是张量的阶,以及张 ...

  4. Tensorflow中的图(tf.Graph)和会话(tf.Session)详解

    Tensorflow中的图(tf.Graph)和会话(tf.Session) Tensorflow编程系统 Tensorflow工具或者说深度学习本身就是一个连贯紧密的系统.一般的系统是一个自治独立的 ...

  5. Tensorflow学习笔记——张量、图、常量、变量(一)

    1 张量和图 TensorFlow是一种采用数据流图(data flow graphs),用于数值计算的开源软件库.其中 Tensor 代表传递的数据为张量(多维数组),Flow 代表使用计算图进行运 ...

  6. TensorFlow笔记-变量,图,会话

    变量 存储一些临时值的作用或者长久存储.在Tensorflow中当训练模型时,用变量来存储和更新参数.变量包含张量(Tensor)存放于内存的缓存区.建模时它们需要被明确地初始化,模型训练后它们必须被 ...

  7. TensorFlow中的 tensor 张量到底是什么意思?

    详见[Reference]: TensorFlow中的“Tensor”到底是什么? 以下摘录一些要点: 这个图好生动呀!~ 标量和向量都是张量(tensor).

  8. tensorflow中张量_常量_变量_占位符

    1.tensor 在tensorflow中,数据是被封装在tensor对象中的.tensor是张量的意思,即包含从0到任意维度的张量.常数是0维度的张量,向量是1维度的张量,矩阵是二维度的张量,以及还 ...

  9. tensorflow中张量的理解

    自己通过网上查询的有关张量的解释,稍作整理. TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中 ...

随机推荐

  1. 【转】13个JavaScript图表(JS图表)图形绘制插件

    现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容 ...

  2. SQL Server2012高可用之日志传送测试

    (一)日志传送架构 (1.1)相关服务器 主服务器   :用于生产的服务器,上面运行这生产SQL Server数据库: 辅助服务器:用于存放主服务器上数据库的一个“镜像”数据库: 监控服务器:用来监控 ...

  3. Elasticsearch系列---实战零停机重建索引

    前言 我们使用Elasticsearch索引文档时,最理想的情况是文档JSON结构是确定的,数据源源不断地灌进来即可,但实际情况中,没人能够阻拦需求的变更,在项目的某个版本,可能会对原有的文档结构造成 ...

  4. Java 用链表实现栈和队列

    栈 是一种基于后进先出(LIFO)策略的集合类型.当邮件在桌上放成一叠时,就能用栈来表示.新邮件会放在最上面,当你要看邮件时,会一封一封从上到下阅读.栈的顶部称为栈顶,所有操作都在栈顶完成. 前面提到 ...

  5. 美团codem 数列互质 - 莫队

    题目描述 给出一个长度为 nnn 的数列 a1,a2,a3,...,an{ a_1 , a_2 , a_3 , ... , a_n }a​1​​,a​2​​,a​3​​,...,a​n​​,以及 mm ...

  6. 【转】程序员"青春饭"问题之我见

    1. 问题描述问题1: 什么是程序员?在本文中程序员的定义为: 拥有编程技能,在IT.互联网公司打工的IT从业人员.程序员与很多行业最大的不同是该行业的形成时间短:1954年第一台计算机才诞生,而中医 ...

  7. Python中的open()方法总结

    总结Python中的open()方法 message= {'企业即时通信': 'aaa', '企业名称': 'bbb'} with open("..\\r.txt", " ...

  8. Redis Sentinel 高可用机制

    内容目录: Sentinel 如何工作的? 核心配置项 怎么选出新 master 的? Sentinel 有多个,具体谁来执行故障转移? Sentinel 是怎么发现 slave 和其他 sentin ...

  9. [bzoj1041] [洛谷P2508] [HAOI2008] 圆上的整点

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  10. 2017-10-28 noip模拟赛by WISCO 信息组

    第一次做模拟赛,自我感觉良好(大概是这套题比较简单) T1 名称为“数据结构”,这也太坑了点……233 要维护一个数列(初始为零),支持区间加与查询. 查询的是一个区间中有多少数满足min<=( ...