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. 小小知识点(三十八)MPSK和MQAM调制的实现——利用IQ调制

    IQ调制的原理 (一)调制基本原理 (二)调制基本原理 利用IQ调制实现MPSK(QPSK 8PSK BPSK)和MQAM(16QAM 64QAM)调制     (一)利用IQ调制实现QPSK调制   ...

  2. Intellij Idea插件使用记录之Alibaba Java Coding Guidelines

    目录 Intellij Idea插件Alibaba Java Coding Guidelines 前言 使用 感谢 Intellij Idea插件Alibaba Java Coding Guideli ...

  3. linux入门系列4--vi/vim编辑器

    上一篇文章"linux入门系列3--linux远程登陆工具"讲解了如何使用常用的工具远程连接和管理linux服务器,要管理服务器必然会涉及到脚本文件的创建.编辑工作,因此在介绍命令 ...

  4. OpenLayers4 隐藏(hide)Feature

    需求: 需要将同一图层的要素进行分类显示和隐藏(类似于图层控制) 方法: 使用setStyle方法将Feature的样式设置为null. 环境: win10.google chrome.OL 4.3 ...

  5. mongodb学习(一)——简介和基本操作

    简介 MongoDB 是一个基于分布式文件存储的数据库 属于NoSQL数据库,是介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的 旨在为WEB应用提供可扩展的高性 ...

  6. python实现浏览器打开指定url

    关键 webbrowser+time+os     import os,timeimport webbrowser url = 'http://www.baidu.com' webbrowser.op ...

  7. IDEA不编译空文件夹

    今天做项目的时候发现idea编译工程不会编译空文件夹,在resources下新建了个存储文件的空文件夹,编译后target里竟然没有,一直报空指针. 随便丢一个文件进去就行了,放一个demo.txt的 ...

  8. Pandas中merge和join的区别

    可以说merge包含了join的操作,merge支持通过列或索引连表,而join只支持通过索引连表,只是简化了merge的索引连表的参数 示例 定义一个left的DataFrame left=pd.D ...

  9. arch_遇到的问题

    archlinux安装 wiki安装 可以参考这个来安装 $如果你跟我一样是用校园网安装的$ 记得使用pppoe-setup 来联网 arclinux 图形界面安装 参考 kde图形安装 需要创建一个 ...

  10. IntelliJ IDEA编辑文件的时候CPU飙高问题的解决

    原文地址:https://www.javatang.com/archives/2018/04/26/25582403.html 上篇文章中说明了解决IntelliJ IDEA中文输入法无提示的问题,最 ...