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. MinGW-W64下载与安装

    安装方案 1 下载安装包,MinGW-w64 - for 32 and 64 bit Windows,然后直接以管理员安装即可,但是这个方案在部分电脑可能不行,会提示 cannot download ...

  2. zabbix配置企业微信报警

    +++++++++++++++++++++++++++++++++++++++++ 1. 工作中最长使用的就是微信,普及,开源,而且免费!!! 2. 在企业微信中要记录的值: · 部门id · 企业i ...

  3. 轻量级开源小程序SDK发车啦

    Magicodes.WxMiniProgram.Sdk 轻量级微信小程序SDK,支持.NET Framework以及.NET Core.目前已提供Abp模块的封装,支持开箱即用. Nuget 新的包 ...

  4. ACWing 248. 窗内的星星|扫描线+懒惰标记

    传送门 题目描述 在一个天空中有很多星星(看作平面直角坐标系),已知每颗星星的坐标和亮度(都是整数). 求用宽为W.高为H的矩形窗户(W,H为正整数)能圈住的星星的亮度总和最大是多少.(矩形边界上的星 ...

  5. cc协议(知识共享,Creative Commons),程序员的基础守则之一

    知识共享 我在浏览git开源代码的时候,浏览到一句话: 版权声明:本文为CSDN博主「...」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:http ...

  6. 深入理解协程(二):yield from实现异步协程

    原创不易,转载请联系作者 深入理解协程分为三部分进行讲解: 协程的引入 yield from实现异步协程 async/await实现异步协程 本篇为深入理解协程系列文章的第二篇. yield from ...

  7. TensorFlow——常见张量操作的API函数

    1.张量 张量可以说是TensorFlow的标志,因为整个框架的名称TensorFlow就是张量流的意思,全面的认识一下张量.在TensorFlow程序使用tensor数据结构来代表所有的数据,在计算 ...

  8. Java 基础(二)| 使用 lambad 表达式的正确姿势

    前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 ...

  9. cogs 173. 词链 字典树模板

    173. 词链 ★★☆   输入文件:link.in   输出文件:link.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]给定一个仅包含小写字母的英文单词表,其中每个 ...

  10. eclipse git导入的项目 让修改后的文件带有黑色星标记样式

    操作方式:Window——>Preferences——>Team——>Git——>Label Decorations——>Icon Decorations 将 Dirty ...