TensorFlow之张量

1 张量(Tensor)  【类似于numpy中的数组】

TensorFlow 的张量就是一个 n 维数组, 类型为tf.Tensor。Tensor具有以下两个重要的属性

  • type:数据类型
  • shape:形状(阶)

1.1 张量的类型

1.2 张量的阶

形状有0阶、1阶、2阶….

tensor1 = tf.constant(4.0)
tensor2 = tf.constant([1, 2, 3, 4])
linear_squares = tf.constant([[4], [9], [16], [25]], dtype=tf.int32)print(tensor1.shape)
# 0维:()   1维:(10, )   2维:(3, 4)   3维:(3, 4, 5)

1.3 创建张量的指令

  • 固定值张量

示例代码:

import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tfzeros = tf.zeros([3, 5])
print(zeros)
print('#' * 50)zeros_like = tf.zeros_like(zeros)
print(zeros_like)
print('#' * 50)one = tf.ones([3, 4])
print(one)
print('#' * 50)ones_like = tf.ones_like(zeros)
print(ones_like)
print('#' * 50)

  • 随机值张量

  • 其它特殊的创建张量的op

    • tf.Variable
    • tf.placeholder

1.4 张量的变换

1.4.1 类型改变

示例代码:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tfone = tf.ones([3, 4])
print(one)
print('#' * 50)cast_one = tf.cast(one, tf.int32)
print(cast_one)

1.4.2 形状改变

TensorFlow的张量具有两种形状变换,动态形状和静态形状

  • tf.reshape
  • tf.set_shape

关于动态形状和静态形状必须符合以下规则

  • 静态形状

    • 转换静态形状的时候,1-D到1-D,2-D到2-D,不能跨阶数改变形状
    • 对于已经固定的张量的静态形状的张量,不能再次设置静态形状
  • 动态形状
    • tf.reshape()动态创建新张量时,张量的元素个数必须匹配
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()def tensor_demo():"""张量的介绍:return:"""a = tf.constant(value=30.0, dtype=tf.float32, name="a")b = tf.constant([[1, 2], [3, 4]], dtype=tf.int32, name="b")a2 = tf.constant(value=30.0, dtype=tf.float32, name="a2")c = tf.placeholder(dtype=tf.float32, shape=[2, 3, 4], name="c")sum = tf.add(a, a2, name="my_add")print(a, a2, b, c)print(sum)# 获取张量属性print("a的图属性:\n", a.graph)print("b的名字:\n", b.name)print("a2的形状:\n", a2.shape)print("c的数据类型:\n", c.dtype)print("sum的op:\n", sum.op)# 获取静态形状print("b的静态形状:\n", b.get_shape())# 定义占位符a_p = tf.placeholder(dtype=tf.float32, shape=[None, None])b_p = tf.placeholder(dtype=tf.float32, shape=[None, 10])c_p = tf.placeholder(dtype=tf.float32, shape=[3, 2])# 获取静态形状print("a_p的静态形状为:\n", a_p.get_shape())print("b_p的静态形状为:\n", b_p.get_shape())print("c_p的静态形状为:\n", c_p.get_shape())# 形状更新# a_p.set_shape([2, 3])# 静态形状已经固定部分就不能修改了# b_p.set_shape([10, 3])# c_p.set_shape([2, 3])# 静态形状已经固定的部分包括它的阶数,如果阶数固定了,就不能跨阶更新形状# 如果想要跨阶改变形状,就要用动态形状# a_p.set_shape([1, 2, 3])# 获取静态形状print("a_p的静态形状为:\n", a_p.get_shape())print("b_p的静态形状为:\n", b_p.get_shape())print("c_p的静态形状为:\n", c_p.get_shape())# 动态形状# c_p_r = tf.reshape(c_p, [1, 2, 3])c_p_r = tf.reshape(c_p, [2, 3])# 动态形状,改变的时候,不能改变元素的总个数# c_p_r2 = tf.reshape(c_p, [3, 1])print("动态形状的结果:\n", c_p_r)# print("动态形状的结果2:\n", c_p_r2)return Noneif __name__ == '__main__':tensor_demo()

运行结果:

Tensor("a:0", shape=(), dtype=float32) Tensor("a2:0", shape=(), dtype=float32) Tensor("b:0", shape=(2, 2), dtype=int32) Tensor("c:0", shape=(2, 3, 4), dtype=float32)
Tensor("my_add:0", shape=(), dtype=float32)
a的图属性:<tensorflow.python.framework.ops.Graph object at 0x000001B2B7697608>
b的名字:b:0
a2的形状:()
c的数据类型:<dtype: 'float32'>
sum的op:name: "my_add"
op: "Add"
input: "a"
input: "a2"
attr {key: "T"value {type: DT_FLOAT}
}b的静态形状:(2, 2)
a_p的静态形状为:(?, ?)
b_p的静态形状为:(?, 10)
c_p的静态形状为:(3, 2)
a_p的静态形状为:(?, ?)
b_p的静态形状为:(?, 10)
c_p的静态形状为:(3, 2)
动态形状的结果:Tensor("Reshape:0", shape=(2, 3), dtype=float32)

1.5 张量的数学运算

  • 算术运算符
  • 基本数学函数
  • 矩阵运算
  • reduce操作
  • 序列索引操作

详细请参考: https://www.tensorflow.org/versions/r1.8/api_guides/python/math_ops

这些API使用,具体参考文档

TensorFlow之张量相关推荐

  1. tensorflow 转张量类型为float_TensorFlow快速入门

    TensorFlow是一个数值计算库,其中数据(Tensor,张量)在计算图中流动.数据在TensorFlow用被称为张量的n维数据表示.计算图由数据和数学操作符构成. 计算图中的节点代表数学操作符 ...

  2. tensorflow 转张量类型为float_5个简单的步骤掌握Tensorflow的Tensor

    在这篇文章中,我们将深入研究Tensorflow Tensor的细节.我们将在以下五个简单步骤中介绍与Tensorflow的Tensor中相关的所有主题: 第一步:张量的定义→什么是张量? 第二步:创 ...

  3. TensorFlow之张量声明

    TensorFlow之张量声明 TensorFlow的主要数据结构是张量,它用张量来操作计算图.在TensorFlow里可以把变量或者占位符声明为张量.首先,需要知道如何创建张量. 1.开始 创建一个 ...

  4. 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...

  5. tensorflow中张量、常量、变量、占位符

    引言 从实例出发 #先导入TensorFlow import tensorflow as tf# Create TensorFlow object called hello_constant hell ...

  6. 快速掌握TensorFlow中张量运算的广播机制

    相信大家在使用numpy和tensorflow的时候都会遇到如下的错误 ValueError: operands could not be broadcast together with shapes ...

  7. Tensorflow修改张量特定位置元素的值

    张量和array一样可以通过切片获取,但是张量不可以直接修改某个值. 可以理解为张量具有"只读"的模式. 如果按照数组修改某个值的方式处理的话,会报错: import tensor ...

  8. 【tensorflow】张量tensor--数据容器(把它想象成一个数字的水桶)

    0维张量/标量 标量是一个数字 1维张量/向量 1维张量称为"向量" 2维张量 2维张量称为矩阵 3维张量 公用数据存储在张量 时间序列数据 股价 文本数据 彩色图片(RGB) 让 ...

  9. tensorflow 转张量类型为float_TensorFlow是什么?怎么用?终于有人讲明白了

    作者:翁贝托·米凯卢奇(Umberto Michelucci)来源:大数据DT(ID:bigdatadt) 导读:在开始使用TensorFlow之前,必须了解它背后的理念.该库很大程度上基于计算图的概 ...

最新文章

  1. idea下,Jetty采用main方法启动web项目
  2. 联想服务器DL388eu盘装系统,服务器价格指导 10月双路机架产品导购
  3. 移动社交如何玩?网易云信携手崽崽和Uki打造更多新场景!
  4. ES6新特性之let和const命令
  5. Win32多线程编程(2) — 线程控制
  6. Android官方开发文档Training系列课程中文版:后台服务之响应IntentService的处理结果
  7. java开发一年多少钱_Java
  8. 用c语言设计程序设计查表温度传感器,基于18B20温度传感器+1602液晶显示器的C语言程序设计开发...
  9. 【MySQL】MySQL warnings 的使用
  10. C#使用CurrentUICulture切换语言
  11. java生成自定义标志、大小的二维码
  12. oracle把字段选为候选键,Oracle数据库试题及答案
  13. 计算机一级中替换,08年计算机一级辅导:实战WPS转义符在查找替换中的应用
  14. 如何爬取中国近十年的GDP,并写入csv文件?
  15. 京东全球购与花王达成区块链溯源合作
  16. 一文梳理2021年常见消息中间件MQ与RabbitMQ面试题
  17. JAVA ik es_Elasticsearch入门和查询语法分析(ik中文分词)
  18. html基础、h5c3高级c3动画 、 JavaScript初高级、css预处理器和git 部分面试题
  19. redis:Unable to connect to localhost:6379
  20. 申请阿里云服务器并配置SSL证书(附带微信公众号配置服务器)

热门文章

  1. 21个必须知道的机器学习开源工具!
  2. 如何为回归问题选择最合适的机器学习方法?
  3. 翻译机之后,搜狗再推智能硬件产品录音笔
  4. 2亿简历遭泄漏,到底谁的锅?
  5. 上映 10 天,票房就突破 10 亿的《海王》真的有那么好看?
  6. 融资 6 亿美元后,商汤发布 5 大 AI 产品
  7. 重磅 | 机器学习大神Bengio最新论文发布,专注RNN优化难题,将在NIPS提出新概念fraternal dropout
  8. 专访 | 融资4.1亿美元,估值15亿美元,这家AI初创公司凭什么“这么贵”?
  9. 让SpringBoot不再需要Controller、Service、Mapper,这款开源工具绝了!!!
  10. 深度对比Jackson和Fastjson,最终我还是选择了...