AI - TensorFlow Tensor

张量(Tensor)

在Tensorflow中,变量统一称作张量(Tensor)。

张量(Tensor)是任意维度的数组。

  • 0阶张量:纯量或标量 (scalar), 也就是一个数值,例如,\‘Howdy\‘ 或 5
  • 1阶张量:向量 (vector)或矢量,也就是一维数组(一组有序排列的数),例如,[2, 3, 5, 7, 11] 或 [5]
  • 2阶张量:矩阵 (matrix),也就是二维数组(有序排列的向量),例如,[[3.1, 8.2, 5.9][4.3, -2.7, 6.5]]
  • 3阶张量:三维的矩阵,也就是把矩阵有序地叠加起来,成为一个“立方体”
  • 以此类推,等等。

在大多数情况下,只会使用一个或多个低维张量(2阶及以下)。

典型 TensorFlow 程序中的大多数代码行都是指令,张量也是计算图中的一种指令。
张量可以作为常量或变量存储在图中。

  • 常量是始终会返回同一张量值的指令,存储的是值不会发生更改的张量。
  • 变量是会返回分配给它的任何张量的指令,存储的是值会发生更改的张量。

示例:张量的定义

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4
 5 os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
 6
 7 x = tf.constant([5.6], name="x_const")  # tf.constant定义标量整数常量并传入值
 8 y = tf.Variable([0], name="y_Variable")  # tf.Variable定义变量并传入默认值
 9 y = y.assign([3])  # 分配一个值
10
11 with tf.Session() as sess:  # 图必须在会话中运行,会话存储了它所运行的图的状态
12     initialization = tf.global_variables_initializer()  # 使用tf.Variable时,必须在会话开始时明确初始化变量
13     print("x: {}".format(sess.run(x)))
14     print("y: {}".format(sess.run(y)))

示例:常量相加

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4
 5 os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
 6
 7 g = tf.Graph()  # 创建图,虽然TensorFlow提供一个默认图,仍建议创建自己的Graph,以便跟踪状态
 8
 9 with g.as_default():  # 将定义的图作为默认
10     x = tf.constant(8, name="x_const")  # tf.constant定义标量整数常量并传入值
11     y = tf.constant(5, name="y_const")
12     z = tf.constant(4, name="z_const")
13     sum1 = tf.add(x, y, name="x_y_sum")  # tf.add相加
14     sum2 = tf.add(z, sum1, name="x_y_z_sum")
15     with tf.Session() as sess:  # 图必须在会话中运行
16         print("sum1: {}".format(sum1.eval()))
17         print("sum2: {}".format(sum2.eval()))

示例:矢量加法、张量形状与广播

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4
 5 os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
 6
 7 try:
 8     tf.contrib.eager.enable_eager_execution()
 9     print("TF imported with eager execution!")
10 except ValueError:
11     print("TF already imported with eager execution!")
12
13 # ### 矢量(一维张量)加法
14 primes = tf.constant([2, 3, 5, 7, 11, 13], dtype=tf.int32)  # 包含质数的primes矢量
15 ones = tf.ones([6], dtype=tf.int32)  # 值全为1的ones矢量
16 just_beyond_primes = tf.add(primes, ones)  # 通过对前两个矢量执行元素级加法而创建的矢量
17 twos = tf.constant([2, 2, 2, 2, 2, 2], dtype=tf.int32)
18 primes_doubled = primes * twos  # 通过将primes矢量中的元素翻倍而创建的矢量
19 print("primes: ", primes)
20 print("ones: ", ones)
21 print("just_beyond_primes: ", just_beyond_primes)
22 print("primes_doubled: ", primes_doubled)
23
24 some_matrix = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.int32)
25 print("some_matrix: ", some_matrix)  # 输出张量将返回其值、形状以及存储在张量中的值的类型
26 print("value of some_matrix is:\n", some_matrix.numpy())  # 调用张量的numpy方法会返回该张量的值(以NumPy数组形式)
27
28 # ### 张量形状
29 scalar = tf.zeros([])  # 标量
30 vector = tf.zeros([3])  # 值全为0的矢量
31 matrix = tf.zeros([2, 3])  # 值全为0的2行3列矩阵
32 print(‘scalar has shape:‘, scalar.get_shape(), ‘and value:\n‘, scalar.numpy())
33 print(‘vector has shape:‘, vector.get_shape(), ‘and value:\n‘, vector.numpy())
34 print(‘matrix has shape:‘, matrix.get_shape(), ‘and value:\n‘, matrix.numpy())
35
36 # ### 广播
37 primes2 = tf.constant([2, 3, 5, 7, 11, 13], dtype=tf.int32)
38 ones2 = tf.ones(1, dtype=tf.int32)  # 使用的是标量值(不是全包含1矢量)和广播
39 just_beyond_primes2 = tf.add(primes2, ones2)
40 twos2 = tf.constant(2, dtype=tf.int32)  # 使用的是标量值(不是全包含 2 的矢量)和广播
41 primes_doubled2 = primes2 * twos2
42 print("primes2: ", primes2)
43 print("ones2: ", ones2)
44 print("just_beyond_primes2: ", just_beyond_primes2)
45 print("primes_doubled2: ", primes_doubled2)
46
47 # ### 矢量加法
48 # 可以对张量执行很多典型数学运算:https://www.tensorflow.org/api_docs/python/tf/math;
49 # 输出张量将返回其值、形状以及存储在张量中的值的类型;
50 # 调用张量的numpy方法会返回该张量的值(以NumPy数组形式);
51 #
52 # ### 张量形状(shape)
53 # 形状(shape)用于描述张量维度的大小和数量;
54 # 张量的形状表示为list,其中第i个元素表示维度i的大小;
55 # 列表的长度表示张量的阶(即维数);
56 #
57 # ### 广播
58 # TensorFlow支持广播(一种借鉴自NumPy的概念);
59 # 利用广播,元素级运算中的较小数组会增大到与较大数组具有相同的形状;

原文地址:https://www.cnblogs.com/anliven/p/5985262.html

时间: 2024-08-26 12:45:32

AI - TensorFlow Tensor的相关文章

[TensorFlow]Tensor维度理解

http://wossoneri.github.io/2017/11/15/[Tensorflow]The-dimension-of-Tensor/ Tensor维度理解 Tensor在Tensorflow中是N维矩阵,所以涉及到Tensor的方法,也都是对矩阵的处理.由于是多维,在Tensorflow中Tensor的流动过程就涉及到升维降维,这篇就通过一些接口的使用,来体会Tensor的维度概念.以下是个人体会,有不准确的请指出. tf.reduce_mean reduce_mean( inp

关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化以及相互转化

https://blog.csdn.net/zz2230633069/article/details/82669546 2018年09月12日 22:56:50 一只tobey 阅读数:727 1.numpy类型:numpy.ndarray  对于图片读取之后(H,W,C)或者(batch,H,W,C) (1)在元素总数不变的情况下:numpy类型的可以直接使用方法numpy.reshape任意改变大小,numpy.expand_dims增加维度,大小是1(这个函数可以参考numpy.expan

TensorFlow tensor张量拼接concat & stack

TensorFlow提供两种类型的拼接: tf.concat(values, axis, name='concat'):按照指定的已经存在的轴进行拼接 tf.stack(values, axis=0, name='stack'):按照指定的新建的轴进行拼接 concat t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] tf.concat([t1, t2], 0) ==> [[1, 2, 3], [4, 5, 6], [7, 8

AI - TensorFlow - 示例:影评文本分类

影评文本分类 文本分类(Text classification):https://www.tensorflow.org/tutorials/keras/basic_text_classification主要步骤: 1.加载IMDB数据集 2.探索数据:了解数据格式.将整数转换为字词 3.准备数据 4.构建模型:隐藏单元.损失函数和优化器 5.创建验证集 6.训练模型 7.评估模型 8.可视化:创建准确率和损失随时间变化的图 IMDB数据集 https://www.tensorflow.org/a

AI - TensorFlow - 示例01:基本分类

基本分类 基本分类(Basic classification):https://www.tensorflow.org/tutorials/keras/basic_classification Fashion MNIST数据集 经典 MNIST 数据集(常用作计算机视觉机器学习程序的“Hello, World”入门数据集)的简易替换 包含训练数据60000个,测试数据10000个,每个图片是28x28像素的灰度图像,涵盖10个类别 TensorFlow:https://www.tensorflow

AI - TensorFlow - 示例03:基本回归

基本回归 回归(Regression):https://www.tensorflow.org/tutorials/keras/basic_regression 主要步骤:数据部分 获取数据(Get the data) 清洗数据(Clean the data) 划分训练集和测试集(Split the data into train and test) 检查数据(Inspect the data) 分离标签(Split features from labels) 规范化数据(Normalize th

AI - TensorFlow - 示例05:保存和恢复模型

保存和恢复模型(Save and restore models) 官网示例:https://www.tensorflow.org/tutorials/keras/save_and_restore_models 在训练期间保存检查点 在训练期间或训练结束时自动保存检查点.权重存储在检查点格式的文件集合中,这些文件仅包含经过训练的权重(采用二进制格式).可以使用经过训练的模型,而无需重新训练该模型,或从上次暂停的地方继续训练,以防训练过程中断 检查点回调用法:创建检查点回调,训练模型并将ModelC

TensorFlow 编程基础

• TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算• 借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU.GPU.TPU)和设备(桌面设备.服务器集群.移动设备.边缘设备等)• TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持 TensorFlow 的Hello world: 计算图: TensorFlow = Tensor + Flow Te

【转】机器学习教程 十四-利用tensorflow做手写数字识别

模式识别领域应用机器学习的场景非常多,手写识别就是其中一种,最简单的数字识别是一个多类分类问题,我们借这个多类分类问题来介绍一下google最新开源的tensorflow框架,后面深度学习的内容都会基于tensorflow来介绍和演示 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 什么是tensorflow tensor意思是张量,flow是流. 张量原本是力学里的术语,表示弹性介质中各点应力状态.在数学中,张量表示的是一种广义的"数量",0阶张量